コード化された UI テストのベスト プラクティスBest Practices for Coded UI Tests

このトピックでは、コード化された UI テストの開発手順におけるベスト プラクティスについて説明します。This topic describes the best practices to follow when you develop coded UI tests.

RequirementsRequirements

  • Visual Studio EnterpriseVisual Studio Enterprise

ベスト プラクティスBest Practices

柔軟性のあるコード化された UI テストを作成するには、次のガイドラインを使用します。Use the following guidelines to create a flexible coded UI test.

  • 可能な限りコード化された UI テスト ビルダーを使用します。Use the Coded UI Test Builder whenever possible.

  • UIMap.designer.cs ファイルは直接変更しないでください。Do not modify the UIMap.designer.cs file directly. このファイルを直接変更すると、その変更内容が上書きされます。If you do this, the changes to the file will be overwritten.

  • 記録されたメソッドのシーケンスとしてテストを作成します。Create your test as a sequence of recorded methods. メソッドを記録する方法の詳細については、「コード化された UI テストを作成する」を参照してください。For more information about how to record a method, see Creating Coded UI Tests.

  • 記録された各メソッドは、単一のページ、フォーム、またはダイアログ ボックスで動作する必要があります。Each recorded method should act on a single page, form, or dialog box. 新しいページ、フォーム、またはダイアログ ボックスごとに新しいテスト メソッドを作成してください。Create a new test method for each new page, form, or dialog box.

  • メソッドを作成するときには、既定のメソッド名の代わりに、わかりやすい名前を使用します。When you create a method, use a meaningful method name instead of the default name. わかりやすい名前を付けておくと、メソッドの用途が明確になります。A meaningful name helps identify the purpose of the method.

  • 可能な場合は、記録される各メソッドを 10 未満の操作に制限します。When possible, limit each recorded method to fewer than 10 actions. このモジュール式のアプローチにより、UI が変更された場合にメソッドを置き換えやすくなります。This modular approach makes it easier to replace a method if the UI changes.

  • 各アサーションは、コード化された UI テスト ビルダーを使用して作成します。この場合、アサーション メソッドは UIMap.Designer.cs ファイルに自動的に追加されます。Create each assertion using the Coded UI Test Builder, which automatically adds an assertion method to the UIMap.Designer.cs file.

  • ユーザー インターフェイス (UI) が変更された場合は、テスト メソッドまたはアサーション メソッドを再記録するか、既存のテスト メソッドの、影響を受けるセクションを再記録します。If the user interface (UI) changes, re-record the test methods, or the assertion methods, or re-record the affected sections of an existing test method.

  • テスト対象のアプリケーションのモジュールごとに個別の <xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap> ファイルを作成します。Create a separate <xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap> file for each module in your application under test. 詳細については、「複数の UI マップでの大規模アプリケーションのテスト」をご覧ください。For more information, see Testing a Large Application with Multiple UI Maps.

  • テスト対象のアプリケーションの UI コントロールを作成するときは、わかりやすい名前を使用します。In the application under test, use meaningful names when you create the UI controls. これにより、自動生成されたコントロール名に意味が加えられて使いやすくなります。This gives more meaning and usability to the automatically generated control names.

  • API を使用したコーディングによりアサーションを作成する場合は、UIMap.cs ファイル内の <xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap> クラスの部分でアサーションごとにメソッドを作成します。If you are creating assertions by coding with the API, create a method for each assertion in the part of the <xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap> class that is in the UIMap.cs file. このメソッドをテスト メソッドから呼び出してアサーションを実行します。Call this method from your test method to execute the assertion.

  • API を使用してコーディングを直接行う場合は、可能な限り、UIMap.Designer.cs ファイルに生成されたクラスのプロパティとメソッドをコードで使用します。If you are directly coding with the API, use the properties and methods in the classes generated in the UIMap.Designer.cs file in your code as much as you can. これらのクラスを使用すると、作業が楽になり、信頼性と生産性が高まります。These classes will make your work easier, more reliable, and will help you be more productive.

    コード化された UI テストは、ユーザー インターフェイス内の多くの変更に自動的に適応します。Coded UI tests automatically adapt to many changes in the user interface. たとえば、UI 要素の位置や色が変更された場合、通常はコード化された UI テストにより適切な要素が検索されます。If, for example, a UI element has changed position or color, most of the time the coded UI test will still find the correct element.

    テストの実行中、UI コントロールはテスト フレームワークによって検索されます。その際、コード化された UI テスト ビルダーによって UIMap.Designer.cs ファイルに作成された定義の各コントロール クラスに適用される、一連の検索プロパティが使用されます。During a test run, the UI controls are located by the testing framework by using a set of search properties which are applied to each control class in the definitions created by the Coded UI Test Builder in the UIMap.Designer.cs file. 検索プロパティには、コントロールの識別に使用できるプロパティ名とプロパティ値の名前と値のペアが含まれます (コントロールの <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FriendlyName%2A> プロパティ、<xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.Name%2A> プロパティ、<xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.ControlType%2A> プロパティなど)。The search properties contain name-value pairs of property names and property values that can be used to identify the control, such as the <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.FriendlyName%2A>, <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.Name%2A>, and <xref:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.ControlType%2A> properties of the control. 検索プロパティが変更されない場合、コード化された UI テストにより UI 内のコントロールが正常に検索されます。If the search properties are unchanged, the coded UI test will successfully find the control in the UI. 検索プロパティが変更された場合、コード化された UI テストでは、UI 内のコントロールとウィンドウを検索するためのヒューリスティックを適用する高度な一致検出アルゴリズムを使用できます。If the search properties are changed, coded UI tests have a smart match algorithm which applies heuristics to find controls and windows in the UI. UI が変更されている場合は、以前識別された要素が確実に検出されるように、その要素の検索プロパティを変更できます。When the UI has changed, you might be able to modify the search properties of previously identified elements to make sure that they are found.

