The bug that only shows up on one Android build rarely shows up in an emulator
Mobile Testing
An emulator runs the app faithfully and still cannot reproduce what a specific chipset, a low-battery throttling mode, or a patchy train-tunnel connection does to it. Those are physical conditions, not just software states. This practice tests on real devices across the fragmentation that actually matters to your users, not the two phones sitting on a developer's desk.
Why a device matrix gets built from real usage data
Fragmentation, interrupted connectivity and the submission checks a build needs before it ships.
90 secSample frame · video pending01Before building the matrix
Real devices or emulators is not really an either-or
Most engagements need both, and the balance shifts with what a given test is actually trying to prove. Four questions settle where the weight should sit.
Is the suspected bug hardware-dependent?
Battery throttling, camera behaviour and chipset-specific rendering only show up on real hardware, never inside a simulator.
How wide is your actual device spread?
A tightly controlled enterprise fleet tolerates more emulator testing than a consumer app running across hundreds of device models.
How fast do you need the feedback loop?
Emulators run faster in CI for quick functional checks, while real-device testing suits the deeper pass before a release.
Is app-store submission the immediate goal?
Submission review increasingly expects real-device evidence for permissions, camera and location behaviour, not just simulator screenshots.
| Real devices | Emulators/simulators | |
|---|---|---|
| Speed | Slower, physical setup | Fast, easy to parallelise |
| Catches | Hardware and OS-specific bugs | Logic and layout bugs cheaply |
| Cost | Higher per test cycle | Low, scales in CI |
| Best fit | Pre-submission and field-bug diagnosis | Everyday development feedback |
02Agreed before the matrix runs
The ledger that keeps device coverage honest
Mobile testing goes wrong when 'it works on my phone' gets treated as evidence about every phone your users actually carry. This ledger sets out what you bring, what we test, what comes back, and what stays yours to decide.
- Your side
You bring
- The app build and its target device and OS support range
- Any app-store guidelines the submission needs to satisfy
- Known problem devices or OS versions from prior releases
- Our side
We build
- A device and OS matrix scoped to your actual user base
- Gesture, orientation and offline-behaviour testing across that matrix
- App-store submission checks against current platform guidelines
- Your side
You receive
- A pass/fail report across every device and OS combination tested
- A defect list tied to the specific device or OS it appeared on
- A submission-readiness check against current app-store requirements
Never leaves you
- The app build and the decision to submit it
- The developer account and the submission itself
- The call on which device-specific defects block release
Where the line sitsWe test the matrix; you decide what ships and when. A defect tied to one specific device is a very different risk than one on every device.
03From matrix to submission-ready build
Four stages, each closing on a real result
A field bug that surprises everyone usually traces back to one of these stages never happening in the first place. This system closes each stage against a real device, not an assumption.
Build the device and OS matrix
The matrix gets scoped from your actual analytics on device and OS distribution, not a generic list of currently popular phones.
A matrix built from real usage, not guessworkTest the conditions a demo skips
Rotation, multitasking, incoming calls and a connection that drops mid-transaction get tested deliberately, because these interruptions are routine for a real user.
Gestures, orientation and mid-use interruptionsLog defects against the specific device
Each defect records the exact device, OS version and condition it appeared under, so engineering can reproduce it without a guessing game.
A defect tied to the exact conditionVerify against submission requirements
Current app-store guidelines get checked against the build directly, catching a rejection reason before a submission review finds it instead.
Ready for the store, not just the build
04What actually moves the number
Four drivers, sized from the device spread
Mobile testing is scoped against your actual device and platform spread, because these four factors change effort far more than app size alone.
Size of the device and OS matrix
A narrow matrix covering a handful of common devices costs less than broad coverage across many manufacturers and OS versions.
Depth of offline and interruption testing
Basic connectivity checks cost less than a thorough pass through every interruption scenario a mobile user actually encounters.
Whether this is one submission or ongoing coverage
A single pre-submission pass costs less overall than a recurring matrix refreshed ahead of every future release.
Platform coverage required
Testing one platform costs less than covering iOS and Android in parallel, since each carries its own fragmentation and submission rules.
05Evidence and proof
Fragmentation caught on the hardware users actually carry.
Mobile testing proof here is a bug isolated on the exact device that produced it. These records carry that bar while written approvals are secured.
Explore case studies
A submission blocked by one camera-permission bug only a real device caught.
Pillar Learning's app passed every emulator test and still hit an app-store rejection. Testing on the actual affected phone model isolated a camera-permission bug within a day.
- Emulator test result
- Passed
- Time to isolate on real hardware
- 1 day

A device matrix rebuilt from actual usage data cut field bugs sharply.
Tern's driver app kept failing on specific Android builds nobody had tested against. A matrix rebuilt from real device analytics closed the gap before the next release.
- Device coverage matched to real usage
- Rebuilt fully
- Field-reported bugs next release
- Down sharply
Every crash report named a phone we didn't own. Testing on the actual devices our patients use changed that completely.
Sample · pending client approval
06Read this first
When a full device matrix is overkill
Running a broad public device matrix against an app three internal staff use on managed phones spends budget on a risk that never existed. The exits are marked plainly.
The app runs on a small, managed device fleet
A tightly controlled fleet of identical, managed devices needs a much smaller matrix than a public consumer release.
- API Testing
The real gap is the API or backend behind the app
When failures trace back to the service the app calls rather than the app itself, API testing is the more direct fix.
- Software Testing
You need broader release confidence, not just the mobile layer
When the goal spans a whole release across web and mobile together, software testing owns that broader scope instead.
| Shape | Best when | You direct | We carry |
|---|---|---|---|
| Pre-submission pass | A release is close to app-store submission | Release date and submission scope | Matrix testing and submission checks |
| Bug diagnosis | A field bug will not reproduce in-house | Support response and user communication | Reproduction, isolation and a verified fix |
| Ongoing coverage | Releases ship on a regular mobile cadence | Release cadence and platform priorities | A refreshed matrix and recurring pass |
07Straight answers
Asked before a mobile release ships.
01What's included in a mobile app testing engagement?
Mobile app testing covers device and OS fragmentation across a defined matrix, gesture and orientation behaviour, offline and interrupted-connectivity handling, and app-store submission checks. Real hardware gets used for the failures a simulator cannot reproduce.
02Do you test on real devices or emulators?
Both, chosen by what the test needs to prove. Emulators suit fast, everyday development checks, while real devices catch hardware and OS-specific bugs a simulator physically cannot.
03Do you test both iOS and Android?
Yes, each platform carries its own fragmentation pattern and submission rules, so coverage gets scoped separately even within the same engagement.
04Can you diagnose a bug that only happens on users' devices in the field?
Yes, this is a common starting point. Reproduction attempts target the specific device and OS combinations implicated by crash reports or user descriptions.
05Do you check app-store submission requirements?
Yes, current platform guidelines get checked against the build directly, catching a likely rejection reason before a submission review finds it instead.
06What does mobile testing cost?
Cost scales with the size of the device and OS matrix and how deep the offline and interruption testing needs to go. A narrow matrix costs far less than broad coverage.
07How do you decide which devices belong in the test matrix?
The matrix gets built from your actual usage analytics wherever they exist, rather than a generic list of currently popular phones.
08Can this run as an ongoing check ahead of every release?
Yes, a recurring pass ahead of each submission keeps the matrix current as new devices and OS versions ship into the market.
