[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2592798.2592813acmconferencesArticle/Chapter ViewAbstractPublication PageseurosysConference Proceedingsconference-collections
research-article

Efficiently, effectively detecting mobile app bugs with AppDoctor

Published: 14 April 2014 Publication History

Abstract

Mobile apps bring unprecedented levels of convenience, yet they are often buggy, and their bugs offset the convenience the apps bring. A key reason for buggy apps is that they must handle a vast variety of system and user actions such as being randomly killed by the OS to save resources, but app developers, facing tough competitions, lack time to thoroughly test these actions. AppDoctor is a system for efficiently and effectively testing apps against many system and user actions, and helping developers diagnose the resultant bug reports. It quickly screens for potential bugs using approximate execution, which runs much faster than real execution and exposes bugs but may cause false positives. From the reports, AppDoctor automatically verifies most bugs and prunes most false positives, greatly saving manual inspection effort. It uses action slicing to further speed up bug diagnosis. We implement AppDoctor in Android. It operates as a cloud of physical devices or emulators to scale up testing. Evaluation on 53 out of 100 most popular apps in Google Play and 11 of the most popular open-source apps shows that, AppDoctor effectively detects 72 bugs---including two bugs in the Android framework that affect all apps---with quick checking sessions, speeds up testing by 13.3 times, and vastly reduces diagnosis effort.

References

[1]
Activity Class in Android Developers Site. http://developer.android.com/reference/android/app/Activity.html.
[2]
Android Debug Bridge in Android Developers Site. http://developer.android.com/tools/help/adb.html.
[3]
Android instrumentation framework. http://developer.android.com/reference/android/app/Instrumentation.html.
[4]
Building Blocks in Android Developers Site. http://developer.android.com/design/building-blocks/.
[5]
Google Play Hits 1 Million Apps. http://mashable.com/2013/07/24/google-play-1-million.
[6]
Robotium framework for test automation. http://www.robotium.org.
[7]
Testdroid: Automated Testing Tool for Android. http://testdroid.com.
[8]
Agrawal, H., and Horgan, J. R. Dynamic program slicing. In ACM SIGPLAN Notices (1990), vol. 25, ACM, pp. 246--256.
[9]
Amalfitano, D., Fasolino, A. R., Tramontana, P., De Carmine, S., and Memon, A. M. Using GUI ripping for automated testing of Android applications. In Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering (2012), pp. 258--261.
[10]
Anand, S., Naik, M., Harrold, M. J., and Yang, H. Automated concolic testing of smartphone apps. In Proceedings of the 20th ACM SIGSOFT International Symposium on Foundations of Software Engineering (SIGSOFT '12/FSE-20).
[11]
Lock Screen Security Hole Found On Some Android-Powered Samsung Galaxy Phones. http://techcrunch.com/2013/03/20/tell-me-if-youve-heard-this-one-before-lock-screen-security-flaw-found-on-samsungs-android-phones.
[12]
android-apktool. http://code.google.com/p/android-apktool/.
[13]
Burguera, I., Zurutuza, U., and Nadjm-Tehrani, S. Crowdroid: behavior-based malware detection system for Android. In Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices (2011), pp. 15--26.
[14]
Cadar, C., Dunbar, D., and Engler, D. KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In Proceedings of the Eighth Symposium on Operating Systems Design and Implementation (OSDI '08) (Dec. 2008), pp. 209--224.
[15]
Cadar, C., Ganesh, V., Pawlowski, P. M., Dill, D. L., and Engler, D. R. EXE: automatically generating inputs of death. In Proceedings of the 13th ACM conference on Computer and communications security (CCS '06) (Oct.--Nov. 2006), pp. 322--335.
[16]
U.S. government, military to get secure Android phones. http://www.cnn.com/2012/02/03/tech/mobile/government-android-phones.
[17]
Egele, M., Kruegel, C., Kirda, E., and Vigna, G. PiOS: Detecting privacy leaks in iOS applications. In Proceedings of the Network and Distributed System Security Symposium (NDSS '11) (2011).
[18]
Enck, W., Gilbert, P., Chun, B.-G., Cox, L. P., Jung, J., McDaniel, P., and Sheth, A. N. TaintDroid: an information-flow tracking system for realtime privacy monitoring on smartphones. In Proceedings of the Ninth Symposium on Operating Systems Design and Implementation (OSDI '10) (2010), pp. 1--6.
[19]
Ganov, S., Killmar, C., Khurshid, S., and Perry, D. E. Event listener analysis and symbolic execution for testing GUI applications. In Proceedings of the 11th International Conference on Formal Engineering Methods: Formal Methods and Software Engineering (2009), ICFEM '09.
[20]
Georges, A., Christiaens, M., Ronsse, M., and De Bosschere, K. JaRec: a portable record/replay environment for multi-threaded Java applications. Softw. Pract. Exper. 34, 6 (2004), 523--547.
[21]
Godefroid, P. Model checking for programming languages using verisoft. In Proceedings of the 24th Annual Symposium on Principles of Programming Languages (POPL '97) (Jan. 1997), pp. 174--186.
[22]
Godefroid, P., Klarlund, N., and Sen, K. DART: Directed automated random testing. In Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation (PLDI '05) (June 2005), pp. 213--223.
[23]
Gomez, L., Neamtiu, I., Azim, T., and Millstein, T. RERAN: timing- and touch-sensitive record and replay for Android. In Proceedings of the 35rd International Conference on Software Engineering (ICSE '13) (2013), pp. 72--81.
[24]
Google Play. https://play.google.com/store.
[25]
Grace, M., Zhou, Y., Zhang, Q., Zou, S., and Jiang, X. RiskRanker: scalable and accurate zero-day Android malware detection. In Proceedings of the 10th international conference on Mobile systems, applications, and services (2012), pp. 281--294.
[26]
Guo, H., Wu, M., Zhou, L., Hu, G., Yang, J., and Zhang, L. Practical software model checking via dynamic interface reduction. In Proceedings of the 23rd ACM Symposium on Operating Systems Principles (SOSP '11) (Oct. 2011), pp. 265--278.
[27]
Guo, Z., Wang, X., Tang, J., Liu, X., Xu, Z., Wu, M., Kaashoek, M. F., and Zhang, Z. R2: An application-level kernel for record and replay. In Proceedings of the Eighth Symposium on Operating Systems Design and Implementation (OSDI '08) (Dec. 2008), pp. 193--208.
[28]
Hu, C., and Neamtiu, I. Automating GUI testing for Android applications. In Proceedings of the 6th International Workshop on Automation of Software Test (2011), pp. 77--83.
[29]
Jeon, J., Micinski, K. K., and Foster, J. S. SymDroid: Symbolic execution for Dalvik bytecode.
[30]
Jhala, R., and Majumdar, R. Path slicing. In Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation (PLDI '05) (June 2005), pp. 38--47.
[31]
Khalid, H. On identifying user complaints of iOS apps. In Proceedings of the 35rd International Conference on Software Engineering (ICSE '13) (2013), pp. 1474--1476.
[32]
Killian, C., Anderson, J. W., Jhala, R., and Vahdat, A. Life, death, and the critical transition: Finding liveness bugs in systems code. In Proceedings of the Fourth Symposium on Networked Systems Design and Implementation (NSDI '07) (Apr. 2007), pp. 243--256.
[33]
Korel, B., and Laski, J. Dynamic program slicing. Inf. Process. Lett. 29, 3 (1988), 155--163.
[34]
Laadan, O., Viennot, N., and Nieh, J. Transparent, lightweight application execution replay on commodity multiprocessor operating systems. In Proceedings of the ACM SIGMETRICS Conference on Measurement and Modeling of Computer Systems (SIGMETRICS '10) (June 2010), pp. 155--166.
[35]
Lee, K., Flinn, J., Giuli, T., Noble, B., and Peplin, C. AMC: Verifying User Interface Properties for Vehicular Applications. In Proceeding of the 11th Annual International Conference on Mobile Systems, Applications, and Services (2013), MobiSys '13.
[36]
Ma, X., Huang, P., Jin, X., Wang, P., Park, S., Shen, D., Zhou, Y., Saul, L. K., and Voelker, G. M. eDoctor: Automatically Diagnosing Abnormal Battery Drain Issues on Smartphones. In NSDI'13 (2013).
[37]
Machiry, A., Tahiliani, R., and Naik, M. Dynodroid: an input generation system for android apps. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (2013), ESEC/FSE 2013, pp. 224--234.
[38]
Mirzaei, N., Malek, S., Păsăreanu, C. S., Esfahani, N., and Mahmood, R. Testing Android apps through symbolic execution. In The Java Pathfinder Workshop 2012 (2012), JPF 2012.
[39]
Mirzaei, N., Malek, S., Păsăreanu, C. S., Esfahani, N., and Mahmood, R. Testing Android apps through symbolic execution. SIGSOFT Softw. Eng. Notes 37, 6 (Nov. 2012).
[40]
monkeyrunner. http://developer.android.com/tools/help/monkeyrunner_concepts.html.
[41]
Musuvathi, M., Park, D. Y., Chou, A., Engler, D. R., and Dill, D. L. CMC: A pragmatic approach to model checking real code. In Proceedings of the Fifth Symposium on Operating Systems Design and Implementation (OSDI '02) (Dec. 2002), pp. 75--88.
[42]
Pathak, A., Jindal, A., Hu, Y. C., and Midkiff, S. P. What is keeping my phone awake?: characterizing and detecting no-sleep energy bugs in smartphone apps. In Proceedings of the 10th international conference on Mobile systems, applications, and services (2012), pp. 267--280.
[43]
Ronsse, M., and De Bosschere, K. RecPlay: a fully integrated practical record/replay system. ACM Trans. Comput. Syst. 17, 2 (1999), 133--152.
[44]
Simsa, J., Gibson, G., and Bryant, R. dBug: Systematic Testing of Unmodified Distributed and Multi-Threaded Systems. In The 18th International SPIN Workshop on Model Checking of Software (SPIN'11) (2011), pp. 188--193.
[45]
Takala, T., Katara, M., and Harty, J. Experiences of system-level model-based GUI testing of an Android application. In Proceedings of the 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation (2011), ICST '11.
[46]
Tang, Y., Ames, P., Bhamidipati, S., Bijlani, A., Geambasu, R., and Sarda, N. CleanOS: limiting mobile data exposure with idle eviction. In Proceedings of the Tenth Symposium on Operating Systems Design and Implementation (OSDI '12) (2012), pp. 77--91.
[47]
UI/Application Exerciser Monkey. http://developer.android.com/tools/help/monkey.html.
[48]
Weiser, M. Program slicing. In Proceedings of the 5th International Conference on Software Engineering (ICSE '81) (Mar. 1981), pp. 439--449.
[49]
Wu, M., Long, F., Wang, X., Xu, Z., Lin, H., Liu, X., Guo, Z., Guo, H., Zhou, L., and Zhang, Z. Language-based replay via data flow cut. In Proceedings of the 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering (SIGSOFT '10/FSE-18), pp. 197--206.
[50]
Yang, J., Cui, A., Stolfo, S., and Sethumadhavan, S. Concurrency attacks. In the Fourth USENIX Workshop on Hot Topics in Parallelism (HOTPAR '12) (June 2012).
[51]
Yang, J., Sar, C., and Engler, D. Explode: a lightweight, general system for finding serious storage system errors. In Proceedings of the Seventh Symposium on Operating Systems Design and Implementation (OSDI '06) (Nov. 2006), pp. 131--146.
[52]
Yang, J., Twohey, P., Engler, D., and Musuvathi, M. Using model checking to find serious file system errors. In Proceedings of the Sixth Symposium on Operating Systems Design and Implementation (OSDI '04) (Dec. 2004), pp. 273--288.
[53]
Yang, W., Prasad, M. R., and Xie, T. A grey-box approach for automated GUI-model generation of mobile applications. In Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering (2013), FASE'13.
[54]
Zhang, X., and Gupta, R. Cost effective dynamic program slicing. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation (PLDI '04) (2004), pp. 94--106.

Cited By

View all
  • (2024)Enhancing GUI Exploration Coverage of Android Apps with Deep Link-Integrated MonkeyACM Transactions on Software Engineering and Methodology10.1145/366481033:6(1-31)Online publication date: 27-Jun-2024
  • (2024)Who Should We Blame for Android App Crashes? An In-Depth Study at Scale and Practical ResolutionsACM Transactions on Sensor Networks10.1145/364989520:3(1-24)Online publication date: 13-Apr-2024
  • (2024)GuiEvo: Automated Evolution of Mobile App UIsProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644936(335-347)Online publication date: 15-Apr-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
EuroSys '14: Proceedings of the Ninth European Conference on Computer Systems
April 2014
388 pages
ISBN:9781450327046
DOI:10.1145/2592798
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 April 2014

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article

Funding Sources

Conference

EuroSys 2014
Sponsor:
EuroSys 2014: Ninth Eurosys Conference 2014
April 14 - 16, 2014
Amsterdam, The Netherlands

Acceptance Rates

EuroSys '14 Paper Acceptance Rate 27 of 147 submissions, 18%;
Overall Acceptance Rate 241 of 1,308 submissions, 18%

Upcoming Conference

EuroSys '25
Twentieth European Conference on Computer Systems
March 30 - April 3, 2025
Rotterdam , Netherlands

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)23
  • Downloads (Last 6 weeks)1
Reflects downloads up to 13 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Enhancing GUI Exploration Coverage of Android Apps with Deep Link-Integrated MonkeyACM Transactions on Software Engineering and Methodology10.1145/366481033:6(1-31)Online publication date: 27-Jun-2024
  • (2024)Who Should We Blame for Android App Crashes? An In-Depth Study at Scale and Practical ResolutionsACM Transactions on Sensor Networks10.1145/364989520:3(1-24)Online publication date: 13-Apr-2024
  • (2024)GuiEvo: Automated Evolution of Mobile App UIsProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644936(335-347)Online publication date: 15-Apr-2024
  • (2024)App review driven collaborative bug findingEmpirical Software Engineering10.1007/s10664-024-10489-x29:5Online publication date: 26-Jul-2024
  • (2024)Comparative Analysis of Malware Detection Techniques and Machine-Learning Algorithms Used for Security Testing of Android ApplicationsTrends in Mechatronics Systems10.1007/978-981-97-9108-8_9(161-176)Online publication date: 8-Dec-2024
  • (2023)Towards Efficient Record and Replay: A Case Study in WeChatProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3613880(1681-1692)Online publication date: 30-Nov-2023
  • (2023)DDLDroid: A Static Analyzer for Automatically Detecting Data Loss Issues in Android ApplicationsProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3604916(1471-1474)Online publication date: 12-Jul-2023
  • (2023)DDLDroid: Efficiently Detecting Data Loss Issues in Android AppsProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598089(703-714)Online publication date: 12-Jul-2023
  • (2023)Navigating the Audit Landscape: A Framework for Developing Transparent and Auditable XRProceedings of the 2023 ACM Conference on Fairness, Accountability, and Transparency10.1145/3593013.3594090(1418-1431)Online publication date: 12-Jun-2023
  • (2023)Transparent Runtime Change Handling for Android AppsProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 310.1145/3582016.3582060(756-770)Online publication date: 25-Mar-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media