ユーザー インターフェイスが変更された場合の作業What to do if your user interface changes

開発中にユーザー インターフェイスが変更されることはよくあります。User interfaces frequently change during development. このような変更の影響を軽減する方法を次に示します。Here are some ways to reduce the effect of these changes:

  • このコントロールを参照する記録されたメソッドを見つけ、コード化された UI テスト ビルダーを使用してこのメソッドの操作を再記録します。Find the recorded method which references this control and use the Coded UI Test Builder to re-record the actions for this method. メソッドに同じ名前を使用すると、既存の操作を上書きできます。You can use the same name for the method to overwrite the existing actions.

  • 有効ではなくなったアサーションがコントロールにある場合は、次の操作を実行します。If a control has an assertion that is no longer valid:

    • アサーションが含まれるメソッドを削除します。Delete the method that contains the assertion.

    • テスト メソッドからこのメソッドへの呼び出しを削除します。Remove the call to this method from the test method.

    • 十字線のボタンを UI コントロールにドラッグすることで新しいアサーションを追加し、UI マップを開いて新しいアサーションを追加します。Add a new assertion by dragging the cross-hair button onto the UI control, open the UI map, and add the new assertion.

    コード化された UI テストを記録する方法の詳細については、「UI オートメーションを使用してコードをテストする」を参照してください。For more information about how to record coded UI tests, see Use UI Automation To Test Your Code.

バック グラウンド プロセスが完了しないとテストを継続できない場合の作業What to do if a background process needs to complete before the test can continue

プロセスが完了するまで待機しないと、次の UI 操作に進むことができない場合がありますYou might have to wait until a process finishes before you can continue with the next UI action. その場合は、次のサンプルに示すように、テストを継続できるようになるまで、<xref:Microsoft.VisualStudio.TestTools.UITesting.PlaybackSettings.WaitForReadyLevel%2A> を使用して待機できます。To do this you can use <xref:Microsoft.VisualStudio.TestTools.UITesting.PlaybackSettings.WaitForReadyLevel%2A> to wait before the test continues as in the following sample.

// Set the playback to wait for all threads to finish  
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;  

// Press the submit button  
this.UIMap.ClickSubmit();  

// Reset the playback to wait only for the UI thread to finish  
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;  

関連項目See Also

<xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap><xref:Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap>
<xref:Microsoft.VisualStudio.TestTools.UITesting><xref:Microsoft.VisualStudio.TestTools.UITesting>
UI オートメーションを使用してコードをテストする Use UI Automation To Test Your Code
コード化された UI テストを作成する Creating Coded UI Tests
複数の UI マップでの大規模アプリケーションのテスト Testing a Large Application with Multiple UI Maps
コード化された UI テストと操作の記録でサポートされている構成とプラットフォームSupported Configurations and Platforms for Coded UI Tests and Action Recordings