PRACTICAL GUIDE / test cases for mobile app
Test Cases for Mobile App: Complete QA Checklist
Test cases for mobile app projects covering install, login, permissions, network changes, gestures, notifications, performance, security, and upgrades.
In this guide8 sections
- Define the Test Case Context
- Installation, Upgrade, and Launch Cases
- Authentication, Inputs, and Account State
- Permissions and Device Capability Cases
- Network, Offline, and Synchronization Cases
- Interruptions, Navigation, and Notifications
- Usability, Accessibility, Performance, and Privacy
- Select Cases for Automation and Release
What you will learn
- Define the Test Case Context
- Installation, Upgrade, and Launch Cases
- Authentication, Inputs, and Account State
- Permissions and Device Capability Cases
The quickest way to produce weak mobile test cases is to copy a generic list into a spreadsheet and mark every row “Android/iOS.” A useful case names the state that makes mobile behavior risky: this OS, this permission history, this network transition, this app version, and this interruption point.
The matrices below are a starting set, not a promise of complete coverage. Select rows according to the product's journeys and supported capabilities, then add expected results precise enough that another tester can decide whether the build passed.
Define the Test Case Context
Every executed case should record more than steps and an expected result. At minimum, capture:
- app build and distribution source;
- device model, OS version, and available storage;
- fresh install, upgrade, or previously used state;
- account role and relevant test data;
- network type and any transition during the case;
- permission state before launch;
- expected client, server, and analytics outcome where relevant;
- cleanup or recovery needed after execution.
For example, “Verify photo upload” is not repeatable. “On a lower-memory Android device, deny photo-library access on first request, choose the in-app recovery action, grant selected-photo access in Settings, and upload one supported image” identifies the state changes and expected path.
Prioritize by failure impact and likelihood. A rare layout issue on an old tablet is not equal to duplicate payment after reconnection. Label cases with product risk, not only high, medium, and low execution priority.
Installation, Upgrade, and Launch Cases
Users do not all arrive from a clean install. Upgrade and restoration paths carry old databases, credentials, feature flags, and permission decisions.
| ID | Scenario | Preconditions | Expected result |
|---|---|---|---|
| APP-01 | Fresh install and first launch | App absent, supported device | App installs, launches once, and shows correct first-run state |
| APP-02 | Upgrade over current store release | Logged-in user with drafts and settings | Migration completes, user-owned data and supported session state remain |
| APP-03 | Upgrade with low free storage | Prior version installed, storage near limit | Upgrade succeeds safely or reports actionable failure without corruption |
| APP-04 | Relaunch after forced termination | User midway through editable flow | App restores documented state or clearly warns what was not saved |
| APP-05 | Launch without network | Clean install, airplane mode | App shows designed offline entry state, no endless spinner or crash |
| APP-06 | Reinstall after uninstall | Existing server account | Local and server data follow retention policy, onboarding behavior is correct |
| APP-07 | Launch after OS update | App used before OS update | App opens, permissions and background work remain consistent |
| APP-08 | Open unsupported app version | Backend requires upgrade | Blocking or optional update message matches policy and link works |
For APP-02, install the actual released predecessor and create data before upgrading. Two fresh internal builds do not reproduce a real migration path. Verify database values through the UI and, where possible, a diagnostic or API surface.
Authentication, Inputs, and Account State
Mobile input behavior changes with keyboard, autofill, password managers, copy and paste, biometric prompts, and session lifecycle.
| ID | Scenario | Variation | Expected result |
|---|---|---|---|
| AUTH-01 | Valid sign-in | Manual typing and password manager | One session created, correct account home opens |
| AUTH-02 | Invalid credentials | Wrong password, known email | Safe error shown, password not exposed, no partial session |
| AUTH-03 | Empty and malformed fields | Paste, spaces, long values | Validation is clear, layout remains usable, no request when invalid |
| AUTH-04 | Keyboard navigation | Next/Done actions, small screen | Focus order is logical and primary action is reachable |
| AUTH-05 | Biometric success and cancellation | Enrolled device | Both branches return to correct state without lockout |
| AUTH-06 | Session expires in background | App backgrounded beyond expiry | Resume requires authentication and protects sensitive screen snapshot |
| AUTH-07 | Password changed elsewhere | Existing mobile session | Reauthentication behavior follows security policy |
| AUTH-08 | Logout | Offline and online variants | Local credentials and sensitive cached data are cleared as specified |
| AUTH-09 | Account switch | Two different roles | No data, notification, or cache leaks between identities |
Test the primary fields with long names, Unicode, apostrophes, leading and trailing spaces, and locale-specific input only where the product accepts such data. Expected normalization must come from requirements, not from a tester's assumption.
For one-time passwords, cover delayed delivery, expired code, reused code, app backgrounding while retrieving the code, and autofill. Do not log real codes or personal phone numbers in test evidence.
Permissions and Device Capability Cases
Permission testing is a sequence. The first denial, repeated denial, “do not ask again” behavior, limited access, and later revocation can produce different screens.
| ID | Capability | State transition | Expected result |
|---|---|---|---|
| PERM-01 | Camera | Not asked to allow | Prompt appears only at point of need with context |
| PERM-02 | Camera | Deny | Manual entry or explanation remains available, no loop |
| PERM-03 | Camera | Deny permanently, then retry | App directs user to Settings when platform requires it |
| PERM-04 | Photos | Grant selected items only | App shows only permitted items and handles later changes |
| PERM-05 | Location | Allow while using app | Feature works only in permitted state, indicator and copy are correct |
| PERM-06 | Location | Revoke in Settings while app backgrounded | Resume detects change and removes protected capability safely |
| PERM-07 | Notifications | Deny, then enable in Settings | In-app preference reflects system state and routing resumes |
| PERM-08 | Biometrics | Hardware unavailable or enrollment changed | Secure fallback follows account policy |
Do not install a test helper that automatically approves every system dialog. An unexpected permission request is itself a defect. Verify that the app asks for only declared capabilities and that denial does not break unrelated journeys.
Android and iOS wording, timing, and available permission states differ. Share the business expectation, such as “user can continue without location,” but keep platform-specific steps and assertions where the operating systems diverge.
Network, Offline, and Synchronization Cases
The most revealing network cases change connectivity during a state-changing operation, not only before the screen opens.
| ID | Scenario | Transition point | Expected result |
|---|---|---|---|
| NET-01 | Load cached content offline | Before launch | Correct cached state and freshness indicator appear |
| NET-02 | Submit while offline | Before tapping submit | Action is blocked or queued according to design, with clear status |
| NET-03 | Lose network after submit | Request sent, response not received | No duplicate record, recoverable pending state is shown |
| NET-04 | Wi-Fi to cellular handoff | During media upload | Upload resumes or restarts according to contract, progress stays honest |
| NET-05 | Slow response | During list refresh | Existing content, loading, cancellation, and timeout behavior are usable |
| NET-06 | Server returns error | During critical transaction | Specific safe error shown, retry does not duplicate action |
| NET-07 | Offline edits reconnect | Two records changed locally | Sync order and conflict resolution match documented policy |
| NET-08 | Captive portal | App appears connected but API is unreachable | App does not misreport success or expose raw transport error |
Inspect server state for NET-03 and NET-06. A client message alone cannot prove whether a payment, booking, or message was created. Repeat reconnection and retry actions to detect missing idempotency.
For offline queues, verify ordering, cancellation, edit-after-queue, logout with pending work, and account switching. Data queued under one user must never be uploaded under another.
Interruptions, Navigation, and Notifications
Mobile journeys compete with the operating system and other apps. Execute interruptions at meaningful boundaries.
| ID | Interruption | When | Expected result |
|---|---|---|---|
| INT-01 | Home and return | Form partially complete | Documented draft state remains, keyboard and focus recover |
| INT-02 | Lock and unlock | Sensitive screen visible | App-switcher and lock-screen privacy policy is enforced |
| INT-03 | Process killed by OS | Upload or checkout pending | Relaunch reconciles with server and avoids duplicate action |
| INT-04 | Incoming call or audio route change | Media recording | Recording pauses, resumes, or ends with clear state |
| INT-05 | Rotate device | Dialog or editable screen open | Supported layout preserves data and controls remain reachable |
| INT-06 | Push notification tapped | App closed, backgrounded, and foregrounded | One correct destination opens with authorization checked |
| INT-07 | Malformed or stale deep link | User logged out or resource removed | Safe fallback appears, no unauthorized content is revealed |
| INT-08 | System back or edge gesture | Multi-step flow | Navigation and unsaved-change handling match platform convention |
For notifications, validate foreground presentation, badge count, grouping, action buttons, duplicate delivery, expiration, and privacy on the lock screen. A correct notification that opens the wrong tenant or stale record is still a serious failure.
Deep links need authentication and authorization checks after routing. Test a valid resource owned by another account, not only a syntactically invalid URL.
Usability, Accessibility, Performance, and Privacy
Some important checks are observations rather than pass/fail scripts. Give them explicit evidence and conditions.
| Area | Case | Evidence to record |
|---|---|---|
| Accessibility | Complete critical flow with VoiceOver or TalkBack | Focus order, names, roles, announcements, blockers |
| Text scaling | Use largest supported system text | Clipping, overlap, scroll access, preserved meaning |
| Localization | Long translated copy and right-to-left layout | Truncation, mirroring, input and date correctness |
| Touch | Use one hand on compact and large device | Reachability, target accuracy, accidental activation |
| Startup | Cold and warm launch on representative hardware | Defined readiness point and measured distribution |
| Scrolling | Long realistic list on lower-memory device | Frame drops, loading behavior, memory growth |
| Battery | Sustained location, upload, or media use | Device energy diagnostics and background activity |
| Privacy | Background app on sensitive screen | App switcher, logs, clipboard, notification exposure |
| Storage | Download with insufficient space | Precheck, partial-file cleanup, recovery message |
Set performance budgets from product expectations and representative devices. One manual timing is not a benchmark. Capture repeated measurements, build, device temperature, network, and readiness definition.
For security, verify server authorization, token expiry, secure local storage, logging, screenshots where restricted, clipboard behavior, and account deletion. Perform intrusive testing only in an authorized environment.
Select Cases for Automation and Release
Automate cases that are stable, repeated, valuable across builds, and observable through supported tooling. Good candidates include launch, login, critical navigation, core transaction smoke, API-backed data setup, and selected offline recovery. Keep visual judgment, exploratory interruption combinations, early feature behavior, and hardware feel in manual sessions.
Before release, choose a risk-based subset rather than running every row blindly:
- one fresh install and every supported upgrade path;
- critical journeys on representative Android and iOS devices;
- denial and revocation for every high-risk permission;
- a network loss during the most important mutation;
- background, process death, and session expiry recovery;
- notification and deep-link routing for each account state;
- accessibility pass through the primary journey;
- crash, analytics, privacy, version, and production configuration checks.
Your next action is to take the product's three most expensive failure journeys and assign five context variations to each: installation history, permission state, network transition, interruption, and device class. Write exact expected client and server outcomes for those 15 cases. That focused set will find more release risk than importing hundreds of context-free rows into a test-management tool.
// FIELD DISPATCH
Get the QA Field Notes
Weekly QA battles, AI testing guides, and interview drills. Free on Substack.
PRIMARY REFERENCES
Verify the details at the source
QABattle guides are practical explanations. Product behavior, standards, and APIs can change, so use these primary references for the canonical details.
- 01ISTQB glossary
ISTQB
Shared testing terminology for test design, defects, levels, and lifecycle concepts.
FAQ / QUICK ANSWERS
Questions testers ask
What are important test cases for a mobile app?
Important mobile app test cases cover install, launch, onboarding, login, permissions, navigation, forms, gestures, offline behavior, network changes, interruptions, notifications, deep links, upgrades, performance, accessibility, security, logout, and crash recovery.
How do I write mobile app test cases?
Start from user journeys and mobile risks. Define device, OS, app version, preconditions, test data, steps, expected results, and priority. Include positive, negative, boundary, permission, interruption, and upgrade scenarios.
Should Android and iOS have the same test cases?
They can share business scenarios, but each platform needs platform specific cases for permissions, navigation, gestures, keyboards, app store behavior, notifications, and OS conventions. Do not assume identical behavior unless the product requires it.
How many mobile test cases are enough?
Enough mobile test cases cover critical user journeys, supported devices, OS versions, risky permissions, network states, upgrade paths, and past defects. The number depends on product risk, not a universal checklist size.
Can mobile app test cases be automated?
Stable smoke and regression cases can be automated with tools such as Appium, Espresso, or XCUITest. Exploratory, usability, device feel, and one time release checks often remain manual or partly assisted.
RELATED GUIDES
Continue the learning route
GUIDE 01
Mobile App Testing Guide: Strategy and Checklist
Mobile app testing guide with strategy, device matrix, functional cases, usability, performance, security, automation, release checks, and QA tips.
GUIDE 02
Appium Tutorial for Beginners: Mobile Automation
Appium tutorial for beginners covering setup, capabilities, locators, waits, Android, iOS, real devices, permissions, examples, and pitfalls.
GUIDE 03
How to Write Test Cases for a Login Page (with Examples)
Write test cases for a login page with positive, negative, security, and lockout examples, plus a reusable template and practical QA checklist.
GUIDE 04
How to Write Test Cases: Complete Guide with Examples
Learn how to write test cases with practical steps, examples, a QA template, common mistakes, and review tips for reliable software coverage.