次の方法で共有


UI テストの考慮事項

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

CI/CD パイプラインで自動テストを実行する場合、Selenium、Appium、コード化された UI テストなどの UI テストを実行するために特別な構成が必要になる場合があります。 この記事では、UI テストの実行に関する一般的な考慮事項について説明します。

前提条件

エージェントWindows へのエージェントのデプロイについての知識があること。

ヘッドレス モードにするか UI 表示モードにするか?

Web アプリに対する Selenium テストを実行する場合は、次の 2 つの方法でブラウザーを起動できます。

  1. ヘッドレス モード。 このモードでは、ブラウザーは通常どおりに実行されますが、UI コンポーネントは表示されません。 このモードは Web の閲覧には役立ちませんが、CI/CD パイプラインで自動テストを無人で実行する場合に便利です。 Chrome および Firefox のブラウザーは、ヘッドレス モードで実行できます。

    このモードでは、UI がレンダリングされず、テストの実行が高速化されるため、通常はコンピューター上のリソース消費量が少なくなります。 そのため、より多くのテストを同じマシンで並列に実行して、テストの合計実行時間を短縮できる可能性があります。

    このモードでは、スクリーンショットのキャプチャが可能で、エラーのトラブルシューティングに使用できます。

    注意

    現時点では、Microsoft Edge ブラウザーはヘッドレス モードで実行できません。

  2. UI 表示モード。 このモードでは、ブラウザーは通常どおりに実行され、UI コンポーネントが表示されます。 このモードの Windows でテストを実行するときには、エージェントの特別な構成が必要になります。

WinAppDriver を使用した Appium テストやコード化された UI テストなど、デスクトップ アプリケーションの UI テストを実行している場合は、エージェントの特別な構成が必要です。

ヒント

通常、エンド ツー エンドの UI テストは実行時間が長くなる傾向があります。 UI 表示モードを使用する場合、テスト フレームワークによっては、キーボードやマウスのイベントを受け取るためにアプリにフォーカスが置かれている必要があるため、同じコンピューターでテストを並列で実行できない場合があります。 このシナリオでは、個別のマシンでテストを並列で実行することで、テスト サイクルを高速化できます。 「任意のテスト ランナーに対してテストを並列で実行する」および「Visual Studio テスト タスクを使用してテストを並列で実行する」を参照してください。

UI 表示モードでの UI テスト

UI 表示モードで UI テストを実行する場合は、エージェントに特別な構成が必要になります。

Microsoft ホステッド エージェントを使用した UI 表示テスト

Microsoft がホストするエージェントではサポートされていない表示 UI テスト。 テストが失敗し、"要素は対話できません" というエラー メッセージが表示されます。 Microsoft がホストするエージェントは、ヘッドレス ブラウザーのテストをサポートします。

Microsoft ホスト型エージェントを使用したヘッドレス モード UI テスト

Microsoft がホストするエージェントは、Web アプリの UI テストと UI テスト用に事前構成されています。 Microsoft によってホストされるエージェントは、Selenium テストの実行に使用できる一般的なブラウザーおよび一致する Web ドライバー バージョンで事前構成も行われます。 このブラウザーおよび対応する Web ドライバーは定期的に更新されます。 Selenium テストの実行の詳細については、「Selenium を使用した UI テスト」を参照してください。

セルフホステッド Windows エージェントを使用した UI 表示テスト

サービスとして実行するように構成されたエージェントは、Selenium テストをヘッドレス ブラウザーでのみ実行できます。 ヘッドレス ブラウザーを使用していない場合、またはデスクトップ アプリの UI テストを実行している場合は、自動ログオンが有効になっている対話型プロセスとして実行するように Windows エージェントを構成する必要があります

エージェントの構成時に、サービスとして実行するように求められたら [いいえ] を選択します。 その後の手順で、自動ログオンを使用してエージェントを構成できます。 UI テストを実行すると、自動ログオン設定で指定したユーザーのコンテキストで、アプリケーションとブラウザーが起動します。

エージェントが自動ログオンで実行されるコンピューターにアクセスするためにリモート デスクトップを使用している場合は、単純にリモート デスクトップを切断すると、コンピューターがロックされるため、このエージェントで実行される UI テストがすべて失敗する可能性があります。 失敗を回避するには、リモート コンピューターで tscon コマンドを使用して、リモート デスクトップから切断します。 次に例を示します。

