여러 UI 맵이 포함된 대형 응용 프로그램 테스트
이 항목에서는 여러 개의 UI 맵을 사용하여 대규모 응용 프로그램을 테스트할 때 코딩된 UI 테스트를 사용하는 방법에 대해 설명합니다.
요구 사항
- Visual Studio Ultimate, Visual Studio Premium
코딩된 UI 테스트를 새로 만들면 Visual Studio 테스트 프레임워크에서는 기본적으로 테스트에 대한 코드를 UIMap 클래스에 생성합니다.코딩된 UI 테스트를 기록하는 방법에 대한 자세한 내용은 코딩 된 UI 테스트 만들기 및 코딩된 UI 테스트 분석을 참조하십시오.
생성된 UI 맵의 코드에는 테스트와 상호 작용하는 각 개체에 대한 클래스가 포함되어 있습니다.생성된 각 메서드에 대해 메서드 매개 변수에 대한 자매 클래스가 해당 메서드 전용으로 생성됩니다.응용 프로그램에 많은 수의 개체, 페이지, 폼 및 컨트롤이 있는 경우 UI 맵이 매우 커질 수 있습니다.또한 테스트에 대한 작업을 수행하는 사용자가 여러 명인 경우 응용 프로그램은 크기가 큰 단일 UI 맵 파일로 복잡해집니다.
여러 개의 UI 맵 파일을 사용할 경우 다음과 같은 이점이 있습니다.
각 맵을 응용 프로그램의 논리적 하위 집합에 연결할 수 있습니다.그러면 변경 내용을 관리하기가 쉬워집니다.
각 테스터는 응용 프로그램의 한 섹션에 대해 작업한 후 자신의 코드를 체크 인하므로 응용 프로그램의 다른 섹션에 대해 작업하는 다른 테스터와 충돌하는 경우가 없습니다.
UI의 다른 부분에 대한 테스트에 미치는 영향을 최소화하면서 응용 프로그램 UI에 추가하는 기능을 점차적으로 확장해갈 수 있습니다.
여러 개의 UI 맵이 필요한 경우
다음과 같은 각 경우에 여러 개의 UI 맵을 만듭니다.
웹 사이트의 등록 페이지나 장바구니의 구입 페이지와 같이 여러 개의 복잡한 복합 UI 컨트롤 집합이 하나의 논리 작업을 함께 수행하는 경우
여러 작업 페이지가 포함된 마법사와 같이 독립적인 컨트롤 집합이 응용 프로그램의 다양한 지점에서 액세스하는 경우.마법사의 각 페이지가 특히 복잡한 경우에는 각 페이지마다 별도의 UI 맵을 만들 수 있습니다.
여러 개의 UI 맵 추가
UI 맵에 코딩 된 UI 테스트 프로젝트에 추가 하려면
솔루션 탐색기, 모든 UI 맵을 저장, 코딩 된 UI 테스트 프로젝트 파일을 마우스 오른쪽 단추로 클릭 하 고 코딩 된 UI 테스트 프로젝트의 폴더를 만들려면 추가 다음 선택 새 폴더.예를 들어 이름을 UIMaps로 지정할 수 있습니다.
새 폴더는 코딩 된 UI 테스트 프로젝트 아래에 표시 됩니다.
마우스는 UIMaps 폴더를 가리키도록 추가, 다음 선택 새 항목.
새 항목 추가 대화 상자가 표시됩니다.
[!참고]
코딩 된 UI 테스트 맵을 새로 추가 하려면 코딩 된 UI 테스트 프로젝트에 있어야 합니다.
목록에서 코딩된 UI 테스트 맵을 선택합니다.
이름 상자에 새 UI 맵의 이름을 입력합니다.예를 들어 HomePageMap과 같이 맵이 나타낼 구성 요소 또는 페이지의 이름을 사용합니다.
추가를 선택합니다.
Visual Studio 창이 최소화되고 코딩된 UI 테스트 빌더 대화 상자가 표시됩니다.
첫 번째 방법에 대 한 작업을 기록 하 고 선택한 코드 생성.
첫 번째 구성 요소 또는 페이지에 대한 모든 작업 및 어설션을 기록하고 이를 메서드로 그룹화한 후 코딩된 UI 테스트 빌더 대화 상자를 닫습니다.
UI 맵을 계속 만듭니다.작업 및 어설션을 기록하고 이를 각 구성 요소에 대한 메서드로 그룹화한 후 코드를 생성합니다.
대부분의 경우 응용 프로그램의 최상위 창은 모든 마법사, 폼 및 페이지에 대해 일관되게 유지됩니다.각 UI 맵에도 최상위 창에 대한 클래스가 있지만 대개 모든 맵은 동일한 최상위 창을 참조하며 이 창 내에서 응용 프로그램의 모든 구성 요소가 실행됩니다.코딩된 UI 테스트에서는 컨트롤 계층 구조를 최상위 창에서 시작하여 하향식으로 검색하므로 복잡한 응용 프로그램의 경우 실제 최상위 창이 각 UI 맵에서 중복될 수 있습니다.실제 최상위 창이 중복된 경우 해당 창이 변경되면 여러 사항이 수정됩니다.따라서 UI 맵 사이를 전환할 때 성능 문제가 발생할 수 있습니다.
이러한 영향을 최소화하려면 CopyFrom() 메서드를 사용하여 해당 UI 맵의 새 최상위 창이 기본 최상위 창과 동일한지 확인합니다.
예제
다음 예제는 다양한 UI 맵에 생성된 클래스가 나타내는 각 구성 요소와 해당 자식 컨트롤에 대한 액세스를 제공하는 유틸리티 클래스의 일부입니다.
이 예제의 경우 Contoso라는 웹 응용 프로그램에는 홈 페이지, 제품 페이지 및 장바구니 페이지가 있습니다.이러한 각 페이지는 브라우저 창인 공통의 최상위 창을 공유합니다.각 페이지에 대한 UI 맵이 있으며 유틸리티 클래스에는 다음과 유사한 코드가 있습니다.
using ContosoProject.UIMaps;
using ContosoProject.UIMaps.HomePageClasses;
using ContosoProject.UIMaps.ProductPageClasses;
using ContosoProject.UIMaps.ShoppingCartClasses;
namespace ContosoProject
{
public class TestRunUtility
{
// Private fields for the properties
private HomePage homePage = null;
private ProductPage productPage = null;
private ShoppingCart shoppingCart = null;
public TestRunUtility()
{
homePage = new HomePage();
}
// Properties that get each UI Map
public HomePage HomePage
{
get { return homePage; }
set { homePage = value; }
}
// Gets the ProductPage from the ProductPageMap.
public ProductPage ProductPageObject
{
get
{
if (productPage == null)
{
// Instantiate a new page from the UI Map classes
productPage = new ProductPage();
// Since the Product Page and Home Page both use
// the same browser page as the top level window,
// get the top level window properties from the
// Home Page.
productPage.UIContosoFinalizeWindow.CopyFrom(
HomePage.UIContosoWindowsIWindow);
}
return productPage;
}
}
// Continue to create properties for each page, getting the
// page object from the corresponding UI Map and copying the
// top level window properties from the Home Page.
}