
Product news and testing tips.
Automate the mobile testing that's repetitive and regression-prone — Espresso, XCTest, and Maestro running as a CI gate on every pull request — because that's where automation's speed and consistency pay off every release. Keep manual and exploratory testing for real-device feel, visual/UX polish, brand-new device/OS combinations, and accessibility testing with real assistive tech, since none of those transfer reliably to emulators yet. Most mature, fast-shipping mobile teams land around 60-75% of testing effort on the automated side; earlier-stage or heavily regulated apps skew more manual.
Key takeaways
- Automate regression-prone, repetitive mobile flows and gate CI with Espresso/XCTest/Maestro — that's where automation earns back its cost fastest.
- Manual and exploratory testing matters more for mobile than web: real-device touch/gesture feel, visual/UX polish, novel device-OS combos, and real-hardware accessibility testing (VoiceOver/TalkBack) don't fully transfer to emulators.
- New OS versions are manual-only territory at first — Bitrise found top teams take about 4 weeks to adopt a new Xcode release vs. 19-21 weeks for laggards, before automated coverage catches up.
- The right split isn't a fixed percentage — it depends on app maturity, release cadence, team size, and regulatory requirements.
- AI-assisted authoring (Maestro's low-code YAML, Kobiton's AI script generation from manual sessions) is shifting some manual effort toward automation over time, not eliminating manual testing.
- Qualflare sits on the automated side, ingesting Espresso/XCTest/Maestro/JUnit-wrapped-Appium results — manual and exploratory findings still need a place to land as defects and release milestones.
Automation and manual testing aren’t competing for the same line item — they cover different kinds of risk, and mobile widens that split further than web testing ever does. The general case for automating repetitive checks and reserving humans for judgment calls isn’t new; see the test pyramid explained and shift-left testing for that general argument. This is the mobile-specific version of it: where Espresso, XCTest, and Maestro should run as a CI gate on every pull request, where manual and exploratory testing carries more weight on Android and iOS than it does on a web app, and a practical way to size the split for your own team.
Where automation wins for mobile testing
Automation wins wherever a check is well-defined, repeats every release, and needs to run before code merges — the same logic behind the test pyramid: push coverage down to the fastest, cheapest layer that still catches the regression. Three mobile-specific cases stand out:
- Regression testing across releases. Login, checkout, onboarding, and other flows that must keep working on every build are exactly what a fixed Espresso, XCTest, or Maestro script is good at — the flow rarely changes, so the cost of writing it once is repaid every release it runs again.
- CI-gating. Running Espresso/XCTest/Maestro suites on every pull request, not just nightly, catches a regression before it merges instead of after it ships — the same shift-left logic behind moving any kind of testing earlier in the pipeline, applied to a mobile quality gate.
- Repetitive functional flows. Anything a human tester would otherwise click through by hand, the same way, on every build — form validation, navigation, permission grants — is automation’s clearest win: it’s fast, doesn’t get bored, and the failure it reports is reproducible.
Teams that lean into this get paid back in release cadence. Bitrise’s analysis of 10M+ mobile builds from January 2022 to June 2025 found that top-performing teams using release automation ship biweekly or faster 54% of the time — a CI-gated pipeline removes the human bottleneck that would otherwise cap how often a team can safely ship.
Where manual and exploratory testing matter more on mobile than on web
Automation’s mobile ceiling is lower than its web ceiling, for reasons specific to phones rather than testing in general:
- Real-device “feel.” Touch responsiveness, multi-touch gesture handling, and haptic feedback are physical-hardware behaviors an emulator or simulator approximates but doesn’t reproduce. A swipe that registers cleanly in a simulator can feel laggy or misfire on a mid-range Android device with a slower touch controller — not a pass/fail condition any assertion checks, because it’s a feel, not a state.
- Visual and UX polish. Mobile UI packs more into less space than a typical web page — navigation bars, gesture zones, safe-area insets, and one-handed reach all compete for a few inches of screen. That density means small regressions (a tap target one size too small, text clipped by a notch, a modal that ignores the keyboard) are more noticeable on mobile than the equivalent misalignment on a wide desktop layout, and they’re exactly the kind of subjective “does this look right” judgment automated assertions don’t make well.
- Genuinely novel device/OS combinations. A new device launch or a beta OS release that isn’t in your automated matrix yet has to be tested by a human first — there’s no scripted coverage for a combination you haven’t added.
- Accessibility with real assistive tech. VoiceOver and TalkBack behave differently on physical hardware than in a simulator or emulator. Google’s own accessibility-testing documentation is direct about the gap: “[the Android Accessibility Test Framework in Android Studio can’t detect issues that occur when the app is running on a device](https://developer.android.com/guide/topics/ui/accessibility/testing “Android Developers — Accessibility Testing).” Automated scanners catch structural issues — missing labels, contrast ratios — but not how an actual screen-reader user experiences the flow on real hardware.
- OS-update compatibility testing. When Apple or Google ships a new OS version, an automated suite has no day-one coverage for it — someone has to manually verify the app still works before automation catches up. Bitrise’s data shows how wide that gap gets in practice: leading teams adopt a new Xcode release in about 4 weeks, laggards take 19–21 weeks — and the weeks in between are manual-verification territory almost by definition.
Manual vs. automated fit, by testing type
| Testing type | Automation fit | Manual fit | Why |
|---|---|---|---|
| Regression testing (login, checkout, core flows) | High | Low | Same flow, same assertions, every release |
| CI-gating / smoke tests | High | Low | Needs to run on every PR in minutes |
| Exploratory testing | Low | High | No fixed script — the point is finding what you didn’t think to test |
| Visual/UX polish review | Low | High | Subjective judgment on layout, density, and feel |
| Accessibility with real assistive tech | Medium | High | Scanners catch structure; real VoiceOver/TalkBack use catches experience |
| New OS-version compatibility (day one) | Low | High | No automated coverage exists yet for an OS that just shipped |
| Established device/OS matrix | High | Low | Once added, the same checks repeat automatically each release |
| Localization/string review | Medium | High | Automatable for missing keys, not for whether a translation reads naturally |
How to split your mobile QA budget
There’s no universal percentage, because the right split depends on facts about your app and team, not a rule of thumb:
- App maturity. A pre-product-market-fit app is still discovering what its core flows even are — exploratory testing finds more bugs per hour than writing scripts for flows that might change next sprint. A mature app with stable flows gets more value from locking those flows into automated regression coverage.
- Release cadence. Teams shipping weekly or faster can’t afford a manual regression pass on every release — automation has to carry that load, or the cadence itself becomes the bottleneck (the same dynamic behind Bitrise’s biweekly-or-faster figure above). Teams shipping monthly or slower have more room to run manual passes without automation.
- Team size. A two-person QA team can’t hand-test a large device/OS matrix every release; automation is how a small team covers more ground. A larger team can afford to dedicate specialists to exploratory and accessibility work without starving automation maintenance.
- Regulatory or compliance needs. Fintech, health, and other regulated apps often require documented manual test evidence for specific flows regardless of automated coverage — a fixed manual floor automation doesn’t remove.
Put together, a mature, fast-shipping consumer app typically lands around 60–75% of testing effort on the automated side, with manual and exploratory work concentrated on release candidates, new OS betas, and accessibility passes. An early-stage app, or one with a hard compliance requirement, skews further toward manual — sometimes below 40% automated — until its core flows stabilize enough to be worth locking into scripts.
AI-assisted authoring is shifting the line, not erasing it
Some tools are narrowing the gap between the two columns above. Maestro’s YAML-based flows are explicitly built as a low-code way to write mobile UI tests — closer to describing a flow than programming one, which lowers the bar for who can write automated coverage. Kobiton’s AI-assisted Appium script generation goes a step further: it reads taps, swipes, and inputs from a manual testing session and exports a runnable Appium script from it, converting exploratory effort directly into automated coverage. Kobiton’s own 2024 survey found 99% of respondents were already running some level of automated testing.
None of that makes manual testing optional. These tools move the line between “cheap to automate” and “still needs a human” — they don’t erase the human side of the table above. A tool that generates a script from a manual session still needed a human to run that session and decide the flow was worth capturing in the first place.
Where Qualflare fits
Qualflare sits on the automated side of this split. It ingests Espresso results (JUnit-XML via Gradle), XCTest/XCUITest results (converted from .xcresult), Maestro results (JUnit-XML via maestro test --format junit), and Appium suites wrapped in a JUnit, TestNG, or pytest harness — then applies the same flaky detection and failure clustering and release-risk scoring it applies to web and backend suites. It doesn’t run your tests, provision devices, or automate manual testing itself; that positioning is covered in more depth in the complete guide to mobile testing.
Manual and exploratory findings still need somewhere to land, even though Qualflare doesn’t automate the manual side of the work: a tester who finds a real-device gesture bug or a visual regression during an exploratory pass logs it as a defect and attaches it to the same release milestone the automated suite reports against, so a release-readiness view reflects both kinds of evidence, not just the automated half. For the specific things worth checking manually before a release ships, see the mobile app testing checklist.
Start free with Qualflare — see flaky detection, failure clustering, and release-risk scoring on your own Espresso, XCTest, or Maestro results.
Frequently asked questions
Should mobile QA be mostly manual or mostly automated?
Neither, for most teams — the two cover different kinds of risk. Automate regression-prone, repetitive flows and CI-gating; keep manual and exploratory testing for real-device feel, visual/UX judgment, new device/OS combinations, and real assistive-tech accessibility checks. A mature, fast-shipping app typically leans 60–75% automated; an early-stage or regulated app leans more manual.
What percentage of mobile testing should be automated?
There’s no fixed number — it depends on app maturity, release cadence, team size, and regulatory requirements. A stable app shipping weekly with a small QA team needs automation to carry most of the regression load; a pre-product-market-fit app or one with hard compliance requirements can run well below 50% automated and still be doing the right thing for its stage.
Why does manual testing matter more for mobile than for web?
Mobile adds failure surfaces web testing doesn’t have: real-device touch and gesture feel that emulators approximate but don’t reproduce, a denser UI where small visual regressions are more noticeable, device/OS combinations outside your automated matrix, and assistive technologies (VoiceOver, TalkBack) that behave differently on physical hardware than in a simulator.
Can AI tools replace manual mobile testing?
Not yet, and not entirely. Tools like Maestro’s low-code YAML flows and Kobiton’s AI-generated Appium scripts (built from recorded manual sessions) shift some manual effort into automation over time, but a human still has to run the exploratory session, judge whether a flow is worth automating, and evaluate visual/UX polish and real-device feel — none of which a script decides for itself.
What mobile testing tasks should always stay manual?
Exploratory testing on new features, visual/UX polish review, first-pass compatibility checks on a brand-new device or OS beta, and accessibility verification with real screen readers on physical hardware. Each depends on human judgment or hardware behavior that automated scripts and emulators don’t fully capture.
Where does Qualflare fit into a manual vs. automated mobile testing split?
Qualflare is on the automated side — it ingests Espresso, XCTest/XCUITest, Maestro, and JUnit/TestNG/pytest-wrapped Appium results and applies flaky detection, failure clustering, and release-risk scoring. It doesn’t run tests or automate manual testing; manual and exploratory findings get logged as defects against the same release milestone so a release-readiness view covers both automated and manual evidence.
Sources
Related Posts


