A Benchmark of Data Loss Bugs for Android Apps

Android apps must be able to deal with both stop events, which require immediately stopping the execution of the app without losing state information, and start events, which require resuming the execution of the app at the same point it was stopped. Support to these kinds of events must be explicitly implemented by developers who unfortunately often fail to implement the proper logic for saving and restoring the state of an app. As a consequence apps can lose data when moved to background and then back to foreground (e.g., to answer a call) or when the screen is simply rotated. These faults can be the cause of annoying usability issues and unexpected crashes. This paper presents a public benchmark of 110 data loss faults in Android apps that we systematically collected to facilitate research and experimentation with these problems. The benchmark is available on GitLab and includes the faulty apps, the fixed apps (when available), the test cases to automatically reproduce the problems, and additional information that may help researchers in their tasks.

[1]  Mayur Naik,et al.  Dynodroid: an input generation system for Android apps , 2013, ESEC/FSE 2013.

[2]  Daniela Micucci,et al.  Policy Enforcement with Proactive Libraries , 2017, 2017 IEEE/ACM 12th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[3]  Christoffer Quist Adamsen,et al.  Systematic execution of Android test suites in adverse conditions , 2015, ISSTA.

[4]  Daniela Micucci,et al.  From source code to test cases: A comprehensive benchmark for resource leak detection in Android apps , 2018, Softw. Pract. Exp..

[5]  Daniela Micucci,et al.  Automatic Software Repair: A Survey , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[6]  Sarfraz Khurshid,et al.  Automated Generation of Oracles for Testing User-Interaction Features of Mobile Apps , 2014, 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation.

[7]  Rui Abreu,et al.  MZoltar: automatic debugging of Android applications , 2013, DeMobile 2013.

[8]  Daniela Micucci,et al.  Verifying Policy Enforcers , 2017, RV.

[9]  Ana C. R. Paiva,et al.  Why does the orientation change mess up my Android application? From GUI failures to code faults , 2018, Softw. Test. Verification Reliab..

[10]  Junfeng Yang,et al.  Efficiently, effectively detecting mobile app bugs with AppDoctor , 2014, EuroSys '14.

[11]  Daniela Micucci,et al.  Healing Data Loss Problems in Android Apps , 2016, 2016 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW).

[12]  Xiang Gao,et al.  Android Testing via Synthetic Symbolic Execution , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[13]  Joydeep Mitra,et al.  Ghera: A Repository of Android App Vulnerability Benchmarks , 2017, PROMISE.