자동화된 테스트에 UI 자동화 사용
메모
이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows Automation API: UI 자동화참조하세요.
이 개요에서는 자동화된 테스트 시나리오에서 프로그래밍 방식 액세스를 위한 프레임워크로 Microsoft UI 자동화가 어떻게 유용할 수 있는지 설명합니다.
UI 자동화는 모든 UI(사용자 인터페이스) 프레임워크가 접근 가능하고 쉽게 자동화된 방식으로 복잡하고 풍부한 기능을 노출할 수 있도록 하는 통합 개체 모델을 제공합니다.
UI 자동화는 Microsoft Active Accessibility의 후속 작업으로 개발되었습니다. 활성 접근성은 컨트롤 및 애플리케이션에 액세스할 수 있는 솔루션을 제공하도록 설계된 기존 프레임워크입니다. 활성 접근성은 매우 유사한 접근성 및 자동화 요구 사항으로 인해 해당 역할로 발전했음에도 불구하고 테스트 자동화를 염두에 두고 설계되지 않았습니다. UI 자동화는 접근성을 위한 보다 정교한 솔루션을 제공하는 것 외에도 자동화된 테스트를 위한 강력한 기능을 제공하도록 특별히 설계되었습니다. 예를 들어 활성 접근성은 단일 인터페이스를 사용하여 UI에 대한 정보를 노출하고 AT 제품에 필요한 정보를 수집합니다. UI 자동화는 두 모델을 구분합니다.
자동화된 테스트 도구로 유용하려면 공급자와 클라이언트 모두 UI 자동화를 구현해야 합니다. UI 자동화 공급자는 Microsoft Word, Excel 및 기타 타사 응용 프로그램 또는 Microsoft Windows 운영 체제를 기반으로 하는 컨트롤과 같은 애플리케이션입니다. UI 자동화 클라이언트에는 자동화된 테스트 스크립트 및 보조 기술 애플리케이션이 포함됩니다.
메모
이 개요는 UI 자동화의 새롭고 향상된 자동화된 테스트 기능을 보여주기 위한 것입니다. 이 개요는 접근성 기능에 대한 정보를 제공하기 위한 것이 아니며 필요한 경우 외에는 접근성을 다루지 않습니다.
공급자의 UI 자동화
UI를 자동화하려면 애플리케이션 또는 컨트롤 개발자가 표준 키보드 및 마우스 상호 작용을 사용하여 최종 사용자가 UI 개체에서 수행할 수 있는 작업을 확인해야 합니다.
이러한 주요 작업이 식별되면 해당 UI 자동화 컨트롤 패턴(즉, UI 요소의 기능 및 동작을 미러링하는 컨트롤 패턴)을 컨트롤에 구현해야 합니다. 예를 들어 콤보 상자 컨트롤(예: 실행 대화 상자)과의 사용자 상호 작용에는 일반적으로 콤보 상자를 확장 및 축소하여 항목 목록을 숨기거나 표시하거나, 해당 목록에서 항목을 선택하거나, 키보드 입력을 통해 새 값을 추가하는 작업이 포함됩니다.
메모
다른 접근성 모델을 사용하면 개발자는 개별 단추, 메뉴 또는 기타 컨트롤에서 직접 정보를 수집해야 합니다. 아쉽게도 모든 컨트롤 형식은 수십 가지 사소한 변형으로 제공됩니다. 즉, 푸시버튼의 10가지 변형이 모두 동일한 방식으로 작동하고 동일한 함수를 수행할 수 있더라도 모두 고유한 컨트롤로 처리되어야 합니다. 이러한 컨트롤이 기능적으로 동일하다는 것을 알 수 있는 방법은 없습니다. 이러한 일반적인 컨트롤 동작을 나타내기 위해 컨트롤 패턴이 개발되었습니다. 자세한 내용은 UI 자동화 컨트롤 패턴 개요참조하세요.
UI 자동화 구현
앞에서 설명한 것처럼 UI 자동화에서 제공하는 통합 모델이 없으면 테스트 도구와 개발자는 해당 프레임워크에서 컨트롤의 속성과 동작을 노출하기 위해 프레임워크 관련 정보를 알아야 합니다. Win32, Windows Forms 및 WPF(Windows Presentation Foundation)를 포함하여 Windows 운영 체제 내에서 한 번에 여러 가지 UI 프레임워크가 있을 수 있으므로 비슷한 컨트롤을 사용하여 여러 애플리케이션을 테스트하는 것은 어려운 작업일 수 있습니다. 예를 들어 다음 표에서는 단추 컨트롤과 연결된 이름(또는 텍스트)을 검색하는 데 필요한 프레임워크별 속성 이름을 간략하게 설명하고 해당하는 단일 UI 자동화 속성을 보여 줍니다.
UI 자동화 컨트롤 형식 | UI 프레임워크 | 프레임워크별 속성 | UI 자동화 속성 |
---|---|---|---|
단추 | Windows Presentation Foundation | 콘텐츠 | 이름 속성 |
단추 | Win32 | 캡션 | NameProperty |
이미지 | HTML | 대체 텍스트 | 이름 속성 |
UI 자동화 공급자는 해당 컨트롤의 프레임워크별 속성을 해당하는 UI 자동화 속성에 매핑합니다.
공급자에서 UI 자동화를 구현하는 방법에 대한 정보는 Managed Code용 UI 자동화 공급자에서 찾을 수 있습니다. 컨트롤 패턴 구현에 대한 정보는 UI 자동화 컨트롤 패턴 및 UI 자동화 텍스트 패턴사용할 수 있습니다.
클라이언트의 UI 자동화
여러 자동화된 테스트 도구 및 시나리오의 목표는 사용자 인터페이스의 일관되고 반복 가능한 조작입니다. 여기에는 컨트롤 그룹에 대한 일련의 일반 작업을 반복하는 테스트 스크립트의 기록 및 재생을 통해 특정 컨트롤을 단위 테스트하는 작업이 포함될 수 있습니다.
자동화된 애플리케이션에서 발생하는 복잡성은 테스트를 동적 대상과 동기화하는 데 어려움이 있다는 것입니다. 예를 들어 현재 실행 중인 애플리케이션 목록을 표시하는 목록 상자 컨트롤(예: Windows 작업 관리자에 포함된 컨트롤)입니다. 목록 상자의 항목은 테스트 애플리케이션의 제어 외부에서 동적으로 업데이트되므로 일관성이 있는 목록 상자에서 특정 항목의 선택을 반복하는 것은 불가능합니다. 테스트 애플리케이션의 제어를 벗어난 UI에서 간단한 포커스 변경을 반복하려고 할 때도 비슷한 문제가 발생할 수 있습니다.
프로그래밍 방식 액세스
프로그래밍 방식 액세스는 코드를 통해 기존의 마우스 및 키보드 입력에 의해 노출되는 상호 작용 및 환경을 모방하는 기능을 제공합니다. UI 자동화를 사용하면 다음 5개 구성 요소를 통해 프로그래밍 방식으로 액세스할 수 있습니다.
UI 자동화 트리를 사용하면 UI 구조를 쉽게 탐색할 수 있습니다. 트리는 hWnd의 컬렉션에서 빌드됩니다. 자세한 내용은 UI 자동화 트리 개요참조하세요.
자동화 요소는 UI의 개별 구성 요소입니다. 이들은 종종 hWnd보다 더 세분화 될 수 있습니다. 자세한 내용은 UI 자동화 컨트롤 형식 개요참조하세요.
자동화 속성은 UI 요소에 대한 특정 정보를 제공합니다. 자세한 내용은 UI 자동화 속성 개요참조하세요.
컨트롤 패턴은 컨트롤 기능의 특정 측면을 정의합니다. 속성, 메서드, 이벤트 및 구조 정보로 구성 될 수 있습니다. 자세한 내용은 UI 자동화 컨트롤 패턴 개요참조하세요.
자동화 이벤트는 이벤트 알림 및 정보를 제공합니다. 자세한 내용은 UI 자동화 이벤트 개요참조하세요.
테스트 자동화의 주요 속성
UI 내에서 컨트롤을 고유하게 식별하고 나중에 찾을 수 있는 기능은 자동화된 테스트 애플리케이션이 해당 UI에서 작동할 수 있는 기반을 제공합니다. 이를 지원하는 클라이언트 및 공급자가 사용하는 몇 가지 Microsoft UI 자동화 속성이 있습니다.
AutomationID
자동화 요소를 다른 요소들 사이에서 고유하게 식별합니다. 제품이 여러 언어로 배송되는 경우 일반적으로 지역화되는 NameProperty 같은 속성과 달리 AutomationIdProperty 지역화되지 않습니다. 을 보고AutomationID 속성을 사용하세요.
메모
AutomationIdProperty 자동화 트리 전체에서 고유한 ID를 보장하지는 않습니다. 예를 들어 애플리케이션에는 여러 최상위 메뉴 항목을 포함하는 메뉴 컨트롤이 있을 수 있으며, 이들이 각각 여러 하위 메뉴 항목을 가질 수 있습니다. 이러한 보조 메뉴 항목은 "Item1, Item 2, Item3 등"과 같은 일반 구성표로 식별될 수 있으며 최상위 메뉴 항목에서 자식에 대해 중복 식별자를 허용합니다.
제어유형 (ControlType)
자동화 요소가 나타내는 컨트롤의 형식을 식별합니다. 컨트롤 형식에 대한 지식에서 중요한 정보를 유추할 수 있습니다. UI 자동화 컨트롤 형식 개요참조하세요.
이름속성
컨트롤을 식별하거나 설명하는 텍스트 문자열입니다. NameProperty 지역화할 수 있으므로 주의해서 사용해야 합니다. UI 자동화 속성 개요참조하세요.
테스트 애플리케이션에서 UI 자동화 구현
단계 | 묘사 |
---|---|
UI 자동화 참조를 추가합니다. | UI 자동화 클라이언트에 필요한 UI 자동화 dll이 여기에 나열되어 있습니다. - UIAutomationClient.dll UI 자동화 클라이언트 쪽 API에 대한 액세스를 제공합니다. - UIAutomationClientSideProvider.dll Win32 컨트롤을 자동화하는 기능을 제공합니다. 표준 컨트롤 대한UI 자동화 지원을 참조하세요. - UIAutomationTypes.dll UI 자동화에 정의된 특정 형식에 대한 액세스를 제공합니다. |
System.Windows.Automation 네임스페이스를 추가합니다. | 이 네임스페이스에는 텍스트 처리를 제외하고 UI 자동화 기능을 사용하는 데 필요한 모든 UI 자동화 클라이언트가 포함되어 있습니다. |
System.Windows.Automation.Text 네임스페이스를 추가합니다. | 이 네임스페이스에는 UI 자동화 클라이언트가 UI 자동화 텍스트 처리 기능을 사용하는 데 필요한 모든 것이 포함되어 있습니다. |
관심 있는 컨트롤을 찾습니다. | 자동화된 테스트 스크립트는 자동화 트리 내에서 관심 있는 컨트롤을 나타내는 UI 자동화 요소를 찾습니다. 코드를 사용하여 UI 자동화 요소를 가져오는 방법에는 여러 가지가 있습니다. - Condition 문을 사용하여 UI를 쿼리합니다. 일반적으로 언어 중립적 AutomationIdProperty 사용됩니다. 참고: 컨트롤의 UI 자동화 속성을 항목별로 지정할 수 있는 Inspect.exe 같은 도구를 사용하여 AutomationIdProperty 가져올 수 있습니다. - TreeWalker 클래스를 사용하여 전체 UI 자동화 트리 또는 해당 하위 집합을 트래버스합니다. - 초점을 추적합니다. - 컨트롤의 hWnd를 사용합니다. - 마우스 커서의 위치와 같은 화면 위치를 사용합니다. UI 자동화 요소 가져오기를 참조하세요. |
컨트롤 패턴을 가져옵니다. | 컨트롤 패턴은 기능적으로 유사한 컨트롤에 대한 일반적인 동작을 노출합니다. 테스트가 필요한 컨트롤을 찾은 후 자동화된 테스트 스크립트는 해당 UI 자동화 요소에서 관심 있는 컨트롤 패턴을 가져옵니다. 예를 들어 일반적인 단추 기능에 대한 InvokePattern 컨트롤 패턴 또는 창 기능에 대한 WindowPattern 컨트롤 패턴이 있습니다. UI 자동화 컨트롤 패턴 개요참조하세요. |
UI를 자동화합니다. | 이제 자동화된 테스트 스크립트는 UI 자동화 컨트롤 패턴에 의해 노출되는 정보와 기능을 사용하여 UI 프레임워크에서 관심 있는 모든 UI를 제어할 수 있습니다. |
관련 도구 및 기술
UI 자동화를 사용하여 자동화된 테스트를 지원하는 다양한 관련 도구와 기술이 있습니다.
Inspect.exe 공급자와 클라이언트 개발 및 디버깅 모두에 대한 UI 자동화 정보를 수집하는 데 사용할 수 있는 GUI(그래픽 사용자 인터페이스) 애플리케이션입니다. Inspect.exe Windows SDK에 포함됩니다.
MSAABridge는 활성 접근성 클라이언트에 UI 자동화 정보를 노출합니다. UI 자동화를 활성 접근성에 브리징하는 주요 목표는 기존 활성 접근성 클라이언트가 UI 자동화를 구현한 프레임워크와 상호 작용할 수 있도록 하는 것입니다.
안전
보안 정보는 UI 자동화 보안 개요참조하세요.