ABSTRACT
Recording and replaying the execution of smartphone apps is useful in a variety of contexts, from reproducing bugs to profiling and testing. Achieving effective record-and-replay is a balancing act between accuracy and overhead. On smartphones, the act is particularly complicated, because smartphone apps receive a high-bandwidth stream of input (e.g., network, GPS, camera, microphone, touchscreen) and concurrency events, but the stream has to be recorded and replayed with minimal overhead, to avoid interfering with app execution. Prior record-and-replay approaches have focused on replaying machine instructions or system calls, which is not a good fit on smartphones. We propose a novel, stream-oriented record-and-replay approach which achieves high-accuracy and low-overhead by aiming at a sweet spot: recording and replaying sensor and network input, event schedules, and inter-app communication via intents. To demonstrate the versatility of our approach, we have constructed a tool named VALERA that supports record-and-replay on the Android platform. VALERA works with apps running directly on the phone, and does not require access to the app source code. Through an evaluation on 50 popular Android apps, we show that: VALERA's replay fidelity far exceeds current record-and-replay approaches for Android; VALERA's precise timing control and low overhead (about 1% for either record or replay) allows it to replay high-throughput, timing-sensitive apps such as video/audio capture and recognition; and VALERA's support for event schedule replay enables the construction of useful analyses, such as reproducing event-driven race bugs.
- D. Amalfitano, A. Fasolino, S. Carmine, A. Memon, and P. Tramontana. Using gui ripping for automated testing of android applications. In ASE’12. Google ScholarDigital Library
- Android Developers. UI/Application Exerciser Monkey,. http://developer.android.com/tools/help/ monkey.html.Google Scholar
- Android Developers. MonkeyRunner,. http: //developer.android.com/guide/developing/tools/ monkeyrunner_concepts.html.Google Scholar
- Android Developers. SharedPreferences,. https: //developer.android.com/reference/android/ content/SharedPreferences.html.Google Scholar
- Atif Memon. GUITAR, August 2012.Google Scholar
- guitar.sourceforge.net/.Google Scholar
- M. Böhmer, B. Hecht, J. Schöning, A. Krüger, and G. Bauer. Falling asleep with angry birds, facebook and kindle: a large scale study on mobile application usage. In MobileHCI’11.Google Scholar
- CNET. Android dominates 81 percent of world smartphone market, November 2013. http://www.cnet.com/ news/android-dominates-81-percent-of-worldsmartphone-market/.Google Scholar
- CNET. Android beat Apple in tablet sales last year – Gartner, March 2014. http://www.cnet.com/news/androidbeat-apple-in-tablet-sales-last-year-gartner/.Google Scholar
- D. Geels, G. Altekar, S. Shenker, and I. Stoica. Jockey: a user-space library for record-replay debugging. In USENIX ATC’06.Google Scholar
- G. W. Dunlap, S. T. King, S. Cinar, M. A. Basrai, and P. M. Chen. Revirt: enabling intrusion analysis through virtualmachine logging and replay. In OSDI’02. Google ScholarDigital Library
- Google Code. Robotium, August 2012. http:// code.google.com/p/robotium/.Google Scholar
- Z. Guo, X. Wang, J. Tang, X. Liu, Z. Xu, M. Wu, M. F. Kaashoek, and Z. Zhang. R2: An application-level kernel for record and replay. In OSDI’08. Google ScholarDigital Library
- M. Halpern, Y. Zhu, and V. J. Reddi. Mosaic: Cross-platform user-interaction record and replay for the fragmente d android ecosystem. In ISPASS’15.Google Scholar
- P. Hornyack, S. Han, J. Jung, S. Schechter, and D. Wetherall. These aren’t the droids you’re looking for: Retrofitting android to protect data from imperious applications. In CCS’11. Google ScholarDigital Library
- C.-H. Hsiao, J. Yu, S. Narayanasamy, Z. Kong, C. L. Pereira, G. A. Pokam, P. M. Chen, and J. Flinn. Race detection for event-driven mobile applications. In PLDI’14. Google ScholarDigital Library
- J. Steven, P. Chandra, B. Fleck, and A. Podgurski. jrapture: A capture/replay tool for observation-based testing. In ISSTA’00. Google ScholarDigital Library
- Jinseong Jeon and Jeffrey S. Foster. Troyd, January 2013. https://github.com/plum-umd/troyd.Google Scholar
- Jinseong Jeon and Kristopher Micinski and Jeffrey S. Foster. Redexer. http://www.cs.umd.edu/projects/PL/ redexer/index.html.Google Scholar
- L. Gomez, I. Neamtiu, T.Azim, and T. Millstein. Reran: Timing- and touch-sensitive record and replay for android. In ICSE ’13. Google ScholarDigital Library
- L. Lamport. Time, clocks, and the ordering of events in a distributed system. CACM’78, 21(7):558–565. Google ScholarDigital Library
- P. Maiya, A. Kanade, and R. Majumdar. Race detection for android applications. In PLDI’14. Google ScholarDigital Library
- S. Narayanasamy, G. Pokam, and B. Calder. Bugnet: Continuously recording program execution for deterministic replay debugging. In ISCA ’05. Google ScholarDigital Library
- H. Patil, C. Pereira, M. Stallcup, G. Lueck, and J. Cownie. Pinplay: A framework for deterministic replay and reproducible analysis of parallel programs. In CGO ’10. Google ScholarDigital Library
- M. Ronsse and K. D. Bosschere. Recplay: A fully integrated proctical record/replay system.Google Scholar
- S. T. King, G. W. Dunlap, and P. M. Chen. Debugging operating systems with time-traveling virtual machines. In USENIX ATC’05. Google ScholarDigital Library
- S. M. Srinivasan, S. Kandula, C. R. Andrews, and Y. Zhou. Flashback: a lightweight extension for rollback and deterministic replay for software debugging. In USENIX ATC’04. Google ScholarDigital Library
- T.Azim and I. Neamtiu. Targeted and depth-first exploration for systematic testing of android apps. In OOPSLA’13. Google ScholarDigital Library
- X. Wei, L. Gomez, I. Neamtiu, and M. Faloutsos. Profile-Droid: Multi-layer Profiling of Android Applications. In MobiCom’12. Google ScholarDigital Library
- M. Xu, R. Bodik, and M. D. Hill. A ”flight data recorder” for enabling full-system multiprocessor deterministic replay. In ISCA ’03, pages 122–135. Google ScholarDigital Library
- Y. Saito. Jockey: a user-space library for record-replay debugging. In AADEBUG’05. Google ScholarDigital Library
Index Terms
- Versatile yet lightweight record-and-replay for Android
Recommendations
Record and replay for Android: are we there yet in industrial cases?
ESEC/FSE 2017: Proceedings of the 2017 11th Joint Meeting on Foundations of Software EngineeringMobile applications, or apps for short, are gaining popularity. The input sources (e.g., touchscreen, sensors, transmitters) of the smart devices that host these apps enable the apps to offer a rich experience to the users, but these input sources pose ...
MobiPlay: a remote execution based record-and-replay tool for mobile applications
ICSE '16: Proceedings of the 38th International Conference on Software EngineeringThe record-and-replay approach for software testing is important and valuable for developers in designing mobile applications. However, the existing solutions for recording and replaying Android applications are far from perfect. When considering the ...
VALERA: an effective and efficient record-and-replay tool for android
MOBILESoft '16: Proceedings of the International Conference on Mobile Software Engineering and SystemsWe demo VALERA, a Versatile-yet-lightweight Record-and-replay tool for Android. Record-and-replay is useful across the Android development lifecycle, from bug reproducing to systematic testing. VALERA uses a novel technique named sensor-oriented replay (...
Comments