Date of this Version
Testing is an effective means for assuring the quality of software. In programs with Graphical User Interfaces (GUIs), event sequences serve as test cases for executing system tests. To aid in the test generation process, researchers have developed methods that automatically derive graph models from GUIs, which can then be traversed to create sequences for testing. Recent advances using these graph models incorporate combinatorial interaction testing sampling techniques to generate longer GUI test cases, which exercise more event interactions and have been shown to improve fault detection. However, because the models extracted are only approximations of the actual event interactions, the generated test cases might suffer from problems of infeasibility. Specifically, widgets or buttons can become disabled, or the events cannot be dispatched once triggered, causing the test cases to terminate prematurely. These problems are caused by violations of temporal constraints on the event interaction sequences. The lack of awareness of these constraints during GUI test generation means that coverage of the event interactions may be lost, potentially weakening the fault detection effectiveness and reducing the quality of the generated GUI test suites.
In this work, we propose a framework for automatically repairing GUI test suites that contain infeasible sequences. We begin by identifying the set of infeasible patterns that we expect to see in GUIs. We then develop a genetic algorithm for test suite repair. An evaluation on small-sized synthetic GUI subjects demonstrates that our technique is able to cover over 99% of the full combinatorial coverage of the events in these subjects and it outperforms a random algorithm for the same purpose. We then apply this technique to some non-trivial GUI subjects, and show that it is able to increase the combinatorial coverage of test suites for non-trivial GUIs to 98% of their feasible coverage, and that the types of constraints discovered match those that we have previously identified.