다음을 통해 공유


자동화된 테스트를 위해 UI 자동화 사용

이 개요에서는 Microsoft UI 자동화가 자동화된 테스트 시나리오에서 프로그래밍 방식 액세스를 위한 프레임워크로 유용할 수 있는 방법을 설명합니다.

UI 자동화 모든 UI 프레임워크가 액세스 가능하고 쉽게 자동화된 방식으로 복잡하고 풍부한 기능을 노출할 수 있도록 하는 통합 개체 모델을 제공합니다.

UI 자동화 컨트롤 및 애플리케이션에 액세스할 수 있는 솔루션을 제공하도록 설계된 프레임워크인 Microsoft Active Accessibility의 후속 작업으로 개발되었습니다. Microsoft Active Accessibility는 접근성 및 자동화의 유사한 요구 사항으로 인해 해당 역할로 발전했지만 테스트 자동화를 염두에 두고 설계되지 않았습니다. UI 자동화 특히 자동화된 테스트를 위한 강력한 기능을 제공할 뿐만 아니라 접근성을 위한 보다 세련된 솔루션을 제공하도록 설계되었습니다. 예를 들어 Microsoft Active Accessibility는 단일 인터페이스를 사용하여 UI에 대한 정보를 노출하고 보조 기술 제품에 필요한 정보를 수집합니다. UI 자동화 두 모델을 구분합니다.

공급자와 클라이언트 모두 자동화된 테스트 도구로 유용하도록 UI 자동화 구현해야 합니다. UI 자동화 공급자는 Microsoft Word, Microsoft Excel 및 기타 타사 애플리케이션 또는 Windows 운영 체제를 기반으로 하는 컨트롤과 같은 애플리케이션입니다. UI 자동화 클라이언트에는 자동화된 테스트 스크립트 및 보조 기술 애플리케이션이 포함됩니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

공급자의 UI 자동화

사용자 인터페이스의 요소를 자동화하려면 개발자는 표준 키보드 및 마우스 상호 작용을 사용하여 최종 사용자가 UI 개체에서 수행할 수 있는 작업을 확인해야 합니다. 이러한 주요 작업을 식별한 후에는 UI 요소의 기능과 동작을 미러 UI 자동화 컨트롤 패턴을 컨트롤에 구현해야 합니다. 예를 들어 콤보 상자 컨트롤과의 사용자 상호 작용에는 일반적으로 콤보 상자를 확장 및 축소하여 항목 목록을 표시하거나 숨기거나, 목록에서 항목을 선택하거나, 키보드 입력을 통해 새 값을 추가하는 작업이 포함됩니다.

다른 접근성 모델에서, 개발자는 개별 단추, 메뉴 또는 다른 컨트롤에서 직접 정보를 수집해야 합니다. 모든 컨트롤 형식은 수십 가지의 사소한 변형으로 제공됩니다. 즉, 푸시버튼의 10가지 변형이 동일한 방식으로 작동하고 동일한 함수를 수행하더라도 모두 고유한 컨트롤로 처리되어야 합니다. 이러한 컨트롤이 기능적으로 동일한지 알 수 있는 방법은 없습니다. UI 자동화 컨트롤 패턴은 이러한 일반적인 컨트롤 동작을 나타내기 위해 개발되었습니다. 자세한 내용은 UI Automation Control Patterns Overview을 참조하세요.

UI 자동화 제공하는 제어 패턴의 통합 모델이 없으면 테스트 도구 및 개발자는 해당 프레임워크에서 속성 및 컨트롤 동작을 노출하기 위한 프레임워크별 정보가 있어야 합니다. Microsoft Win32, Windows Forms 및 WPF(Windows Presentation Foundation)를 비롯한 여러 UI 프레임워크가 Windows 운영 체제에서 동시에 존재할 수 있으므로 비슷한 컨트롤을 사용하여 여러 애플리케이션을 테스트하는 것은 어려운 작업일 수 있습니다. 예를 들어 다음 표에서는 단추 컨트롤과 연결된 이름 또는 텍스트를 검색하는 데 필요한 프레임워크별 속성 이름을 나열하고 해당하는 UI 자동화 속성을 표시합니다.

컨트롤 형식 UI 프레임워크 프레임워크별 속성 UI 자동화 속성
단추 WPF 콘텐츠 Name 속성
단추 Win32 캡션 Name 속성
이미지 HTML alt Name 속성

 

UI 자동화 공급자는 해당 컨트롤의 프레임워크별 속성을 동등한 UI 자동화 속성에 매핑하는 작업을 담당합니다. 공급자에서 UI 자동화 구현하는 방법에 대한 자세한 내용은 UI 자동화 공급자 프로그래머 가이드를 참조하세요. 컨트롤 패턴 구현에 대한 자세한 내용은 UI 자동화 컨트롤 패턴 구현을 참조하세요.

클라이언트의 UI 자동화

자동화된 테스트 도구 및 시나리오의 목표는 UI의 일관되고 반복 가능한 조작입니다. 예를 들어 특정 컨트롤을 단위 테스트하고 컨트롤 그룹에서 일련의 일반 작업을 반복하는 테스트 스크립트를 기록하고 실행하는 작업이 포함될 수 있습니다.

