Android Instrumentation Testing in Continuous Integration: Practices, Patterns, and Performance
Hamid Parsazadeh, Taher A. Ghaleb, Safwat Hassan

TL;DR
This study analyzes how open-source Android apps implement instrumentation testing in CI, revealing adoption rates, setup practices, and performance differences among various approaches.
Contribution
It provides an empirical analysis of CI practices for Android instrumentation testing, highlighting common patterns, evolution, and performance implications.
Findings
Only 10.6% of repositories run instrumentation tests in CI.
Setup configurations tend to remain stable over time, shifting from custom scripts to reusable components.
Community setups are most reliable and efficient; third-party labs are costlier; custom scripts offer flexibility but may cause more reruns.
Abstract
Android instrumentation tests (end-to-end tests that run on a device or emulator) can catch problems that simpler tests miss. However, running these tests automatically in continuous integration (CI) is often difficult because emulator setup is fragile and configurations tend to drift over time. We study how open-source Android apps run instrumentation tests in CI by analyzing 4,518 repositories that use CI (snapshot: Aug. 10, 2025). We examine CI workflow files, scripts, and build configurations to identify cases where device setup is defined in Gradle (e.g., Gradle Managed Devices). Our results answer three questions about adoption, evolution, and outcomes. First, only about one in ten repositories (481/4,518; 10.6%) run instrumentation tests in CI, typically using either reusable community components or repository-specific custom scripts to set up emulators. Second, these setups…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
