Off-campus UNL users: To download campus access dissertations, please use the following link to log into our proxy server with your NU ID and password. When you are done browsing please remember to return to this page and log out.
Non-UNL users: Please talk to your librarian about requesting this dissertation through interlibrary loan.
Automated GUI Testing and Program Repair: A Family of Techniques
Automated model based GUI (graphical user interface) testing has been shown to be effective at finding faults, making it a powerful system testing approach. However, it suffers from several problems such as (1) test instability; (2) test scalability and (3) test infeasibility. Moreover, once faults are found, there are no automated GUI program repair techniques to help fix them, meaning that patches must be manually created. In this dissertation, we aim to find solutions to these problems. For test instability, we identify a set of factors that impact the repeatability of testing results across three different layers of the applications. We present a large empirical study across a range of platforms that measures the impact that these factors have on different types of test outputs and propose a set of practical steps that one can take when comparing different test runs to ensure higher repeatability. For test scalability, we have proposed a new partitioning technique to reduce the event flow graph based only on GUI structure. We present an empirical study on five open source applications showing that we can reduce the number of tests by as much as 97.2% and test suite runtimes by days using partitioning, with only a small decrease in code coverage (< 11.8%) and fault detection capability (10%). For test infeasibility, we create a new test augmentation technique aimed at increasing coverage of the test suite. A performance comparison between our technique and an existing test augmentation technique shows that our new augmentation approach has the same effectiveness as the existing technique but improves efficiency. Finally, for program repair, we empirically explore the feasibility of automatically repairing faults detected in GUI applications. Through the analysis of 290 real GUI bugs, their human written patches, and four state of the art automated program repair techniques, we find that we can adapt existing techniques to work in a GUI test harness, however, most bugs still cannot be repaired. The reasons are due mostly to the complexity of the real GUI bugs and limitations of the repair techniques, and/or limits of the existing testing harness. We end with a set of challenges to guide future research in automated GUI program repair.
Liang, Yalan, "Automated GUI Testing and Program Repair: A Family of Techniques" (2018). ETD collection for University of Nebraska-Lincoln. AAI10846081.