Blog

Tutorials

8 Mobile App Testing Challenges (and Fixes)

8 mobile app testing challenges that break real apps, from device fragmentation to flaky tests and App Store review, and a fix for each. Plan your tests now.

Writer

Nafis Amiri

Co-Founder of CatDoes

8 Mobile App Testing Challenges (and Fixes) with a smartphone, bug icon, and checkmark illustrating mobile app testing and issue resolution.

Key takeaways

  • The biggest mobile app testing challenges are device fragmentation, unreliable networks, frequent OS updates, interruptions and resource limits, usability and accessibility, security, flaky automation, and app store review.

  • You can't test every device. Build a coverage matrix from your own usage data and test your top models on real hardware.

  • Stability affects discovery. Google Play treats a user-perceived crash rate of 1.09% or more, or an ANR rate of 0.47% or more, as bad behavior, and apps over those lines are likely to be less discoverable in the store.

  • Test the way people use phones: on slow networks, with calls coming in, on low battery, and with a screen reader turned on.

  • Keep automation small and trusted, and check every build against the store guidelines before you submit.

Table of Contents

  • Mobile app testing challenges at a glance

  • 1. Device and OS fragmentation

  • 2. Unreliable network conditions

  • 3. Frequent OS updates on iOS and Android

  • 4. Interruptions, battery, and memory limits

  • 5. Usability and accessibility gaps

  • 6. Security and data privacy risks

  • 7. Flaky tests and automation upkeep

  • 8. App store review and release rules

  • Frequently asked questions

  • Where to start without a QA team

An app can pass every test on your desk and still fail in a user's hand. Their phone is older than yours, their train goes into a tunnel, and a call comes in halfway through checkout.

Those gaps are what make mobile app testing hard, and the stakes are public. This guide covers the eight mobile app testing challenges that cause small teams the most trouble, what goes wrong in each, and a fix you can apply without a dedicated QA department.

Mobile app testing challenges at a glance

Each row is one challenge, what it breaks, and the first fix to make. The numbered sections below go into detail.

Challenge

What goes wrong

First fix

Device and OS fragmentation

Layouts break and features crash on phones you never tested

Build a device matrix from your usage data

Unreliable networks

Screens hang, requests time out, and data is lost on reconnect

Test with network throttling and offline mode

Frequent OS updates

New versions change permissions and background behavior

Run your core flows on beta OS releases

Interruptions and resource limits

Calls and backgrounding wipe the user's progress

Interrupt every critical flow on purpose

Usability and accessibility

Users get lost, and screen readers can't use the app

Test with VoiceOver, TalkBack, and real users

Security and privacy

Secrets stored in plain text and APIs open to abuse

Test against the OWASP Mobile Top 10

Flaky tests

Tests pass and fail at random, so nobody trusts them

Quarantine flaky tests and fix the cause

App store review

Rejections push your launch back

Check the build against the guidelines first

1. Device and OS fragmentation

Illustration of phones, a foldable, and a tablet showing the same app, with the layout broken on one screen, one of the most common mobile app testing challenges

Your app has to work across thousands of combinations of screen size, chipset, memory, and OS version. Android is the harder half, because every manufacturer ships its own hardware on its own update schedule.

The failures are rarely dramatic in testing. A button slips off-screen on a small phone, a foldable redraws the layout wrong when it opens, or a feature crashes on an Android version nobody on the team still uses.

Those crashes cost more than bad reviews. Google Play treats a user-perceived crash rate of 1.09% or more, or an ANR (App Not Responding) rate of 0.47% or more, as bad behavior, and an app over those lines is likely to be less discoverable on Google Play. A separate 8% threshold applies to each device model, and Play can steer owners of that model away from your app.

How to build a device coverage plan

  • Pull the device and OS list from your analytics or store console, and rank it by share of your users.

  • Test your top five to ten models on real hardware before every release.

  • Cover the long tail with emulators and simulators, or rent devices from a cloud device farm such as Firebase Test Lab or BrowserStack.

  • Keep one old, low-memory Android phone in the matrix. It exposes performance problems a flagship never will.

If most of your users are on iPhone, our guide on how to test an app on iPhone covers development builds from Xcode, TestFlight beta testing, and how to choose which iOS versions to support.

