ロード テストでのコード化された UI テストの使用
このトピックの内容は、次の製品に該当します。
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
ソフトウェアがさまざまなレベルでの使用にどの程度反応するかどうかを確認するには、ロード テストを実施します。 ロード テストでは、プログラムに同時にアクセスする複数のユーザーをシミュレートすることで、ソフトウェア プログラムの予想される使用方法がモデル化されます。 詳細については、「ロード テストの作成と編集」を参照してください。
ロード テストは、主に、複数のシミュレートされたユーザーを使用して一定期間実行される一連の Web パフォーマンス テストまたは単体テストで構成されます。 ロード テストには、自動のコード化された UI テストも含めることができます。 コード化された UI テストは、特定の状況でだけ含めるようにします。 コード化された UI テストをロード テストで使用するすべてのシナリオでは、コード化された UI テストがパフォーマンス テストとして使用されます。 このことは、コード化された UI テストでは UI 層でのパフォーマンスをキャプチャできるため役立ちます。 たとえば、クライアントにデータを返すために 1 秒かかるアプリケーションがある場合、ブラウザーにデータを表示するために 8 秒かかったとしても、Web パフォーマンス テストではこの種類のパフォーマンスの問題をキャプチャできません。
コード化された UI テストをロード テストで使用する別のシナリオは、対象のアプリケーションをプロトコル層でスクリプト化することが難しい場合です。 この場合、プロトコル層を正しくスクリプト化できるまで、コード化された UI を使用して一時的に負荷をかけることができます。
コード化された UI テストでのタイミング測定のコードの実装
既定では、呼び出しが非同期なので、ロード テストで使用されるコード化された UI テストから正確なタイミング測定値は得られません。 正確なタイミング測定値を取得するために、コード化された UI テストを正しく実装する必要があります。 そのためには、WaitForControlReady メソッドを使用します。 次のサンプル コード スニペットは、ログイン ページでの使用例を示しています。
注意
これは、簡略化した例です。 実際のテストでは、ログインが失敗した場合のタイミングも処理する必要があります。
ロード テストで使用されるコード化された UI テストを正しく実装するには
ログイン ページの読み込みにかかる時間を計測します。
TestContext.BeginTimer("UI Login Page Load");
この呼び出しがログイン ページを読み込みます。
UIMap.LoginPage();
Web テストで取得されるどのタイミングも、WaitForReady を使用する必要があります。 これにより、フォームが表示されるまで待機するようになります。
UIMap.UIHttpteamtestweb1STORWindow1.UIHttpteamtestweb1STORDocument.UIEmailEdit.WaitForControlReady(); TestContext.EndTimer("UI Login Page Load");
ヒント
フォームへの入力に費やした時間がタイマーに含まれないようにしてください。 記録中に、フォームを入力した後、送信する前の時点で、レコーダーからコードを生成します。
この関数がログイン フォームへの入力を行います。
UIMap.FilledInLoginForm();
ログイン操作の時間を計測します。
TestContext.BeginTimer("UI Login"); UIMap.LoggedIn();
Web テストで取得されるどのタイミングも、WaitForReady を使用する必要があります。 これにより、ログイン確認ページが表示されるまで待機するようになります。
UIMap.UIHttpteamtestweb1STORWindow.UIHttpteamtestweb1STORDocument.UIWelcomeJamesBondwellPane.WaitForControlReady(); TestContext.EndTimer("UI Login");
ロード テストでのコード化された UI テストの制限事項
コード化された UI テストでは、マウスとキーボードが使用されます。 そのため、エージェントごとに 1 人の仮想ユーザーだけが、コード化された UI テストを実行できます。 この問題を制御する最善の方法は、ロード テスト内に別のシナリオを設定して、ユーザー ロードを 1 ユーザーに設定することです。 複数の UI テストがある場合は、テスト ミックスを時系列順として構成します。 詳細については、「既存のロード テスト用の追加シナリオの作成」および「テスト ミックス モデルを編集して仮想ユーザーがテストを実行する確率を指定」を参照してください。
ロード エージェントをサービスとしてではなく対話型プロセスとして実行するように構成する必要もあります。 詳細については、「Visual Studio Agents、テスト コントローラー、およびビルド コントローラーのインストールと構成」を参照してください。
参照
参照
概念
自動 UI テストを使用したユーザー インターフェイスのテスト