99testsStart a job

Test case library · Mobile platform

Test cases for app updates, forced and flexible

This flow covers how users move from an old version of the app to a new one: forced update screens, flexible in-app updates on Android, iOS update prompts and the first launch after updating. In India many users turn off auto-update to save data and storage, so they jump several versions at once on budget phones. Failures show up as forced update screens with nothing to install, surprise logouts, lost data and crashes on first launch.

36 test cases11 release-blocking (P1)11 need a real phoneUpdated 2026-10-29

From the reviews. 15 malfunction reviews (4.7%) said the problem started after an update, 6 of them on banking apps, and 44% of apps' latest release notes said only “bug fixes and improvements”.

category page · India App Quality Report

In scope

  • Forced update screen for a minimum version
  • Android flexible in-app updates and iOS update prompts
  • Upgrades from very old versions and data migration
  • Low storage and mobile data downloads
  • Staged rollouts with two versions live
  • Login, permissions and settings after updating

Out of scope

  • Store listing text and screenshots
  • Store review and release approval

Before you start

  • Several older builds of the app, including one a few releases old
  • Access to a Play Store testing track and an iOS beta channel for the new build
  • A way to change the minimum supported version in a test environment
  • Budget Android phones from Xiaomi, Vivo or Oppo, a Samsung phone and an iPhone
  • A SIM with mobile data on Jio, Airtel or Vi
Show
Add to a test plan

Happy path6

UPD-01

Update from the forced update screen after the minimum version is raised

P1functional
  1. Log in on an older build.
  2. Raise the minimum supported version above that build in the test environment.
  3. Close and reopen the app, then tap Update on the forced update screen.
  4. Install the update and open the app.

Expected: A full-screen message explains that an update is needed, and Update opens this app's store page. After updating, the app opens to the logged-in home screen.

UPD-02

Download a flexible update on Android while using the app

P2functional
  1. On an Android phone with an older build from the Play testing track, open the app.
  2. Accept the update prompt.
  3. Keep browsing and adding items while the download runs.
  4. Tap Restart or Install when the app says the update is ready.

Expected: The app stays usable during the download and shows a prompt when it is ready. After the restart, the new version opens with the user still logged in.

UPD-03

Open the App Store from the iPhone update prompt

P2functionalreal phone
  1. On an iPhone with an older build, open the app.
  2. Read the update prompt, then tap Later.
  3. Reopen the app and tap Update on the prompt.

Expected: Later closes the prompt and the app keeps working. Update opens this app's page in the App Store, not a browser or another app.

Why a real phone: The App Store app is not available in the iOS Simulator

UPD-04

Stay logged in after updating

P1functional
  1. Log in on the current release build.
  2. Update to the new build from the store.
  3. Open the app and go to the account and orders screens.

Expected: The app opens to the logged-in home screen without asking for OTP or password. Account details and order history show as before.

UPD-05

Saved data and settings are kept after updating

P2functional
  1. On the old build, set the language, dark theme and notification preferences.
  2. Save an address, add items to the cart and mark favourites.
  3. Update the app and check each of these.

Expected: Every setting, saved address, cart item and favourite is unchanged after the update.

UPD-06

The What's new screen appears once after updating

P3functional
  1. Update to a build with a What's new screen and open the app.
  2. Close the screen.
  3. Close and reopen the app twice.

Expected: The screen appears once after the update and not on later launches.

Validation & negative6

UPD-07

Try to get past the forced update screen with Back or by reopening

P1negative
  1. Open a build below the minimum version so the forced update screen appears.
  2. Press the Back button and use the back gesture.
  3. Swipe the app away from recent apps and reopen it.
  4. On Android, start the update and press Back on the Play update screen.

Expected: Each time, the app returns to the forced update screen or closes. No other screen of the app can be reached.

UPD-08

Decline the flexible update

P2negative
  1. Open an older build that offers a flexible update.
  2. Tap No thanks or close the prompt.
  3. Use the app, then close and reopen it three times.

Expected: The app works normally after declining. The prompt does not reappear on every launch, only as often as the team designed.

UPD-09

Forced update on a phone the staged rollout has not reached

