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 ホステッド エージェントは、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 コマンドを使用して安全に切断されていることを確認してください。

注意

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

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

ヘルプとサポート