Mobile app testing checklist

Some things to check before releasing a mobile application. Slightly iOS specific.

Startup

  • Start in different orientations
  • Start app with no internet connection
  • Delete all user data. Is the first start behaving correctly?
  • Install and use previous version of app. User data migrated correctly?

OS

  • Dark mode support working? Switching on any screen?
  • OS-wide font size applied?
  • Locale/language changes applied correctly?
  • Accesibility labels for everything?

Network

  • Initial start without internet
  • Try using each page of the app without internet
  • Turn off internet, go back to previous page
  • Is network outage during video playback handled well?
  • Wake up after a long time (week-month). Detected & refreshed?
  • Is the app usable on a slow or unreliable network connection?

Layout & navigation

  • Rotate back and forth each page
  • Rotate and go back to previous page
  • Play fullscreen video, rotate during playback, close. Layout updated correctly?
  • Blurry text anywhere? Enable highlighting of misaligned layers in Simulator
  • During a call, does the double height status bar break any layouts?
  • Tap a button 2-3 times really quickly. Only one screen instance created?
  • Look for navigation loops. Detail -> push info -> push detail -> push info etc.

Buttons

  • All buttons/elements trigger on touch up and NOT touch down?
  • All disabled/highlighted/hover/pushed states displayed correctly?
  • Are buttons large enough to hit on small screen?

Lists & views

  • Do all lists scroll to top after changing the sorting order?
  • Do all views show an “empty results” text when no data is available?
  • Showing a loading indicator when loading data takes >1s?

Tracking

  • Is analytics tracking working? Correct tracking IDs?
  • Crash reports actually sent and saved? Symbolication working?

Prolonged usage

  • Keep app running, use whole day, overnight. Still performing well?
  • Open & close a screen (open detail, go back). Repeat ~15 times. If it leaks memory it can eventually lead to a crash.

Input fields

  • Is the keyboard mode correct for all input fields?
  • Email keyboard layout for email input, numeric for phone numbers etc.
  • Placeholder text in fields that need it?
  • Is there a clear “X” button in fields that need it?
  • In email input fields, is the email format verified?
  • If maximum length is specified for fields, is the limit really applied? Even when a longer text is pasted? From input fields to local storage, to server and back?
  • If no maximum was specified, does the app actually work with very long inputs, long words, special characters? Does it break any layout, internal DB, server backend API?
  • Is it easy to hide the onscreen keyboard when needed?
  • Does auto-completion work as it should? Does it limit the number of results after typing a single letter? Does input still work when auto-completion API is offline?

Search input

  • Make a search, open one of the results, go back. Is the search text still there?
  • Does search for empty string work correctly? Single letter? Spaces? Special @#?:/ unicode emoji characters? Extra long strings? Extra long words?

Interruptions

  • Put phone to sleep and on again
  • Switch to another app and back
  • Simulate memory warning, go back to previous page
  • Simulate incoming call. App resumes correctly when call ends?

Date & time

  • Date formatting correct for different locale settings? No broken layouts?
  • Does it handle daylight saving changes correctly? Really?
  • Does it handle timezone changes correctly? Start app, suspend, change timezone, resume app. Works?

Sharing

  • Does social sharing actually work? Posts appear on FB/Twitter site? Correct title, body, images, links?
  • Correct Facebook app ID?
  • Does sharing work with and without the official Facebook/Twitter app installed on the device? Automatic login through the app?
  • Does the app show correct feedback message after sending/cancelling/failing?
  • Is the sharing email correctly formatted? In GMail, Outlook and Mail? On a mobile device?

Storage & output

  • If the app has some web caching mechanism, does it correctly restrict itself from using too much storage?
  • Does the app behave correctly when the device storage is full? (Load music or videos to your device to fill it up OR place simulator folder in a APFS volume/disk image with limited size)
  • Does the app correctly handle having its cache folders deleted by iOS? (Run in simulator and delete using Finder)
  • Does the app limit its console output in Release mode? ie. no excess debug information printed – only errors.

Legal

  • Acknowledgements page up to date with all 3rd party code/asset licensing info?
  • Is it possible to turn off usage tracking? Is the user warned about usage tracking on first start?
  • If the app has a built-in browser, is it OK to receive a 17+ rating in the app store?

OS versions

  • Fully functional on all supported OS versions?
  • Is it possible to run and use the last supported version on older devices/systems? Legacy API?

Devices

  • Does the app support all screen sizes in both orientations?