데스크톱 응용 프로그램을위한 UI 자동화 패턴 및 모범 사례


9

배경

현재 MS Office 플러그인에 대한 일부 테스트를 자동화하고 있습니다. VS 2010에서 코딩 된 UI 테스트를 만들고 있습니다. " 코딩 된 UI 테스트 빌더 "도구를 사용할 수 있지만 실제로는 특정 상황에 맞지 않습니다.

이 때문에 다른 액션 기능을 추가하는 각 UI 컨트롤 / 맵에 대해 고유 한 UI 맵 클래스 및 확장 메서드를 만들었습니다. 예를 들어 버튼을 누르거나 일부 UI 값을 지정하십시오.

테스트 사례의 시나리오는 테스트 클래스에 있습니다.

저는이 분야에서 새로운 사람이며 자동화 테스터로 일하는 것도 처음입니다.

질문

프로그래밍 / 디자인 관점에서 데스크톱 응용 프로그램의 테스트 자동화를위한 모범 사례에 대한 경험과 조언을 공유 할만큼 친절합니까?


저의 주요 역할 중 하나는 UI 자동화입니다.이 질문을 읽다가 수십 배를 잃었습니다. 나는 당신이 사용한 기술 용어의 절반이 무엇을 의미하는지 전혀 모른다. 이 질문은 일부 환경이나 언어에만 해당됩니까? 아마도 태그 여야합니다.
Sparr

@Sparr 질문을보다 쉽게 ​​접근 할 수 있도록 편집했습니다. 그것이 여전히 요구 사항에 부합되기를 바랍니다.
게리 로우

답변:


6

UI 자동화 테스트의 모범 사례는 가능한 한 적은 작업을 수행하는 것입니다. UI가 자주 변경되므로 지속적으로 자동화를 업데이트해야합니다. UI 자동화없이 자동 테스트를 수행 할 수있는 방식으로 제품 코드를 구성하는 것이 일반적으로 바람직합니다.

즉, 항상 UI 자동화를 제거 할 수는 없습니다. 당신은 office를 언급하므로 Windows 용으로 코딩하고 .Net을 사용한다고 가정합니다. 나는 현재 직장에서 꽤 많은 일을합니다. 여기 내가 배운 것들이 있습니다.

1) .Net 3.0에 도입 된 UIAutomation 라이브러리를보십시오. 자동화를 위해 광범위하고 상당히 사용하기 쉬운 라이브러리를 제공합니다. (http://msdn.microsoft.com/en-us/library/ms753107.aspx)

2) UISpy 다운로드 (http://msdn.microsoft.com/en-us/library/ms727247.aspx)

3) 제품의 UI를 자동화하십시오.

3a) WPF 인 경우 AutomationID를 모든 것에 배치하십시오.

3b) 고유 한 제어 및 창 클래스 이름 (소스 코드 클래스 이름이 아닌 UI 클래스 이름)을 작성하십시오. 무슨 뜻인지 모르면 UI Spy를로드하고 창을보기 시작하십시오. 클래스 이름이 # 32770 인 여러 앱의 여러 창에 주목하십시오. Windows 대화 상자의 클래스 이름입니다. 대화 상자를 확장하고 자체 이름을 설정하지 않은 모든 창은 기본적으로이 값으로 설정됩니다. 이것은 UI 자동화 관점에서 모든 종류의 슬픔을 유발합니다.

4) Thread.Sleep () 문을 피하십시오. 대신 웨이터를 사용하십시오 (UIAutomation 문서 참조).

5) 테스트 코드와 UI 자동화 코드를 절대로 섞지 마십시오. UI 자동화를 수행하기 위해 별도의 라이브러리를 작성하십시오. 테스트에서이 라이브러리를 호출하십시오. UI가 변경되면 자동화를 훨씬 쉽게 업데이트 할 수 있습니다.

6) 이벤트를 발생시키는 조치를 수행하기 전에 항상 UI 이벤트에 대한 리스너를 등록하십시오. 실제로 이것은 스레드로 작업하고 있음을 의미합니다.

6a) 예 : 창을 열기 위해 단추를 클릭 한 후 창 열기 이벤트를 기다리지 마십시오. 웨이터가 등록되기 전에 창이 열리고 이벤트를받지 않습니다.

7) 방금 연 창을 원하는 창이라고 가정하지 마십시오. Windows에서 모든 종류의 창이 예기치 않게 열립니다.

나는 더 갈 수 있지만 이것은 점점 길어지고 있습니다.


1)-3) 테스트 대상 응용 프로그램을 작성하는 사람들을위한 것입니다. 6) 저도 열심히 배웠습니다. :)
Andreas Reiff

2

재사용 가능한 사용 사례에서 기능 테스트 구축

응용 프로그램을 엔드 투 엔드로 테스트해야 할 시점이되면 기능 테스트를 수행하는 것입니다. 일반적으로 테스트 할 요구 사항이 있으며이를 나타내는 다양한 사용 사례를 구성 할 수 있습니다.

예를 들어 "표준 사용자로 로그인"사용 사례를 고려하십시오. 테스트 프레임 워크는 응용 프로그램을 시작하고 로그인 화면을 기다렸다가 자격 증명을 입력 한 후 로그인 버튼을 클릭하고 해당 화면에 로그인에 성공했음을 표시합니다.

"표준 사용자로 로그인"사용 사례를 완료 한 후에는 "내 사용자 세부 정보 편집"사용 사례와 같은 다른 작업을 수행 할 수 있습니다. "표준 사용자로 로그인"사용 사례에서 모든 코드를 반복하고 싶지 않으므로 해당 비트를 수행하는 테스트 프레임 워크 코드를 참조하면됩니다.

이것은 어떤 종류의 초과 기능 테스트 가 있음을 의미합니다. 사용 사례 목록을 포함하는 . 이 유스 케이스에는 테스트 프레임 워크 메소드가 포함되어있어 애플리케이션 동작을 발생시키고 (버튼 X 클릭) 동작을 확인하십시오 (화면이 파란색으로 변함).

전반적으로 특정 시퀀스를 대상으로 특정 응답을 테스트하는 재사용 가능한 사용 사례를 구축 한 다음 비즈니스 요구 사항과 밀접한 관련이있는 다양한 기능 테스트로 집계 할 수 있습니다. 일단 그 위치에 도달하면 전체 빌드 프로세스완전히 자동화 할 수 있는 좋은 위치에 있습니다 .

더 자세히 읽고 싶다면 이 접근법에 대해 다른 곳에서 작성했지만 기사는 요청한 데스크톱 응용 프로그램이 아닌 Java 웹 응용 프로그램 (Maven 및 SeleniumRC 사용)을 대상으로합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.