Distributed GUI testing of iOS applications with HadoopUnit
MetadataShow full item record
Smartphones have become an important medium of communication for millions of people. They have come to expect high-quality mobile applications, which have increased the importance of software testing in modern software development. While software testing can ensure the quality of a system under test (SUT), it has suffered from lengthy execution time, especially for system-level GUI testing. In general, system-level GUI testing can be time-consuming because it requires walking through every user interface element and every possible variation that users could experience through the GUI of the application. In addition, this type of testing exercises the SUT from the outside of the applications, meaning that it has to constantly wait for the drawing of UI components, delays in transitions between different views and animations throughout the test execution. Currently with UI Automation, a popular testing framework from Apple for iOS applications, test execution of iOS GUI test suites can take an hour or more to execute if the GUI of the application is complicated. This amount of time is significant if the testing needs to be performed frequently throughout the software development life cycle. More time means less frequent testing, which in turn reduces software quality. In this thesis, the test process is accelerated by migrating the current test execution environment to a distributed execution environment called HadoopUnit. HadoopUnit has been adopted to perform GUI testing of iOS applications on a small-scale Hadoop cluster. Experimental results have shown that distributed test execution with HadoopUnit can significantly outperform the test execution on a single machine, even if the size of the cluster used for the execution is as small as two nodes. This means that the work of this thesis could be adopted without a huge investment in IT resources, making HadoopUnit a cost-effective solution for reducing lengthy test execution time of system-level GUI testing.