2013 · Conference paper
Guided GUI Testing of Android Apps with Minimal Restart and Approximate Learning
SwiftHand generates test inputs for Android apps while learning an approximate GUI model during testing. It instruments Dalvik bytecode to read the GUI component tree and derive each screen's enabled touch, scroll, text, Back and Menu inputs; screens with the same enabled inputs are treated as equivalent states of an extended deterministic labeled transition system. The learned model steers execution toward unexplored frontier states and avoids restarts, since reinstalling an app took about 30 seconds. On 10 F-Droid apps, the authors report higher branch coverage than random and L*-based testing within the time budget, reached faster.
Scope and limitations
A test-generation technique whose learned model is an approximate abstraction for guiding exploration, not a complete or exact GUI specification or a reimplementation of the app. States are identified only by their sets of enabled inputs and merged heuristically; tab views and similar designs caused state explosion and low coverage. The implementation rejects apps with a native main entry, works correctly only on Android 4.1 or later, and cannot handle apps that store data on remote servers, so such apps were excluded from the benchmark. Evaluation covers 10 F-Droid apps under Android 4.1.2: eight ran on emulators with a 3-hour budget and two on a Galaxy Nexus phone with 1 hour. Random testing caught up on some small apps given more time. The 2013 tool is not shown to run on current Android releases.
Why it fits this collection
Adds execution-driven inference of an Android app's GUI state model, complementing the collection's screenshot- and design-based app reconstruction papers with behavioral model recovery.
Publication and review details
- Venue
- OOPSLA 2013
- Status
- Conference paper
- Publication / posting date
- October 29, 2013
- Date source
- ACM-deposited Crossref metadata for the proceedings DOI gives 29 October 2013 for both online and print publication. The SIGPLAN Notices copy lists a separate print date of 12 November 2013; neither date is inferred from the SPLASH conference schedule.
- DOI
- 10.1145/2509136.2509552
Crossref establishes the three-author order, the OOPSLA 2013 proceedings within SPLASH ’13 and pages 623–640; it deposits the title in sentence case, while this entry keeps the capitalization printed in the paper. The same article also appears in ACM SIGPLAN Notices volume 48, issue 10, pages 623–640, under DOI 10.1145/2544173.2509552; this entry uses the proceedings DOI. The author-hosted PDF is a 17-page copy created on 2013-08-11 with the proceedings DOI; its pagination is not assumed to match the 18-page published range. The paper names github.com/wtchoi/SwiftHand. The reviewed master snapshot b2b45acd is dated 2015-01-13, with no later pushes, and README describes it as a working demo of the version submitted to OOPSLA ’13. LICENSE.txt is a three-clause BSD-style text with a 2013 copyright of The Regents of the University of California; GitHub reports no recognized SPDX license. README requires JDK 6 or 7, Maven 3, Android SDK tools including chimpchat, Scala 2.9.1 and ASMDEX revision 1665 or older. To reproduce the paper, it recommends a Nexus S emulator at API level 16, with internet access disabled through a DNS setting. dist/ contains a prebuilt jar plus instrumented APKs of the ten benchmark apps and two unmodified APKs; those third-party apps keep their own terms. Source files were read; no APKs were downloaded, nothing was built or run, and no experiments were reproduced.
Sources reviewed
Source review only; experiments were not rerun for this collection. Cite the original authors using the linked paper or BibTeX.
Primary sources
- https://doi.org/10.1145/2509136.2509552
- https://api.crossref.org/works/10.1145/2509136.2509552
- https://api.crossref.org/works/10.1145/2544173.2509552
- https://people.eecs.berkeley.edu/~ksen/papers/swifthand.pdf
- README.md GitHub · wtchoi/SwiftHand · Revision b2b45ac
- LICENSE.txt GitHub · wtchoi/SwiftHand · Revision b2b45ac
- dist GitHub · wtchoi/SwiftHand · Revision b2b45ac