Overview of Automatically Discovering, Reporting, and Reproducing Android Application Crashes
The paper presents an innovative approach to handling the critical aspect of mobile application development concerning the discovery, reporting, and reproduction of application crashes. The proposed system, named ``CrashScope," is tailored for Android apps and leverages automated methodologies to address prevailing challenges faced by developers due to the event-driven nature of mobile GUIs and diverse input sources such as sensors. This work reflects the increasing need for robust maintenance frameworks in an ever-expanding mobile app ecosystem.
Methodology
CrashScope is built around a systematic input generation algorithm that integrates both static and dynamic analyses aimed at triggering application faults. When a crash is detected, the system formulates comprehensive crash reports enriched with features to facilitate accurate reproduction. The reports include screenshots, detailed steps for reproducing the crash, exception stack traces, and executable scripts capable of replaying the crash on specific devices. Importantly, CrashScope operates without instrumenting the application or the operating system, requiring only the app's APK file and suitable execution environments.
Evaluation
The effectiveness of CrashScope was evaluated alongside five state-of-the-art tools through testing on 61 Android applications. Various metrics were considered, including crash detection efficiency and the depth of information captured within reports. Results indicate that while CrashScope's crash discovery rate is comparable to existing tools, its capability for providing more detailed fault information is noteworthy. Moreover, a user paper focusing on eight real-world app crashes highlighted the utility of the generated crash reports, which proved superior in readability and reproduction accuracy compared to human-authored reports.
Core Contributions
- Automated Crash Report Generation: To the best of existing knowledge, CrashScope is the first system to automatically produce expressive and detailed crash reports for mobile apps. This involves no manual intervention beyond interpreting the generated reports, showcasing a practical advancement within automated testing paradigms.
- Evaluation Against Existing Tools: Comprehensive evaluations against other methods, including Dynodroid, Gui-Ripper, PUMA, A3E, and Monkey, underscore CrashScope's efficacy in crash detection. Despite achieving similar detection rates, the ease of use and detailed output position CrashScope as a favorable choice for developers.
- User Study on Report Effectiveness: The comparative paper on crash report readability and reproducibility indicates that generated reports outperform those written by developers. This result suggests a potential reduction in developer effort when addressing application faults.
- Public Availability of the Dataset: To aid further research, the experimental dataset and crash report samples are made available in an online appendix, promoting transparency and reproducibility in subsequent investigations.
Implications and Future Work
CrashScope promises substantial practical benefits by reducing the developer workload associated with bug fixing and enhancing the reliability of applications through systematic fault detection. In terms of theoretical implications, it advances current discourse on the utility of automated systems in mobile testing applications. Future directions might involve optimizing report generation to include only vital reproduction steps, integrating advanced GUI testing methodologies, and exploring symbolic execution techniques to handle highly specialized inputs robustly.
In conclusion, CrashScope represents a sophisticated tool in the domain of mobile application testing, bridging gaps in developer needs for reliable crash reports and extending capabilities of existing automatic testing frameworks.