Faster testing on Android with Mobile Test Orchestrator
Article Summary
LinkedIn's Android test suite hit tens of thousands of tests, pushing execution times into the danger zone. Developer productivity was tanking.
LinkedIn engineers built Mobile Test Orchestrator (MTO) to solve a scaling crisis: keeping test runs under 10 minutes as their suite exploded in size. They chose a pull-based distribution model with dynamic emulator provisioning.
Key Takeaways
- Single machine with 16 emulators: 80 minutes for 10,000 tests
- 10 hosts with 160 emulators: execution dropped to 10 minutes
- Orchestration uses only 1-2% CPU via async I/O operations
- Pull-based model beats push: simpler logic, better fault tolerance
- Dynamic emulator clouds reduce monitoring overhead versus persistent pools
MTO achieved an 8x speedup by distributing tests across 160 emulators, hitting the critical 10-minute target while staying easily scalable.
About This Article
LinkedIn's Android test suite ballooned to tens of thousands of tests. Running them on a single machine took tens of minutes, which meant developers had to wait a long time for feedback on their changes.
Mobile Test Orchestrator uses Python with multiprocessing and asyncio to spread tests across multiple worker nodes. Each node runs Android emulators through the Android Debug Bridge.
Test execution dropped from 80 minutes on a single 16-emulator machine to 10 minutes across 10 hosts. The orchestration layer only uses 1-2% CPU, so the scaling is efficient without wasting resources.