자동화된 애플리케이션의 복잡성은 현재 실행 중인 애플리케이션 목록을 표시하는 Windows 작업 관리자와 같은 목록 상자 컨트롤과 같은 동적 대상과 테스트를 동기화하는 데 어려움이 있습니다. 목록 상자의 항목은 테스트 애플리케이션의 제어 외부에서 동적으로 업데이트되므로 일관성이 있는 목록 상자에서 특정 항목 선택을 반복하는 시도는 불가능합니다. 테스트 애플리케이션의 제어 범위를 벗어난 UI에서 간단한 포커스 변경을 반복하려고 할 때도 비슷한 문제가 발생할 수 있습니다.

프로그래밍 방식 액세스

프로그래밍 방식의 액세스는 기존의 마우스 및 키보드 입력으로 노출되는 모든 상호 작용 및 환경을 코드를 통해 모방할 수 있는 기능을 제공합니다. UI 자동화는 다섯 가지 구성 요소를 통해 프로그래밍 방식으로 액세스할 수 있습니다.

  • UI 자동화 트리는 UI 구조를 통해 탐색을 용이하게 합니다. 트리는 HWND의 컬렉션에서 빌드됩니다. 자세한 내용은 UI 자동화 트리 개요를 참조하세요.
  • 자동화 요소는 UI의 개별 구성 요소입니다. 이는 종종 HWND보다 더 세분화될 수 있습니다.
  • 자동화 속성은 UI 요소에 대한 특정 정보를 제공합니다. 자세한 내용은 UI Automation Properties Overview을 참조하십시오.
  • 컨트롤 패턴은 컨트롤 기능의 특정 측면을 정의하며 속성, 메서드, 이벤트 및 구조 정보로 구성될 수 있습니다. 자세한 내용은 UI Automation Control Patterns Overview을 참조하세요.
  • 자동화 이벤트는 이벤트 알림 및 정보를 제공합니다. 자세한 내용은 UI Automation Events Overview을 참조하세요.

테스트 자동화에 대한 키 속성

UI에서 컨트롤을 고유하게 식별하고 찾는 기능은 자동화된 테스트 애플리케이션이 해당 UI에서 작동할 수 있는 기반을 제공합니다. 클라이언트 및 공급자가 컨트롤을 식별하고 찾는 데 사용하는 UI 자동화 속성은 다음 표에 설명되어 있습니다.

속성 Description
AutomationId 자동화 요소를 형제와 고유하게 구분합니다. AutomationId 속성에 대한 지원은 필요하지 않습니다. 사용 가능한 경우 요소의 AutomationId 속성은 로컬 언어에 관계없이 애플리케이션의 모든 instance 동일합니다. AutomationId 속성은 형제 요소 간에 고유하지만 전체 데스크톱에서 고유하지 않을 수 있습니다. 예를 들어 애플리케이션의 여러 인스턴스 또는 Microsoft Windows Explorer 여러 폴더 보기에는 "SystemMenuBar"와 같은 AutomationIdProperty가 동일한 요소가 포함될 수 있습니다. 클라이언트는 다른 애플리케이션에서 노출하는 AutomationId에 대해 어떠한 가정도 하지 않아야 합니다. AutomationId는 애플리케이션의 여러 릴리스 또는 빌드에서 안정적으로 유지되도록 보장되지 않습니다.
ControlType 자동화 요소가 나타내는 컨트롤 형식을 식별합니다. 컨트롤 형식에 대한 지식에서 중요한 정보를 유추할 수 있습니다. 자세한 내용은 UI Automation Control Types Overview을 참조하세요.
속성 자동화 요소의 용도를 식별하거나 설명하는 텍스트 문자열입니다. 지역화할 수 있으므로 주의해서 사용해야 합니다. Name 속성은 형제 간의 고유 식별자가 아닙니다. 테스트 자동화의 경우 클라이언트는 AutomationId 속성 또는 RuntimeId 속성을 대신 사용해야 합니다.
RuntimeId 자동화 요소의 식별자를 나타내는 정수 배열입니다. 식별자는 데스크톱에서 고유하지만 생성된 데스크톱의 UI에만 고유하도록 보장됩니다. 시간이 지남에 따라 식별자를 재사용할 수 있습니다. IUIAutomation::CompareElements를 사용하여 현재 특정 런타임 ID가 있는 요소가 이전에 해당 ID를 가진 요소와 동일한지 확인합니다. 또한 RuntimeId 속성의 형식이 변경 될 수 있습니다. 불투명 값으로 처리하고 비교에만 사용해야 합니다. 예를 들어 자동화 요소가 캐시에 있는지 여부를 확인합니다.

 

검사(Inspect.exe)는 공급자 및 클라이언트 개발 및 디버깅을 위해 UI 자동화 정보를 수집하는 데 사용할 수 있는 Windows 기반 도구입니다. 검사는 Windows SDK(소프트웨어 개발 키트)에 포함되어 있습니다.

UI 자동화 보안 고려 사항