P1negative
  1. Use a phone that the store has not yet offered the new version.
  2. Check that the app's store page shows Open, not Update.
  3. Set the minimum version to the new version in the test environment.
  4. Open the app and follow the forced update screen.

Expected: The user is never left on a forced update screen while the store offers no update. Either the screen does not appear, or Update leads to a store page that offers the new version.

UPD-10

The update fails because the phone is low on storage

P2negative
  1. Fill the phone's storage until less space is free than the update needs.
  2. Start the update from the store or the app's prompt.
  3. When the store reports the space problem, open the app without updating.
  4. Free up space and update again.

Expected: The old version still opens with the user logged in and data intact. After space is freed, the update installs and the app opens logged in.

UPD-11

Tap Update on the forced update screen with no internet

P3negative
  1. Open a build below the minimum version so the forced update screen appears.
  2. Turn on airplane mode and tap Update.
  3. Turn airplane mode off and tap Update again.

Expected: Offline, the app or the store shows a no-internet message and the app does not crash. Once online, Update opens the store page.

UPD-12

The update prompt stops once the app is on the latest version

P2negative
  1. Open an older build and see the update prompt.
  2. Update from the store without tapping the prompt.
  3. Open the app several times over a day.

Expected: No update prompt or forced update screen appears on the latest version.

Edge cases6

UPD-13

Update directly from a very old version, skipping several releases

P1edge
  1. Install a build several releases old and log in.
  2. Save addresses, set the language and leave items in the cart.
  3. Update straight to the new build without installing the releases in between.
  4. Open the app and check the data.

Expected: The app opens without crashing, still logged in, with addresses, language and cart unchanged. No screen shows missing or garbled data.

UPD-14

An unsent draft survives an update

P2edge
  1. Start a review, support message or long form and leave it unsent.
  2. Update the app from the store.
  3. Open the app and go back to the draft.

Expected: The draft text is still there, or the app clearly says it could not be kept. Nothing is sent without the user tapping Send.

UPD-15

Use one account on two phones running different versions

P2edge
  1. Log in to one account on phone A, old build, and phone B, new build.
  2. On phone B, save data using a new-version feature, such as a new address field.
  3. Open and edit the same data on phone A, then check phone B.

Expected: Phone A shows the data without crashing, even if it ignores the new field. Phone A's edit does not erase what phone B saved.

UPD-16

The minimum version is raised while the old version is open

P2edge
  1. Open the old build and leave it on the home screen.
  2. Raise the minimum version above it in the test environment.
  3. In the app, open a new screen or submit an action.

Expected: The app shows the forced update screen or an update-required message, not a generic error or crash. A half-finished action is either completed or clearly reported as not done.

UPD-17

Push notifications still arrive after updating

P2edgereal phone
  1. With notifications working on the old build, update the app from the store.
  2. Do not open the app after the update.
  3. Trigger an order or transaction alert for the account.

Expected: The alert arrives even before the app is opened after the update. After opening, each later alert arrives only once.

Why a real phone: Delivery depends on the phone's live push connection and token after the update

UPD-18

Home screen shortcuts and widgets after updating

P3edge
  1. Add the app's home screen shortcuts or widget, such as Scan QR or Track order.
  2. Update the app.
  3. Tap each shortcut and look at the widget.

Expected: Each shortcut opens the right screen and the widget shows current data. A shortcut for a removed feature shows a clear message instead of crashing.

Interruptions & network5

UPD-19

Update over mobile data

P2interruptionreal phone
  1. Turn Wi-Fi off so only Jio, Airtel or Vi mobile data is on.
  2. Note the Play Store's app download preference setting.
  3. Accept the app's update prompt.
  4. Watch whether the store asks before using mobile data.

Expected: The store or the app shows the update size and asks before downloading over mobile data, as the user's setting requires. If the user declines, the old version keeps working.

Why a real phone: Downloading over a carrier network with a data pack needs a real SIM

UPD-20

The network drops or changes during a flexible update download

P2interruptionreal phone
  1. Start a flexible update download on Wi-Fi.
  2. Walk out of Wi-Fi range, or step into a lift, partway through.
  3. Keep using the app, then return to Wi-Fi.

Expected: The app stays usable while the download pauses. The download resumes or the prompt can be accepted again, and the update installs without a crash.

