クロス マシンの実行
TAEF では、1 台のコンピューターでTe.exeを実行し、別のコンピューターでテストを実行する機能がサポートされています。 TAEF は、テストを実行するために必要なバイナリを認証、承認、デプロイし、すべての情報を元のコンソールに記録します
前提条件
リモートでテストを実行するには、次の要件が必要です。
- ターゲット コンピューターに Te.Service (x86 または x64) をインストールして実行する必要があります。
ドメイン アカウントを使用した実行
- ドメイン アカウントは、ターゲット コンピューター上のローカルの "Remote TAEF Users" グループの管理者またはメンバーである必要があります。
ドメインアカウント以外での実行
ローカル (非ドメイン アカウント) は、両方のマシンで同じユーザー名とパスワードを持つ必要があります。
そのユーザーは、ターゲット コンピューター上のローカルの "リモート TAEF ユーザー" グループのメンバーである必要があります。
ホスト コンピューターでは、ローカル ユーザーはTe.exe実行することも、ローカル ユーザーの汎用資格情報を資格情報マネージャーに追加することもできます。
cmdkey /generic:<targetmachine> /user:<user_name> /pass:[PLACEHOLDER]
ドメイン参加済みコンピューターで実行している場合、ドメイン参加済みマシンには IPSec 境界の除外が必要です。
リモートでのテストの実行
/runOn:
テストをリモートで実行するには、/runOn:< マシン名> パラメーターを指定して、残りのコマンドと共にTe.exeする必要があります。 前提条件を満たしている場合、残りのユーザー エクスペリエンスは、テストをローカルで実行するときに見つかったエクスペリエンスと同じになります。 すべてのログ出力は、ローカル コンピューターに保存/書き込まれます。
次に例を示します。
te unittests\wex.common.tests.dll /runon:TAEFTest1
- テストに必要なすべてのバイナリをターゲット コンピューター (TAEFTest1) に送信し、wex.common.tests.dll内に存在するすべての TAEF テストをリモートで実行しながら、コンソールにログインし直します。
HRESULT 0x800706BAが原因でリモート コンピューターに接続できない場合に、マシン名のスペルが正しいことを確認した場合は、マシンの IP アドレスまたは /disableTimeouts スイッチを使用してみてください。 DNSの遅延が大きくなり、接続試行がタイムアウトすることもあります。
注: 初めて /runOn: コマンドを指定する場合は、Te.exeのファイアウォール除外ダイアログでブロック解除 をクリックする必要があります。
テストの依存関係
Te.exeは、テストのすべてのネイティブおよびマネージド モジュールの依存関係を自動的に決定し、テスト dll と共にリモート コンピューターに送信します。 これにより、 システム バイナリだけでなく、テストに必要な COM ライブラリも除外されます。
/TestDependencies コマンド ライン パラメーターを使用して、コピーするファイルまたはディレクトリのセミコロン区切りのリストの形式で、追加のテスト依存関係を手動で指定できます。
[ファイル]
各ファイル指定には、ワイルドカード文字 (test.txt;test*.dll; など) を含めることができます。 次に例を示します。
te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:*verification*.jpg;mysample.txt
- テストに必要なすべてのバイナリと、/TestDependencies パラメーターで指定されたファイルと一致するファイルを TAEFTest1 に送信します。
Directories
TAEF では、テスト バイナリを含むディレクトリ以下に存在するディレクトリの再帰的なディレクトリ検索がサポートされます。 次に例を示します。
te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:unittests\...
- テストに必要なすべてのバイナリを TAEFTest1 と、unittests ディレクトリ内または下のすべてのファイル/ディレクトリに送信します。 TAEF はディレクトリ階層を保持します。
_ te unittests\wex.common.tests.dll /runon:TAEFTest1 /TestDependencies:unittests\*.jpg...
- テストに必要なすべてのバイナリを TAEFTest1 と、unittests ディレクトリ内または下のすべての jpg ファイルに送信します。 TAEF はディレクトリ階層を保持します。
注:テスト ディレクトリ以下に存在しないディレクトリに対して再帰的または非再帰的なディレクトリ検索を指定すると、すべてのファイルがリモート コンピューターにコピーされますが、ディレクトリ階層はフラット化されます。
DeploymentItem メタデータを使用してテストの依存関係を 指定できます
ユーザー コンテキスト
既定では、TAEF はユーザー コンテキストを使用してリモート コンピューターでテストを実行しようとします。 これは次の方法で行われます。
- リモート コンピューター上のすべてのアクティブなセッションを列挙し、自分が所有するセッションを探します。
TAEF は、リモート コンピューター上で自分が所有するセッションを見つけた場合、そのセッション (そのデスクトップなど) でテストを実行します。
注: これは必ずしもコンソール セッションであるとは限りません。 リモート デスクトップ セッションである可能性があります。
TAEF は、リモート コンピューター上で自分が所有するセッションを見つ けられない場合、(そのデスクトップなどで) コンソール セッションにログインしているユーザーとしてテストを実行します。
最後に、リモート コンピューター上のセッションを所有せず、誰もコンソール セッションにログインしていない場合、TAEF はセッション 0 (非対話型) でテストを実行します。
RunAs
/runOn に加えて /runAs 値を指定した場合、TAEF では、/runAs 設定を満たすために必要なヒューリスティックに加えて、上記のヒューリスティックが使用されます。 次に例を示します。
te unittests\wex.common.tests.dll /runon:TAEFTest1 /runas:system
- システム アカウントを使用して、TAEFTest1 のwex.common.tests.dll内に存在するすべての TAEF テストを実行します。
しくみ
- Te.exeリモート コンピューターで実行されている Te.Service のインスタンスに接続します
- Windows 認証 (ネゴシエート) は、Te.Service でユーザーを認証します。
- Te.Service は、ユーザーがリモート コンピューター上のローカルの "リモート TAEF ユーザー" グループの管理者またはメンバーであることを確認することによって、ユーザーを承認します。
- Te.Service は RemoteTests の下に、テスト dll と同じ名前のディレクトリを作成します。
- Te.exeリモート コンピューターでテストを実行するために必要なファイルの一覧を作成します。 この一覧の内容:
- 必要な TAEF バイナリ
- テスト dll のすべてのネイティブおよびマネージド バイナリ依存関係 (システム バイナリを除く)
- /TestDependencies パラメーターでユーザーが指定した追加ファイル
- Te.exe は、テスト依存関係リストと各ファイルの CRC を Te.Service に送信します。
- Te.Service は、リモート コンピューター上の各ファイルを検索し、CRC 値を比較します。 すべての一致が一覧から削除され、リストがクライアントに送り返されます。
- 依存関係リストにファイルが残っている場合、Te.exeは各依存関係を Te.Service に送信します。
- Te.Service は、<Te.Service ディレクトリ>\RemoteTests\<test dll 名>ディレクトリに保存します。
- Te.exeは、適切なユーザー コンテキストを使用してリモート コンピューターで新しいTe.ProcessHost.exe インスタンスを起動するよう Te.Service に依頼します。
- Te.exe は、リモート Te.ProcessHost.exe インスタンスに接続し、テストの実行を開始します。