Lesson 1 of 10 · Lesson + Lab · 60 min · Free preview

Mobile Testing Fundamentals & the Manual Mobile Checklist

Understand native, hybrid and mobile-web apps, device fragmentation and the mobile-only test areas, then execute an interrupt, network and permission checklist on Sauce Labs My Demo App.

Why this matters on the job

In India most users meet your product on a phone, not a laptop. A UPI payment, a grocery order or an OTP login happens on a budget Android device with 3 GB of RAM, a flaky 4G signal and a battery saver that kills background apps. When a mobile release breaks, it breaks in public: one-star Play Store reviews arrive within hours and you cannot hot-fix a binary that is already installed on lakhs of phones. That is why product companies expect a QA engineer to bring a mobile-specific checklist, not just a web test suite run on a smaller screen.

Interviewers at both service and product companies regularly ask: "What will you test in a mobile app that you would not test on the web?" By the end of this lesson you will answer that with a structured checklist and you will have executed it against a real demo app.

Concepts

1. Types of mobile apps

TypeHow it is builtExampleWhat changes for testing
NativeKotlin/Java (Android), Swift (iOS) using platform UI widgetsPhone dialer, most banking appsFull access to device APIs; Appium drives it through UiAutomator2 / XCUITest
HybridNative shell plus WebView pages (Cordova, Ionic, in-app web screens)Help/FAQ screens, payment gateway pages inside an appTwo worlds: NATIVE_APP context and WEBVIEW context; you must switch
Cross-platformReact Native / Flutter rendering to native or custom canvasMany startup appsLocators depend on how developers set testID / Semantics labels
Mobile web / PWAWebsite opened in Chrome/Safari, optionally installablem.site.comBrowser testing on a phone; Appium uses Chrome/Safari automation

2. Emulator, simulator or real device?

OptionGood forCannot reliably test
Android Emulator (AVD)Daily automation, debugging, CI, many API levels for freeReal camera, OEM skins (MIUI/HyperOS, One UI, ColorOS), true performance and battery
iOS Simulator (macOS only)Fast iOS UI automationPush notifications on older Xcode, camera, real performance
Real device / device cloudRelease sign-off, OEM bugs, performance, network, biometricsNothing major, but costs money and time

3. Device fragmentation

Android runs on thousands of models. You cannot test them all, so you build a device matrix from analytics: the top OS versions (for example Android 12-15), the top 5-8 models your users actually have, at least one low-RAM phone, one small screen and one tablet or foldable if your app supports it. iOS fragmentation is smaller: usually the current and previous major iOS version on two or three iPhone sizes.

4. The mobile-only test areas

AreaWhat to check
Install / update / uninstallFresh install, upgrade from previous version keeps login and data, uninstall clears data
InterruptsIncoming call, SMS, notification, alarm, low-battery popup while user is mid-flow
NetworkWi-Fi to mobile data switch, airplane mode mid-request, slow 2G/EDGE, timeout messages, retry
PermissionsAllow, Deny, "Don't ask again", revoke from Settings while app is open
LifecycleBackground/foreground, process death (state restoration), rotation, split screen
Hardware & OSBack button, keyboard overlap, dark mode, font scaling, battery saver, low storage
Localization & accessibilityHindi / regional strings that are longer than English, TalkBack labels, touch target size

Hands-on Lab: Run a mobile checklist on Sauce Labs My Demo App

You will execute a real interrupt/network/permission checklist on the free Sauce Labs demo app. If you already have an Android phone, you can do this today; Lesson 2 sets up the emulator and adb, after which you should repeat steps 4-6 with the commands shown.

  1. Download the latest APK from the my-demo-app-android Releases page (the asset ending in .apk) and save it as mda.apk.
  2. On a physical phone: enable Developer options (Settings > About phone > tap Build number 7 times), allow installing unknown apps for your browser or file manager, then open mda.apk to install. On an emulator: adb install -r mda.apk.
  3. Open the app, browse the catalog, open Sauce Labs Backpack, tap Add To Cart and confirm the cart badge shows 1. This is your happy path.
  4. Execute the checklist below. For every row record Pass/Fail, device model, Android version and app version.
  5. Simulate interrupts and network conditions on an emulator with adb (expected results are in the table):
# Incoming call and SMS (emulator console via adb)
adb emu gsm call 9876543210
adb emu gsm cancel 9876543210
adb emu sms send 9876543210 "Your OTP is 482913"

# Network: slow EDGE, then airplane mode, then back to normal
adb emu network speed edge
adb emu network delay gprs
adb shell cmd connectivity airplane-mode enable
adb shell cmd connectivity airplane-mode disable
adb emu network speed full
adb emu network delay none

# Battery: fake 5% and unplugged, then reset
adb shell dumpsys battery unplug
adb shell dumpsys battery set level 5
adb shell dumpsys battery reset

# Permissions: revoke camera while the app is running
adb shell pm revoke com.saucelabs.mydemoapp.android android.permission.CAMERA

