다음을 통해 공유


여러 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 테스트 프로젝트에 추가 하려면

  1. 솔루션 탐색기, 모든 UI 맵을 저장, 코딩 된 UI 테스트 프로젝트 파일을 마우스 오른쪽 단추로 클릭 하 고 코딩 된 UI 테스트 프로젝트의 폴더를 만들려면 추가 다음 선택 새 폴더.예를 들어 이름을 UIMaps로 지정할 수 있습니다.

    새 폴더는 코딩 된 UI 테스트 프로젝트 아래에 표시 됩니다.

  2. 마우스는 UIMaps 폴더를 가리키도록 추가, 다음 선택 새 항목.

    새 항목 추가 대화 상자가 표시됩니다.

    [!참고]

    코딩 된 UI 테스트 맵을 새로 추가 하려면 코딩 된 UI 테스트 프로젝트에 있어야 합니다.

  3. 목록에서 코딩된 UI 테스트 맵을 선택합니다.

    이름 상자에 새 UI 맵의 이름을 입력합니다.예를 들어 HomePageMap과 같이 맵이 나타낼 구성 요소 또는 페이지의 이름을 사용합니다.

  4. 추가를 선택합니다.

    Visual Studio 창이 최소화되고 코딩된 UI 테스트 빌더 대화 상자가 표시됩니다.

  5. 첫 번째 방법에 대 한 작업을 기록 하 고 선택한 코드 생성.

  6. 첫 번째 구성 요소 또는 페이지에 대한 모든 작업 및 어설션을 기록하고 이를 메서드로 그룹화한 후 코딩된 UI 테스트 빌더 대화 상자를 닫습니다.

  7. 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.
}

참고 항목

참조

UIMap

CopyFrom

개념

코딩된 사용자 인터페이스 테스트를 사용하여 코드 확인

코딩된 UI 테스트 분석

기타 리소스

코딩 된 UI 테스트 만들기