Graphical user interfaces are pervasive in modern software systems, and to ensure their quality it is important to test them. Because manual creation and execution of test cases is expensive, researchers have attempted to create GUI testing techniques that automate the processes of generating and executing test cases. In GUI testing, however, execution results of testing techniques are largely affected by the configuration of the prototype tools such as the granularity of events and input parameters, which make it difficult to compare different classes of techniques fairly. To overcome this situation, we need to be able to compare GUI testing techniques under the same environment and the ability to capture events for equivalent GUI states.
In this thesis, we develop a new GUI testing framework, {\sc GUITester}, based on a plug-in architecture, which enables people to extend each component of the framework, and provide a way for users to explore GUIs of an AUT (Application Under Test), configure events, and test the AUT. A plugin-based flexible architecture makes allows researchers to implement and assess various GUI testing techniques easily.
To provide evidence that our framework is effective, we exploit the framework to study the relative strengths of two primary classes of automated GUI testing approaches, those based on static models and those based on dynamic event-extraction, showing that our framework can support developing and comparing various GUI testing techniques. Our study reveals several cost and effectiveness tradeoffs between the techniques, with implications for research and practice. Finally, we propose a new GUI testing technique that uses runtime feedback information and software analysis techniques to avoid redundant event executions, providing evidence that our framework can help researchers develop and implement techniques that require complicated processes.
최근 개발되는 대부분의 소프트웨어 시스템들이 대부분 그래픽 사용자 인터페이스(GUI)들을 지원하고 있기 때문에 소프트웨어 시스템들의 품질을 보증하기 위해서 GUI에 대한 테스트가 중요하다. 테스트케이스의 생성과 실행에 드는 비용이 크기 때문에 연구자들은 자동화된 GUI 테스팅 기법에 대한 연구를 해왔다. 하지만 GUI 테스팅 기법의 실행 결과는 이벤트의 종류와 입력 매개변수 등과 같은 설정 값 크게 영향을 받기 때문에 서로 다른 기법 간에 공정한 비교가 어렵다. 이를 개선하기 위해서는 동일한 환경과 동일한 이벤트 획득 능력 에서 GUI 테스팅 기법들이 비교될 수 있어야 한다.
본 학위논문에서는 플러그인(plug-in) 아키텍쳐 기반의 새로운 GUI 테스팅 프레임워크(framework)를 개발한다. 제안하는 프레임워크의 각 컴포넌트(component)는 원하는 대로 확장이 가능하다. 그리고 프레임워크의 GUI와 시각적인 도구 설정 지원으로 대상 어플리케이션의 이벤트를 탐색하거나 설정이 편리하다. 또한, 플러그인 기반의 유연한 아키텍처는 연구자로 하여금 다양한 GUI 테스팅 기법을 쉽게 구현하고 평가 수 있게 한다.
제안하는 프레임워크가 효과적임을 보이기 위해서, 제안한 프레임워크를 (정적인 모델과 동적인 이벤트 추출에 기반을 둔) 두 가지 주요 자동화 GUI 테스팅의 상대적인 능력을 이해하는 데 이용하여 제안한 프레임워크가 다양한 기법의 개발과 비교를 지원할 수 있음을 보인다. 비교 실험을 통하여 두 기법 사이에 비용 효과 측면에서 경쟁 우선순위(trade off)가 있음을 보이고 연구와 실무에서 고려해야 할 점을 밝힌다. 또한, 실시간 피드백(feedback) 정보와 소프트웨어 분석 기법을 이용하여 불필요한 이벤트 수행을 피하는 새로운 GUI 테스팅 기법을 제안하고 기법을 프레임워크 기반하에 구현함으로써, 제안하는 프레임워크가 복잡한 프로세스를 요구하는 기법의 개발과 구현도 효과적으로 지원함을 보인다.