# Process death: press Home, then kill the background process, then reopen from Recents
adb shell input keyevent KEYCODE_HOME
adb shell am kill com.saucelabs.mydemoapp.android
IDScenarioStepsExpected result
MOB-01Call during add-to-cartOpen product, trigger call, reject it, returnSame product screen; quantity and cart badge unchanged
MOB-02OTP SMS notificationSend SMS while on Login screenNotification shows; app does not crash; typed username is retained
MOB-03Slow networkSet EDGE + GPRS delay, open catalog and WebView screenLoader or graceful error, no frozen UI or ANR dialog
MOB-04Airplane mode mid-flowEnable airplane mode on WebView screen, tap GoClear offline message; recovers after disabling
MOB-05RotationRotate on product details with quantity 3Quantity stays 3; layout not cut off
MOB-06Camera permission deniedMenu > QR Code Scanner > DenyExplains why permission is needed; no crash; can re-request
MOB-07Process deathAdd item, Home, am kill, reopenApp restores sensibly (cart retained or clear empty state), no crash
MOB-08Font scale 1.3Settings > Display > Font size maxProduct names and buttons readable, not truncated
  1. For any failure, write a bug in this format and attach a screen recording (adb shell screenrecord /sdcard/bug.mp4, stop with Ctrl+C, then adb pull /sdcard/bug.mp4):
Title  : [Android 14][Pixel 7] Cart badge resets to 0 after incoming call on Product Details
Build  : mda 2.x (from Releases), Android 14 (API 34) emulator
Steps  : 1) Open Sauce Labs Backpack 2) Tap Add To Cart (badge = 1)
         3) adb emu gsm call 9876543210 4) Reject call
Actual : Badge shows 0, item missing in cart
Expected: Badge shows 1, item present
Severity: Major   Priority: P2   Frequency: 3/3
Logs   : adb logcat -d > logcat.txt (attached), bug.mp4 (attached)

Expected outcome: an 8-row executed checklist with device details and at least one well-written observation or bug. Most learners find that the demo app handles these well; the skill being graded is the coverage and evidence, not finding a crash.

Common mistakes

  • Testing only on the newest Pixel emulator. Real users in India are on mid-range Xiaomi, Samsung, Realme, Vivo and Oppo devices with aggressive battery optimisation.
  • Writing "app crashed" with no build number, device, OS version or logcat. Developers will bounce the ticket back.
  • Forgetting upgrade testing: always install the previous production build, log in, then upgrade to the new build.
  • Treating permissions as one test. Allow, Deny, Deny-twice ("Don't ask again") and revoke-from-Settings are four different code paths.
  • Ignoring Hindi/regional translations, which are often 30-40% longer than English and break buttons.

Real-world assignment

Your lead says: "We are launching a UPI bill-payment feature next sprint. Give me a mobile test matrix by tomorrow." Produce a spreadsheet with (1) a device/OS matrix of 6 devices justified by user share, (2) at least 25 mobile-specific test cases grouped by the areas in the table above, including what happens when the user switches to the UPI app and comes back, and (3) a list of 5 scenarios you would automate with Appium and 5 you would keep manual, with one-line reasons.

Key takeaways

  • Mobile testing = functional testing + interrupts, network, permissions, lifecycle, hardware, fragmentation.
  • Know the four app types; hybrid apps need context switching in automation.
  • Emulators are for speed and CI; real devices are for sign-off, OEM bugs and performance.
  • Build a device matrix from real analytics, not from what is on your desk.
  • Every mobile bug needs device, OS, build, steps, logcat and a video.

🧪 Practical checklist

Do each task yourself and tick it off. All tasks are required to complete this lesson.

🎤 Interview questions

What would you test in a mobile app that you would not test in a web app?

Interrupts (calls, SMS, notifications), network switching and offline mode, runtime permissions, app lifecycle such as background and process death, rotation, battery and storage conditions, install/upgrade/uninstall, and device fragmentation across OS versions and OEMs.

What is the difference between a native, hybrid and mobile web app?

A native app uses platform UI widgets, a hybrid app wraps web pages in a WebView inside a native shell, and a mobile web app runs in the phone browser. In Appium, hybrid apps require switching between NATIVE_APP and WEBVIEW contexts.

When would you insist on a real device instead of an emulator?

For release sign-off, OEM-specific behaviour, camera/biometrics/NFC, real network conditions, performance, battery and thermal issues, which emulators cannot reproduce faithfully.

How do you decide which devices to test on?

From production analytics or Play Console data: cover the top OS versions and models by user share, plus edge devices such as a low-RAM phone, a small screen and a tablet or foldable if supported.

📝 Quiz, progress tracking & certificate

You're reading a free preview. Premium members tick off labs, take the quiz, unlock all 10 lessons and earn a verifiable certificate.

💎 Unlock with Premium Premium login
✓ You're subscribed! Job alerts arrive daily at 9 AM.
Scroll to Top