2. Unreliable network conditions

Illustration of a phone switching between 5G, 4G, and Wi-Fi, with broken data packets and a stopwatch showing slow responses

Your office Wi-Fi is the best network your app will ever see. Real users ride elevators, switch from Wi-Fi to cellular in the middle of a request, and sit on crowded networks at stations and concerts.

Apps built for a fast, stable connection fail in predictable ways. Spinners never stop, requests time out with no message, and a form sent during a dropout either disappears or gets submitted twice.

How to test under bad network conditions

  • High latency: add long delays and check that the screen stays responsive while it waits.

  • Low bandwidth: throttle to a weak 3G profile and confirm the most important content loads first.

  • Packet loss: drop a share of packets and make sure the app retries instead of crashing or saving broken data.

  • Offline and back: cut the connection mid-action, restore it, and confirm the data syncs once and the user sees what happened.

Both platforms include tools for this. Apple's Network Link Conditioner simulates slow and lossy networks on iOS, and the Android Emulator lets you set network speed and latency.

3. Frequent OS updates on iOS and Android

Apple and Google each ship a major OS release every year, with smaller updates in between. Any of them can change permissions, background limits, or interface behavior your app depends on.

The two platforms move at different speeds. Apple reports that 86% of iPhones introduced in the last four years were running iOS 26 by June 2026, so a breaking change reaches most of your iPhone users within months. Android updates arrive through each phone maker, so you have to support new and old versions at the same time.

How to stay ahead of OS releases

  • Install the developer betas of iOS and Android as soon as they're available, and run your core flows on them.

  • Read the behavior-change notes Apple and Google publish with each release. They tell you what is likely to break.

  • Raise your minimum supported OS version on purpose, based on your usage data, rather than by accident.

  • Update your target SDK on schedule. Google Play requires new apps and updates to target a recent Android API level.

4. Interruptions, battery, and memory limits

Illustration of an incoming call banner and a notification covering an app screen, next to low battery and heat icons

On a phone, your app is never alone. Calls, notifications, alarms, and app switching can pause it at any moment, and the OS may close it in the background to free memory.

If the app doesn't save its state, the user comes back to an empty form or a restarted checkout. Heavy use of the CPU, GPS, or network causes a different problem: battery drain and heat, which users notice and blame on your app.

How to test interruptions and resource limits

  • Take a call, receive a notification, and lock the screen in the middle of every critical flow.

  • Send the app to the background, open a few heavy apps, then return and check that nothing was lost.

  • Rotate the device and switch to dark mode mid-flow, since both can rebuild the screen.

  • Turn on low power mode, then profile battery and memory use with Xcode Instruments or the Android Studio profilers.

5. Usability and accessibility gaps

Illustration of a phone app with large text and a highlighted focus outline, next to screen reader and color contrast icons

An app can be free of bugs and still fail because people can't work out how to use it. Swipes and long-presses are easy to miss, and small tap targets are hard to hit on a moving bus.

Accessibility is part of the same problem. People who rely on screen readers, larger text, or high contrast need every screen to work for them. In the EU, the European Accessibility Act now also covers services such as online shopping and banking, including their apps.

How to test usability and accessibility

  • Turn on VoiceOver on iOS or TalkBack on Android, and complete your main flows without looking at the screen.

  • Set the system font to its largest size and check that no text is cut off or overlapping.

  • Check color contrast. WCAG 2.2 asks for a ratio of at least 4.5:1 for normal body text.

  • Run the built-in scanners: Accessibility Inspector in Xcode and Accessibility Scanner on Android.

Scanners catch missing labels and poor contrast, but only people show you where they get confused. Watch five real users try your core task, and use these user testing questions to find out why they stalled.

6. Security and data privacy risks

Illustration of a phone with a padlock shield connected to a locked server by a key, representing encrypted storage and a secure API

A mobile app runs on a device you don't control. Phones get lost, jailbroken, or picked apart, so treat anything stored in or shipped with the app as readable by an attacker.

The most common failures are basic: tokens saved in plain text, API keys written into the app's code, servers that trust whatever the app sends, and permissions the app doesn't need. A leak can also bring fines under privacy laws such as the GDPR.

