자동화된 테스트를 위해 UI 자동화 사용
참고 |
---|
이 문서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI Automation 클래스를 사용하려는 .NET Framework 개발자를 위해 작성되었습니다.UI Automation에 대한 최신 정보는 Windows Automation API: UI Automation을 참조하십시오. |
이 개요에서는 자동화된 테스트 시나리오에서 프로그래밍 방식 액세스를 위한 프레임워크로 Microsoft UI Automation를 사용하는 방법에 대해 설명합니다.
UI Automation에서 제공하는 통합 개체 모델을 통해 모든 user interface (UI) 프레임워크에서 다양하고 복잡한 기능을 액세스 가능하고 쉽게 자동화되는 방식으로 노출할 수 있습니다.
UI Automation는 Microsoft Active Accessibility의 뒤를 잇는 제품으로 개발되었습니다. Active Accessibility는 컨트롤 및 응용 프로그램에서 내게 필요한 옵션을 지원하는 솔루션을 제공하도록 디자인된 기존 프레임워크입니다. 내게 필요한 옵션과 자동화의 요구 사항이 서로 매우 비슷하기 때문에 Active Accessibility가 테스트 자동화의 용도로도 사용되지만 처음부터 테스트 자동화를 고려하여 디자인된 것은 아닙니다. 내게 필요한 옵션을 위한 보다 정교한 솔루션을 제공하는 것 외에도 UI Automation는 특히 자동화된 테스트를 위한 강력한 기능을 제공하도록 디자인되었습니다. 예를 들어 Active Accessibility는 UI 정보를 노출하고 AT 제품에 필요한 정보를 수집하는 데 단일 인터페이스를 사용하는 반면 UI Automation는 두 모델을 구분합니다.
자동화된 테스트 도구로서 유용한 UI Automation를 구현하려면 공급자와 클라이언트가 모두 필요합니다. UI 자동화 공급자는 Microsoft Word, Excel 등의 응용 프로그램 및 Microsoft Windows 운영 체제를 기반으로 하는 기타 타사 응용 프로그램 또는 컨트롤이 될 수 있습니다. UI 자동화 클라이언트에는 자동화된 테스트 스크립트와 보조 기술 응용 프로그램이 포함됩니다.
참고 |
---|
이 개요는 UI Automation의 새롭게 개선된 자동화된 테스트 기능을 보여 주기 위한 것으로,내게 필요한 옵션 기능에 대한 정보는 제공하지 않습니다. 내게 필요한 옵션에 대해서는 꼭 필요한 경우에만 다룹니다. |
이 항목에는 다음 단원이 포함되어 있습니다.
- 공급자의 UI 자동화
- 클라이언트의 UI 자동화
- 관련 도구 및 기술
- 보안
- 관련 항목
공급자의 UI 자동화
UI를 자동화하기 위해 응용 프로그램 또는 컨트롤 개발자는 최종 사용자가 표준 키보드 및 마우스 상호 작용을 통해 UI 개체에 수행할 수 있는 작업이 무엇인지 검토해야 합니다.
이러한 핵심 작업을 확인한 후 컨트롤에 해당 UI Automation 컨트롤 패턴(UI 요소의 기능과 동작을 미러링하는 컨트롤 패턴)을 구현해야 합니다. 예를 들어 사용자가 콤보 상자 컨트롤(예: 실행 대화 상자)에 수행하는 작업에는 콤보 상자를 확장 또는 축소하여 항목 목록을 숨기거나 표시하고, 목록에서 항목을 선택하고, 키보드 입력을 통해 새 값을 추가하는 것 등이 있습니다.
참고 |
---|
다른 내게 필요한 옵션 모델을 사용할 경우에는 개발자가 개별 단추나 메뉴 또는 기타 컨트롤에서 직접 정보를 수집해야 합니다.그런데 모든 컨트롤 형식은 약간씩 변형된 다양한 형태로 나타납니다.다시 말해, 10가지로 변형된 누름 단추가 모두 같은 방식으로 작동하고 같은 기능을 수행하더라도 각각 고유한 컨트롤로 취급되어야 합니다.이러한 컨트롤의 기능이 동일하다는 것을 확인할 수는 없습니다.컨트롤 패턴은 이러한 공통적인 컨트롤 동작을 나타내기 위해 개발되었습니다.자세한 내용은 UI 자동화 컨트롤 패턴 개요를 참조하십시오. |
UI 자동화 구현
앞에서도 언급했듯이 UI Automation에서 제공하는 통합 모델이 없는 경우 테스트 도구와 개발자가 프레임워크에 있는 컨트롤의 속성과 동작을 노출하려면 해당 프레임워크에 대한 정보를 알고 있어야 합니다. Windows 운영 체제 내에서 단일 시점에 제공되는 UI 프레임워크는 Win32, Windows Forms, Windows Presentation Foundation (WPF) 등으로 다양하므로 비슷해 보이는 컨트롤이 있는 여러 개의 응용 프로그램을 테스트하는 것은 매우 어려운 작업이 될 수 있습니다. 예를 들어 다음 표에서는 단추 컨트롤과 연결된 이름(또는 텍스트)을 검색하는 데 필요한 프레임워크별 속성 이름을 나열하고 이러한 속성에 해당하는 단일 UI Automation 속성을 보여 줍니다.
UI 자동화 컨트롤 형식 |
UI 프레임워크 |
프레임워크별 속성 |
UI 자동화 속성 |
---|---|---|---|
Button |
Windows Presentation Foundation |
Content |
NameProperty |
Button |
Win32 |
Caption |
NameProperty |
Image |
HTML |
alt |
NameProperty |
UI 자동화 공급자는 해당 컨트롤의 프레임워크별 속성을 해당 UI Automation 속성에 매핑하는 작업을 담당합니다.
공급자의 UI Automation 구현에 대한 자세한 내용은 관리 코드에 대한 UI 자동화 공급자를 참조하십시오. 컨트롤 패턴의 구현에 대한 자세한 내용은 UI 자동화 컨트롤 패턴 및 UI 자동화 텍스트 패턴을 참조하십시오.
클라이언트의 UI 자동화
대부분의 자동화된 테스트 도구 및 시나리오의 목적은 사용자 인터페이스를 일관되며 반복 가능한 방식으로 조작하는 데 있습니다. 여기에는 특정 컨트롤 단위 테스트에서 컨트롤 그룹에 대한 일련의 일반적인 작업을 수행하는 동안 반복되는 테스트 스크립트의 기록 및 재생 작업까지 포함됩니다.
테스트와 테스트의 동적 대상을 동기화하는 데 어려움이 따르므로 자동화된 응용 프로그램이 복잡해집니다. Windows 작업 관리자에 포함되어 있으며 현재 실행 중인 응용 프로그램을 표시하는 목록 상자 컨트롤을 예로 들 수 있습니다. 이 목록 상자의 항목은 테스트 응용 프로그램의 제어를 받지 않는 외부에서 동적으로 업데이트되므로 목록 상자의 특정 항목을 일관된 방식으로 선택하는 것이 불가능합니다. 테스트 응용 프로그램의 제어를 받지 않는 외부의 UI에서 단순한 포커스 변경을 반복하려는 경우에도 비슷한 문제가 발생할 수 있습니다.
프로그래밍 방식 액세스
프로그래밍 방식으로 액세스하면 일반적인 마우스 및 키보드 입력을 통한 모든 상호 작용 및 사용 환경을 코드로 모방할 수 있습니다. UI Automation에서는 5가지 구성 요소를 통해 프로그래밍 방식의 액세스를 제공합니다.
UI Automation 트리는 UI 구조를 통한 탐색을 지원합니다. 트리는 hWnd의 컬렉션으로 만들어집니다. 자세한 내용은 UI 자동화 트리 개요를 참조하십시오.
자동화 요소는 UI의 개별 구성 요소입니다. 대개 hWnd보다 세분화되어 있습니다. 자세한 내용은 UI 자동화 컨트롤 형식 개요를 참조하십시오.
자동화 속성은 UI 요소에 대한 구체적인 정보를 제공합니다. 자세한 내용은 UI 자동화 속성 개요를 참조하십시오.
컨트롤 패턴은 컨트롤 기능의 특정 측면을 정의하며 속성, 메서드, 이벤트 및 구조 정보로 구성됩니다. 자세한 내용은 UI 자동화 컨트롤 패턴 개요를 참조하십시오.
자동화 이벤트는 이벤트 알림 및 정보를 제공합니다. 자세한 내용은 UI 자동화 이벤트 개요를 참조하십시오.
테스트 자동화의 주요 속성
UI 내에서 컨트롤을 고유하게 식별하여 찾을 수 있는 기능을 바탕으로 자동화된 테스트 응용 프로그램이 해당 UI에 대해 작동하게 됩니다. 이를 지원하기 위해 클라이언트 및 공급자에 사용되는 여러 가지 Microsoft UI Automation 속성이 있습니다.
AutomationID
자동화 요소를 해당 형제 요소와 구별하여 고유하게 식별합니다. 제품이 여러 언어로 제공되는 경우 일반적으로 지역화되는 NameProperty 등의 속성과 달리 AutomationIdProperty는 지역화되지 않습니다. AutomationID 속성 사용를 참조하십시오.
참고 |
---|
AutomationIdProperty는 전체 자동화 트리에서 고유 ID가 사용되도록 보장하지 않습니다.예를 들어 여러 개의 상위 수준 메뉴 항목과 그 아래에 다시 여러 개의 자식 메뉴 항목이 포함된 메뉴 컨트롤이 응용 프로그램에 있을 수 있습니다.이러한 하위 메뉴 항목은 "Item1, Item2, Item3 등"의 일반적인 체계로 식별되어 여러 상위 수준 메뉴 항목의 해당 자식 항목에 대해 ID가 중복 사용될 수 있습니다. |
ControlType
자동화 요소에서 나타내는 컨트롤의 형식을 식별합니다. 컨트롤의 형식을 알고 있으면 중요한 정보를 유추할 수 있습니다. UI 자동화 컨트롤 형식 개요를 참조하십시오.
NameProperty
컨트롤을 식별하거나 설명하는 텍스트 문자열입니다. NameProperty는 지역화될 수 있으므로 주의해서 사용해야 합니다. UI 자동화 속성 개요를 참조하십시오.
테스트 응용 프로그램에서 UI 자동화 구현
UI 자동화 참조 추가 |
UI 자동화 클라이언트에 필요한 UI Automation dll은 다음과 같습니다.
|
System.Windows.Automation 네임스페이스 추가 |
이 네임스페이스에는 UI 자동화 클라이언트에서 텍스트 처리를 제외한 UI Automation의 기능을 사용하는 데 필요한 모든 항목이 들어 있습니다. |
System.Windows.Automation.Text 네임스페이스 추가 |
이 네임스페이스에는 UI 자동화 클라이언트에서 텍스트 처리를 제외한 UI Automation의 기능을 사용하는 데 필요한 모든 항목이 들어 있습니다. |
필요한 컨트롤 찾기 |
자동화된 테스트 스크립트가 자동화 트리 내의 필요한 컨트롤을 나타내는 UI 자동화 요소를 찾습니다. 코드를 사용하여 UI 자동화 요소를 얻는 데는 여러 가지 방법이 있습니다.
참고
AutomationIdProperty 는 컨트롤의 UI Automation 속성을 항목별로 정리할 수 있는 UISpy.exe (UI Spy) 등의 도구를 사용하여 가져올 수 있습니다.
UI 자동화 요소 가져오기를 참조하십시오. |
컨트롤 패턴 가져오기 |
컨트롤 패턴은 기능이 비슷한 컨트롤의 공통된 동작을 노출합니다. 자동화된 테스트 스크립트에서는 테스트가 필요한 컨트롤을 찾은 다음 해당 UI 자동화 요소로부터 필요한 컨트롤 패턴을 얻습니다. 예를 들어 일반적인 단추 기능을 위해서는 InvokePattern 컨트롤 패턴을 가져오고, 창 기능을 위해서는 WindowPattern 컨트롤 패턴을 가져옵니다. UI 자동화 컨트롤 패턴 개요를 참조하십시오. |
UI 자동화 |
이제 자동화된 테스트 스크립트가 UI Automation 컨트롤 패턴에 의해 노출되는 정보와 기능을 사용하여 UI 프레임워크에서 임의의 UI를 제어할 수 있습니다. |
관련 도구 및 기술
UI Automation를 사용하여 자동화된 테스트를 지원하는 많은 관련 도구와 기술이 있습니다.
UISpy.exe (UI Spy)는 공급자와 클라이언트 개발 및 디버깅 모두에 필요한 UI Automation 정보를 수집하는 데 사용할 수 있는 graphical user interface (GUI) 응용 프로그램입니다. UI Spy는 Windows Software Development Kit (SDK)에 포함되어 있습니다.
UIAutoCmd는 UI Spy와 비슷한 기능의 명령줄 도구입니다.
MSAABridge는 Active Accessibility 클라이언트에 UI Automation 정보를 노출합니다. UI Automation를 Active Accessibility에 연결하는 주요 목적은 기존 Active Accessibility 클라이언트가 UI Automation가 구현된 모든 프레임워크와 상호 작용하도록 지원하는 데 있습니다.
보안
보안에 대한 자세한 내용은 UI 자동화 보안 개요를 참조하십시오.