Cheng, Yaxin2022-08-172022-08-172022-08-172022-08-06http://hdl.handle.net/10012/18556Ape is the state-of-the-art Android GUI testing tool, which implements a dynamic model internally to guide the testing process. At the time of writing, Ape was one of the most effective Android testing tools. Ape’s interactions with Android devices partially rely on private APIs, which made it difficult to support newer Android versions. Aiming to solve this problem, we adopted Appium as the interaction layer. However, the introduction of Appium distorted Ape into a server-client structure, which brought a huge overhead and severely affected the efficiency. Besides, Ape naturally tries to test all widgets. Neverthe- less, in scenarios where an application only needs to be partially tested, such strategy limits the effectiveness due to the inability to prioritize activities of interest. In this study, we introduce Ape+, which boosts the efficiency of Ape but avoids using private Android APIs. We reconstruct Ape as a monolithic on-device testing tool by re- placing Appium, the communication layer between Ape and the device, with UiAutomator. We solved technical challenges, such as supporting drag function and fetching current ac- tivity names, and experiments show that efficiency improvements among the applications are between 10% to 40% compare to Ape with Appium. We also analyze different static analyses tools to find the one whose static model is informative enough to bring extra knowledge to Ape for activity prioritization. Using in- strumentation, we improve the accuracy of widget matching, which is an essential step to bridge the gap between the dynamic model and the static one and combine both synergis- tically. We also introduce a priority decay strategy to mitigate false information produced by static analysis, and a path finding algorithm to help Ape+ navigate between activities using both models. Our experiments show, for two selected applications with informative models, Ape+ is able to cover every activity 37% and 57% faster. We believe that Ape+ is a decent testbed with maintainability and extensibility for conducting research on automated Android GUI testing in the future.enandroid gui testingautomated testingmodel-based testingstatic analysisApe+: A Faster Ape with Static Model Guided ExplorationMaster Thesis