%windir%\System32\tscon.exe 1 /dest:console

この例では、この数字の '1' はリモート デスクトップ セッションの ID です。 この数値はリモート セッション間で変わる可能性がありますが、タスク マネージャーで表示できます。 または、現在のセッション ID の検索を自動化するために、次のコードが含まれたバッチ ファイルを作成します。

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
  %windir%\System32\tscon.exe %%s /dest:console
)

バッチ ファイルを保存し、そのファイルへのデスクトップ ショートカットを作成し、ショートカットのプロパティを [管理者として実行] に変更します。 このショートカットからバッチ ファイルを実行すると、リモート デスクトップから切断されますが、UI セッションが保持され、UI テストを実行できるようになります。

UI テスト用の Azure VM でのエージェントのプロビジョニング

Azure で仮想マシン (VM) をプロビジョニングする場合、UI テスト実行用のエージェント構成は、DevTest Labs のエージェント成果物から利用できます。

agentArtifactDTL

画面解像度の設定

UI テストを実行する前に、アプリが正しくレンダリングされるように画面解像度を調整する必要がある場合があります。 そのために、画面解像度のユーティリティ タスクを Marketplace から入手できます。 このタスクをパイプラインで使用して、画面解像度をエージェント マシンでサポートされている値に設定します。 既定では、このユーティリティによって、エージェント マシンでサポートされる最適な値に解像度が設定されます。

画面解像度タスクの使用中にエラーが発生した場合は、自動ログオンを有効にした状態で実行するようにエージェントを構成していること、および上記のとおりに tscon コマンドを使用してすべてのリモート デスクトップ セッションが安全に切断 されていることを確認します。

Note

画面解像度ユーティリティ タスクは統合されたビルド/リリース/テスト エージェントで実行され、非推奨の機能テストの実行タスクでは使用できません。 解像度ユーティリティ タスクは、Azure 仮想マシンでも機能しません。

UI テストのエラーのトラブルシューティング

無人方式で UI テストを実行する場合は、スクリーンショットビデオなどの診断データをキャプチャすると、エラーが発生したときのアプリケーションの状態を検出するために役立ちます。

スクリーンショットのキャプチャ

ほとんどの UI テスト フレームワークには、スクリーンショットをキャプチャする機能が用意されています。 収集されたスクリーンショットは、テスト結果をサーバーに発行するときに、テスト結果の添付ファイルとして利用できます。

テストの実行に Visual Studio テスト タスクを使用する場合は、テスト レポートで利用できるようにするために、キャプチャしたスクリーンショットを結果ファイルとして追加する必要があります。 そのためには、次のコードを使用します。

まず、テスト クラスで TestContext が定義されていることを確認します。 例: public TestContext TestContext { get; set; }

TestContext.AddResultFile(fileName); //Where fileName is the name of the file. を使用してスクリーンショット ファイルを追加します

テスト結果の発行タスクを使用して結果を発行する場合、テスト結果の添付ファイルは、VSTest (TRX) 結果形式または NUnit 3.0 結果形式を使用している場合にのみ発行できます。

JUnit または xUnit のテスト結果を使用する場合、結果の添付ファイルは発行できません。 これは、これらのテスト結果形式には、結果スキーマ内に添付ファイルの正式な定義がないためです。 その代わりに、次のいずれかの方法を使用して、テスト添付ファイルを発行できます。

  • ビルド (CI) パイプラインでテストを実行している場合は、ビルド成果物のコピーと発行タスクを使用して、テストで作成されたその他のファイルを発行できます。 これらは、ビルドの概要の [成果物] ページに表示されます。

  • REST API を使用して、必要な添付ファイルを発行します。 コードのサンプルは、こちらの GitHub リポジトリにあります。

ビデオのキャプチャ

テストの実行に Visual Studio テスト タスクを使用すると、テストのビデオをキャプチャして、テスト結果の添付ファイルとして自動的に使用できるようになります。 そのためには、.runsettings ファイルでビデオ データ コレクターを構成する必要があります。このファイルは、タスクの設定で指定されている必要があります。

runSettings

ヘルプとサポート