Making Android Apps Monkey-FriendlyVisions
Monkey testing is a random testing technique in which a monkey, i.e. a fully-automated testing tool, fires a stream of pseudo-random events on the GUI of the application under test, usually with the purpose of GUI testing, crash testing or responsiveness analysis. A line of research is dedicated to addressing limitations of monkey testing for Android apps. However all the existing works are based on the implicit assumption that the inefficiencies of monkey testing is only due to the weakness of the monkey and hence, it is the monkey which needs to be improved. Our vision contradicts this since we believe even an existing monkey testing tool, e.g. the Google’s official monkey tool shipped with Android SDK, is able to provide better performance if the app goes through some level of GUI refactoring. Our point of view is that part of the inefficiency of monkey testing is due to the fact that the GUI of the app is designed to be user-friendly, having good look and feel for the user. However, it is possible to automatically refactor the GUI of the app to become monkey-friendly, i.e. to change in a way that it provides more readiness and potential for being tested by monkey. We have provided two concrete examples to realize this vision, each seeking to address one of the problems of monkey testing: 1) widget-obliviousness and 2) the lack of support for user involvement during testing. The first example is implemented as a plugin for Android Studio and a case study is performed on a real-world app. While the evaluation is in early stages, the results are promising.