How to cover the security basics

  • Use the OWASP Mobile Top 10 as your checklist. Its first risk, improper credential usage, covers hard-coded keys and passwords.

  • Store tokens and secrets in the iOS Keychain or the Android Keystore, never in plain preferences or files.

  • Test your APIs without the app. Send other users' IDs and expired tokens, and confirm the server rejects them.

  • Ask only for the permissions a feature needs, at the moment it needs them.

For a deeper checklist, including certificate pinning and runtime protection, see our mobile app security best practices.

7. Flaky tests and automation upkeep

Illustration of repeated automated test runs between a laptop and a phone, where the same tests pass and fail at random

Automation is the only practical way to retest every release, but mobile UI tests are fragile. They depend on animations, timing, network calls, and device state, so the same test can pass on one run and fail on the next.

Even Google fights this. In a 2017 talk on testing at Google, John Micco reported that about 1.5% of its test runs returned a flaky result, and almost 16% of its 4.2 million tests showed some flakiness. Once a team stops trusting red builds, real bugs slip through.

How to keep automated tests reliable

  • Quarantine a flaky test the day you spot it, so it stops blocking releases, then fix the cause.

  • Wait for conditions, not fixed times. Replace sleep calls with waits for a specific element or network response.

  • Find elements by stable accessibility IDs, not by screen position or text that changes.

  • Keep the suite small. Automate smoke tests and critical paths, and leave exploratory testing to people.

Espresso, XCUITest, Maestro, and Appium can all do this job. How you maintain the suite matters more than which tool you pick.

8. App store review and release rules

Illustration of an app checked against a pre-submission checklist before App Store review

Your app isn't live until Apple or Google approves it. Apple reviewed 9,100,620 app submissions in 2025 and rejected 2,093,244 of them, about 23%, according to its 2025 App Store Transparency Report.

Many rejections come from problems testing should catch: crashes during review, broken links, placeholder content, missing privacy details, or no way to delete an account. Each one costs you another review cycle before launch.

How to pass review on the first try

  • Run your full test pass on a release build, on real devices, not only on a debug build.

  • Give reviewers a working demo account and notes for any feature behind a login.

  • Fill in Apple's privacy labels and Google Play's Data safety form so they match what the app actually collects.

  • Go through our list of common App Store rejection reasons before you submit.

We make CatDoes, so read this part with that in mind. CatDoes builds native iOS and Android apps and runs an App Store review simulation before you submit. It flags likely rejection reasons against Apple's review guidelines while you can still fix them.

Frequently asked questions

What is the biggest challenge in mobile app testing?

For most teams, it's device and OS fragmentation. There are too many combinations of hardware and software to test them all, so you have to choose. For startups, the tighter limit is time and devices, which is why a device matrix built from real usage data is the first thing to get right.

Should you test on real devices or emulators?

Use both. Emulators and simulators are fast and free, so they suit daily development and broad OS coverage. Only real devices show you true performance, battery use, and how the camera, sensors, and gestures behave, so test your top models on real hardware before each release.

Do you still need beta testing?

Yes. Beta testers use your app on their own phones and networks, in ways your test plan won't predict. Use TestFlight on iOS and Google Play's internal, closed, or open testing tracks on Android to get a build in front of real users before launch.

How much of mobile app testing can you automate?

Automate the checks you repeat every release: smoke tests, critical user paths, and API tests. Keep people on exploratory, usability, and accessibility testing, where judgment matters. A small suite the team trusts is worth more than a large one it ignores.

What should a mobile app test plan include?

List your target devices and OS versions, your critical user flows, and the network conditions to simulate. Add the interruption, accessibility, and security checks to run on each release, plus a pre-submission checklist for App Store and Google Play review.

Where to start without a QA team

You don't have to solve all eight mobile app testing challenges at once. Start where a failure would hurt most:

  1. Pick your top devices from real usage data and test your critical flows on them.

  2. Add network, interruption, and accessibility checks to those same flows.

  3. Automate the flows you repeat every release, and quarantine flaky tests quickly.

  4. Check every build against the store guidelines before you submit.

If you're building a new app, you can start building on CatDoes for free and upgrade when you're ready to publish to the App Store and Google Play, with the review simulation run before you submit.

Writer

Nafis Amiri

Co-Founder of CatDoes