Using GUI Run-Time State as Feedback to Generate Test Cases

TitleUsing GUI Run-Time State as Feedback to Generate Test Cases
Publication TypeConference Papers
Year of Publication2007
AuthorsYuan X, Memon AM
Conference NameSoftware Engineering, 2007. ICSE 2007. 29th International Conference on
Date Published2007/05//
Keywordsapplication under test, automated test case generation, Feedback, feedback-based technique, Graphical user interfaces, GUI run-time state, model-driven technique, open-source software, program testing, public domain software, reverse engineering, reverse-engineering algorithm, seed test suite

This paper presents a new automated model-driven technique to generate test cases by using feedback from the execution of a "seed test suite" on an application under test (AUT). The test cases in the seed suite are designed to be generated automatically and executed very quickly. During their execution, feedback obtained from the AUT's run-time state is used to generate new, "improved" test cases. The new test cases subsequently become part of the seed suite. This "anytime technique" continues iteratively, generating and executing additional test cases until resources are exhausted or testing goals have been met. The feedback-based technique is demonstrated for automated testing of graphical user interfaces (GUIs). An existing abstract model of the GUI is used to automatically generate the seed test suite. It is executed; during its execution, state changes in the GUI pinpoint important relationships between GUI events, which evolve the model and help to generate new test cases. Together with a reverse- engineering algorithm used to obtain the initial model and seed suite, the feedback-based technique yields a fully automatic, end-to-end GUI testing process. A feasibility study on four large fielded open-source software (OSS) applications demonstrates that this process is able to significantly improve existing techniques and help identify/report serious problems in the OSS. In response, these problems have been fixed by the developers of the OSS in subsequent versions.