최선의 코딩된 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.

  • UIMap.Designer.cs 파일에 어설션 메서드를 자동으로 추가하는 코딩된 UI 테스트 빌더를 사용하여 각 어설션을 만듭니다.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 테스트 빌더에 의해 UIMap.Designer.cs파일에 생성된 정의의 각 컨트롤 클래스에 적용되는 검색 속성 집합을 사용하여 UI 컨트롤을 찾습니다.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