Improving Automated GUI Exploration of Android Apps via Static Dependency Analysis
Authors:
- 1 September 2020
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 557-568
Abstract
Exploring GUIs of Android apps plays a key role in many important scenarios such as functional testing (e.g., finding crash errors), security analysis (e.g., identifying malicious behav-iors) and competitive analysis (e.g., storyboarding app features). To automate GUI exploration, existing techniques often try to visit as many GUI pages as possible via specific strategies, e.g., random (like Monkey) or heuristic (like Stoat, A 3 E). However, their effectiveness is still unclear and much under-explored. To this end, we conducted the first study in this paper to understand and characterize their limitations by carefully analyzing the coverage reports from a set of real-world, open-source apps. Through this study, we identified three key limitations due to the lack of dependency knowledge during exploration, i.e., widget-page dependency, widget-widget dependency and system-event dependency. To overcome them, we introduce dependency-informed exploration, an automated approach that leverages static dependency analysis to effectively improve GUI exploration performance. Given an app, our approach first constructs a GUI page transition model that captures the dependencies between GUI widgets, and then guides GUI exploration during a depth-first traversal. We realized our approach as a tool named Gesda, and evaluated it on 70 open-source Android apps. The results show Gesda outperforms existing state-of-the-art GUI exploration techniques, i.e., Monkey and Stoat. Additionally, Gesda uncovers 4 previously unknown crashes in 4 apps as a by-product of GUI exploration due to the benefit of dependency knowledge, while Monkey and Stoat have not discovered them.Keywords
This publication has 32 references indexed in Scilit:
- SIG-Droid: Automated system input generation for Android applications2015
- Automated Test Input Generation for Android: Are We There Yet? (E)2015
- Static Window Transition Graphs for Android (T)2015
- IccTA: Detecting Inter-Component Privacy Leaks in Android Apps2015
- Composite Constant Propagation: Application to Android Inter-Component Communication Analysis2015
- PUMA2014
- Targeted and depth-first exploration for systematic testing of android apps2013
- Behavioral Analysis of Android Applications Using Automated Instrumentation2013
- AnDarwin: Scalable Detection of Semantically Similar Android Applications2013
- Attack of the Clones: Detecting Cloned Applications on Android Markets2012