Skip to content
All posts
March 5, 20264 min read

Mobile App Testing Checklist: 40 Things to Check Before Release

A comprehensive pre-release checklist for Android apps covering functionality, performance, device compatibility, offline behavior, accessibility, and more. Use this before every production release.

AndroidTestingRelease
Share:

I've been releasing Android apps for 13+ years. Every release without a checklist has eventually produced a preventable production issue. Here's the checklist I actually use.


Core Functionality

  • All primary user flows work end-to-end
  • All form validations trigger correctly (required fields, format validation, error messages)
  • Correct data is saved and displayed after each create/update/delete operation
  • Navigation works in all directions (forward, back, up)
  • Deep links open the correct screen with correct state
  • Push notifications open the correct screen when tapped
  • Permissions are requested at the appropriate time with context

Error Handling and Edge Cases

  • Empty states have appropriate UI (not blank screens)
  • Error states show useful messages (not "Error: null")
  • Network errors are handled gracefully with retry options
  • Invalid input is caught and explained clearly
  • Long text doesn't overflow or break layouts
  • Extremely long usernames/titles don't break list items
  • Zero-data scenarios (no tasks, no contacts, no items) work correctly

Performance

  • Cold start is under 3 seconds on a mid-range device
  • Lists scroll smoothly (60fps) with 100+ items
  • Images load without blocking the UI
  • No ANR (Application Not Responding) dialogs during normal use
  • Memory usage doesn't grow continuously over a 10-minute session (no memory leak)
  • App doesn't cause excessive battery drain

Offline and Network Behavior

  • App launches without internet connection
  • Cached data is displayed when offline
  • Offline operations queue and sync when connection is restored
  • Error message is shown when attempting network operations offline
  • App recovers correctly after switching from offline to online
  • Behavior is correct on slow/flaky connections (2G simulation)

Device and OS Compatibility

  • Tested on the minimum supported SDK (Android 7 / API 24)
  • Tested on the latest Android release
  • Layout renders correctly on small screen (5" phone)
  • Layout renders correctly on large screen (tablet, if supported)
  • Works in portrait orientation
  • Works in landscape orientation (if supported)
  • Works with system font size at maximum (accessibility font scaling)

[!TIP] Use Firebase Test Lab to run a subset of tests across real devices at different API levels. Even 5-10 minutes of automated coverage across 6-8 devices catches many compatibility issues.


Lifecycle and State

  • App state is preserved when the device rotates
  • App state is preserved when backgrounding and returning
  • App state is preserved after a phone call interruption
  • App recovers correctly after being killed by the system (low memory)
  • Back stack is correct — pressing back from any screen leads to the expected place
  • Data entered in a form is preserved on rotation (not lost)

UI and Accessibility

  • All interactive elements have content descriptions for screen readers
  • Touch targets are at least 48x48dp
  • Color contrast meets WCAG AA minimum (4.5:1 for text)
  • App works with TalkBack enabled for primary flows
  • App works with display size set to "large" (system setting)

Security and Privacy

  • No sensitive data visible in Android recent apps screenshot
  • Auth tokens are stored securely (not plain SharedPreferences)
  • Release build has no debug logging of sensitive data
  • App handles session expiry correctly (shows login, not a crash)
  • Permissions requested are actually necessary

Release Build Specific

  • Release build (not debug) is tested
  • ProGuard/R8 hasn't broken any reflection-based code
  • All third-party SDK keys are the production keys (not sandbox)
  • Version name and version code are correct
  • App signing is with the release keystore (not debug)

Play Store

  • App passes pre-launch report (Firebase Test Lab) without critical issues
  • Store listing screenshots are current
  • What's New text is filled in for this release
  • Target audience and content rating are current
  • Internal test track confirmed working before rolling out wider

How to Use This Checklist

Don't try to test everything manually on every release. Split it:

Every release (automated in CI): Core functionality, crash detection, basic performance

Every release (manual sanity check): Top 3-5 user flows, new features, changed flows

Major releases (full manual pass): All 40 items above

Quarterly (scheduled): Device compatibility, accessibility audit, security review


Takeaways

  • Empty state and error state handling is almost always undertested
  • Lifecycle testing (rotation, background, kill) catches bugs other tests miss
  • Release build testing is essential — ProGuard breaks things that work in debug
  • Accessibility testing takes 20 minutes and has legal implications if skipped
  • A checklist run before every release costs less than one production incident
Share:
S

Sudarshan Chaudhari

AI Systems Builder / Product Engineer

Bangkok, Thailand

Solo Android developer with 13+ years in QA, building Android apps, AI automation systems, and developer tools at SudarshanTechLabs.

Stay updated

Get new posts on Android, Kotlin, and solo dev straight to your inbox.

Newsletter preferences

Related Apps

MyFamilyTracker

Real-time family location sharing — Firebase Realtime DB for sub-second propagation, WorkManager + ForegroundService for OS-compliant background collection, geofencing via Google Maps API.

Building something? Available for Android dev and QA consulting.

Work with me

Comments — powered by Giscus