Why a real phone: Real Wi-Fi to mobile handover and dead zones need physical hardware and a SIM

UPD-21

Return to the app after a flexible update finished in the background

P2interruption
  1. Accept a flexible update, then press Home while it downloads.
  2. Use other apps for a few minutes.
  3. Return to the app from recent apps.

Expected: A prompt such as Update ready, Restart appears on return. Tapping it installs the update and reopens the app logged in.

UPD-22

The store installs an update while a UPI payment is in progress

P1interruptionreal phone
  1. Start a payment that hands over to a UPI app, and stop at the PIN screen.
  2. Open the Play Store and update the app being tested.
  3. Complete the payment in the UPI app and return.

Expected: The updated app opens and shows the payment's final status without starting a second payment. If the status is not known yet, it shows Pending.

Why a real phone: Needs a real UPI app handover and return on a physical phone

UPD-23

The app is interrupted during its first launch after updating

P2interruption
  1. Update from an old build to the new one.
  2. Open the app and press Home straight away while it loads.
  3. Swipe it away from recent apps, then open it again.

Expected: The app opens normally on the next launch with data intact. It does not crash, loop on the splash screen or ask for login again.

Device & OS6

UPD-24

First launch after updating on a budget phone with 3–4 GB RAM

P1performancereal phone
  1. On a budget phone with 3–4 GB RAM and little free storage, install the old build.
  2. Log in and use the main features so local data builds up.
  3. Update, then open the app and time the first launch.

Expected: The first launch completes without a crash or App not responding dialog, and any data upgrade shows progress. Later launches are as fast as before the update.

Why a real phone: First-launch data upgrades run slowest on budget phones with slow storage and low RAM

UPD-25

Update on the oldest Android and iOS versions the app supports

P2compatibility
  1. Install the old build on the oldest supported Android version and iOS version.
  2. Update to the new build.
  3. Open the app and visit the main screens.

Expected: The app opens and the main screens load without crashing or blank areas.

UPD-26

Forced update on a phone whose OS is too old for the new version

P1compatibility
  1. Use a phone on an Android or iOS version the new build no longer supports.
  2. Set the minimum version to the new build in the test environment.
  3. Open the app and tap Update.

Expected: The app explains that this phone's software version is no longer supported and what the user can do. It does not show an Update button that leads to a store page with no update.

UPD-27

Autostart and battery settings are kept after updating

P2compatibilityreal phone
  1. On a Xiaomi, Vivo or Oppo phone, allow autostart and remove battery restrictions for the app.
  2. Update the app from the store.
  3. Check the same settings, then close the app and trigger a notification.

Expected: The settings are unchanged after the update. The notification arrives while the app is closed.

Why a real phone: Autostart and battery settings exist only in these phone makers' Android skins

UPD-28

Update a copy installed outside the Play Store

P2compatibilityreal phone
  1. Install an older build from the phone maker's app store, or an APK file your team provides.
  2. Open the app when an update is due or the minimum version is above it.
  3. Tap Update.

Expected: Update opens a store or download page where this phone can get the new version. It does not fail silently or crash because the Play Store's in-app update feature is unavailable.

Why a real phone: Phone makers' own app stores exist only on those makers' real phones

UPD-29

Reopen the app after the phone archived or offloaded it

P2compatibilityreal phone
  1. Archive the app on Android, where supported, or offload it on iPhone in Settings.
  2. Tap the app icon to download it again.
  3. Open the app.

Expected: The app reinstalls at the latest version and opens logged in, with settings and saved data intact.

Why a real phone: Archiving and offloading need a store-installed app on a real phone

Security & privacy5

UPD-30

Reach the app through a notification or link while an update is forced

P1security
  1. Open a build below the minimum version so the forced update screen appears.
  2. Close the app, then tap one of its notifications.
  3. Tap a link that opens the app on a specific screen, such as an order.

Expected: The forced update screen appears in both cases before any other screen. No account data is shown.

UPD-31

App lock is still required on the first launch after updating

P1security
  1. On the old build, turn on the app's PIN or fingerprint lock.
  2. Update the app.
  3. Open it from the store's Open button and from the home screen icon.

Expected: The app lock screen appears before any account data in both cases. The lock is still switched on in the app's security settings.

UPD-32

Fingerprint or face login after updating

P2securityreal phone
  1. On the old build, turn on fingerprint or face login.
  2. Update the app and close it.
  3. Open the app and log in with the fingerprint or face.

Expected: Biometric login works, or the app asks for the PIN once with a clear reason and then turns biometrics back on. It never logs the user in without either.

Why a real phone: Biometric sensors and secure key storage behave differently on real hardware

UPD-33

Device and SIM binding survive an update

P1securityreal phone
  1. Register the app with SIM verification, as banking and UPI apps require.
  2. Update the app from the store.
  3. Open the app and make a test transaction.
  4. Remove the registered SIM and reopen the app.

Expected: After the update, the app opens without asking to verify the SIM again and the transaction completes. With the SIM removed, the app asks for re-verification before any transaction.

Why a real phone: SIM binding needs a real SIM and carrier SMS for verification

UPD-34

Permissions after updating

P2security
  1. On the old build, allow camera and location, and deny contacts.
  2. Update to a build that also uses a new permission.
  3. Open the app, then the feature that needs the new permission.

Expected: Camera and location stay allowed and contacts stay denied, with no new prompts on launch. The new permission is asked only when its feature is opened, with a reason shown first.

Accessibility & language2

UPD-35

The chosen language is kept and update screens use it

P2localization
  1. On the old build, set the app language to Hindi or another Indian language.
  2. Open the app with an update due and read the update prompt or screen.
  3. Update and open the app again.

Expected: The update prompt or screen is in the chosen language, with no English fallback text. After the update, the app still opens in that language.

UPD-36

Update screens with a screen reader and the largest font size

P3accessibility
  1. Set the font and display size to the largest and turn on TalkBack or VoiceOver.
  2. Open the app when the forced update screen or flexible prompt appears.
  3. Move through each element on the screen.

Expected: The message is read in full and Update is announced as a button. All text and the Update button are visible without being cut off.

In the field

Where app update (forced and flexible) breaks on real phones

  • The minimum version is raised during a staged rollout, so users the store has not reached see a forced update screen with nothing to install.
  • Users who skip several releases hit a data migration path nobody tested, and the app crashes or logs them out on first launch.
  • Budget phones with nearly full storage fail to install the update, or install it and then crash while upgrading local data.
  • Raising the minimum Android or iOS version leaves older phones on a forced update screen they can never get past.
  • Copies installed from a phone maker's app store or an APK file cannot use the Play Store's in-app update feature, so the Update button does nothing.
  • After updating, biometric keys, push registration or SIM binding are lost, so users must register again or stop receiving transaction alerts.

Run these 36 cases on real phones

They fit the Standard package: 10 × 45-minute sessions on 4 phones or browsers of your choice, up to ~50 cases, ₹18,999 + GST ($249), verified report in 3 business days. The 11 P1 cases alone fit Starter (₹9,999 + GST).

Download the CSV, pick the package at checkout and upload the file with your build. Testers run them on their own phones, on Jio, Airtel and Vi.

Questions

About testing app update (forced and flexible)

What is the difference between a forced update and a flexible update?

A forced update blocks the app until the user installs the new version, and is used when the old version must not be used any more. A flexible update lets the user keep using the app while the new version downloads, then asks them to restart. On Android both can run inside the app through the Play Store's in-app update feature, while on iOS the app shows its own prompt and opens the App Store.

How do I test an app update from a very old version?

Keep installable builds of past releases, install one that is several releases old, and use it to create real data such as a login, addresses, drafts and settings. Then update straight to the new build without the versions in between, and check that the user stays logged in and the data is intact. Repeat on a budget phone with little free storage, where the first launch is slowest.

How do staged rollouts affect forced updates?

During a staged rollout the store offers the new version to only part of the users, so old and new versions are live at the same time. If the minimum version is raised to the new version too early, users outside the rollout are stuck on a forced update screen with nothing to install. Raise the minimum version only after the rollout reaches everyone, and test the old version against the new backend.

Related flows

Test these next

Your AI wrote the test cases. Run them on real phones.

99tests runs your cases, AI-generated ones included, on the phones, laptops and browsers your users own. Every finding is verified, serious bugs come with a screen recording, and each case comes back pass, fail, blocked or not run.