Mobile Testing Interview Q&A

Curated & Reviewed by Rammehar Dhiman, Senior QA Automation Engineer

Expert Q&A covering Appium, Android & iOS testing, emulators, real devices, and mobile automation — in English & Hinglish.

Industry Best Practices for Mobile QA

Following these mobile-specific guidelines ensures comprehensive coverage and prevents unexpected production crashes.

1. Prioritize Real Device Testing

While simulators and emulators are good for early development, always perform final verification on real devices to catch hardware-specific glitches.

2. Enforce Strict Interruption Testing

Verify app state integrity against incoming calls, text notifications, locks, low battery warnings, and sudden Wi-Fi/data switches.

3. Track Performance Metrics Regularly

Monitor memory usage (leaks), CPU utilization, and battery drain. High resource utilization leads to operating system background termination.

4. Prefer Platform-Agnostic Element Locators

Always request developer-defined accessibilityID (iOS) or content-desc (Android). Avoid fragile XPaths to keep scripts stable across platforms.

📌 Mobile Testing (Mobile QA)

1. What is the difference between Mobile App testing and Web testing?
English: Mobile testing involves testing apps on small devices considering diverse screen sizes, OS versions (iOS/Android), and battery/network constraints. Web testing focuses primarily on cross-browser compatibility on desktops.
Hinglish: Mobile testing mein hum battery, network restrictions aur alag-alag OS check karte hain, jabki web testing mainely desktop ke browsers (Chrome, Firefox) par focus karta hai.
2. What are the different types of mobile applications?
English: There are three main types:
Native App: Built specifically for an OS (Swift for iOS, Kotlin for Android).
Web App: Mobile-friendly websites accessed via the mobile browser.
Hybrid App: Web technology wrapped inside a native shell, functioning across multiple platforms.
Hinglish: Teen types hote hain: Native (sirf Android ya iOS ke liye), Web App (jo device ke browser par chalti hai), aur Hybrid (dono ka mixture jo multiple OS pe chale).
3. What is the fundamental difference between Simulator and Emulator?
English / Hinglish:
- Emulator: Mimics both the device's exact hardware and software. It is slower but highly accurate (often used for Android).
- Simulator: Mimics only the software/environment of the device, failing to emulate the exact hardware. It is much faster (often used for iOS).

Hinglish: Emulator phone ke hardware aur software dono ki nakal karta hai isliye slow hota hai. Simulator sirf software ki nakal karta hai isliye test run jaldi hota hai.
4. Explain a solid Mobile App Testing Strategy.
English: A solid QA strategy must include Functional testing, UI/UX testing across screen sizes, Performance (monitoring battery and memory), Network interruption testing (3G, 4G, airplane mode), and Installation/Uninstallation testing.
Hinglish: Mobile test strategy me UI check karna, battery consumption, internet speed issues (jaise airplane mode), aur app ko safely install/uninstall karke verify karna shaamil hota hai.
5. Name some popular mobile automation tools.
English: The most popular choices are:
- Appium: Open-source, supports both iOS and Android.
- Espresso: Native UI testing framework for Android.
- XCUITest: Native automation framework for iOS.
- BrowserStack / Sauce Labs: For running tests on real devices in the cloud.
Hinglish: Cross-platform automation ke liye Appium best hai. Native ke liye Espresso aur XCUITest use hota hai, puka BrowserStack cloud device testing me popular hai.
6. How do you test a mobile application in different network conditions?
English: We verify system behavior using tools like Charles Proxy or the device's native developer settings. We deliberately slow down the internet to simulate Edge, 3G, or 4G variations and test offline modes to test timeout handlers.
Hinglish: Hum Charles Proxy ya phone ki settings use karke 3G, ya offline (Network off) karke check karte hain ki app time-out properly handle kar raha hai ya crash ho jata hai.
7. What is Interruption Testing in mobile apps?
English: Interruption testing verifies that an app safely pauses, saves its state, and resumes correctly after an incoming phone call, SMS, device locked state, or a low battery notification.
Hinglish: Interruption testing me ye check hota hai ki jab app chalte waqt koi call ya SMS aaye, toh app background me theek se pause ho jaye aur wapis aane pe bina data loss ke resume ho sake.
8. What is mobile app fragmentation?
English: Device fragmentation refers to the large variety of screen sizes, resolutions, hardware specs, and OS versions (Android/iOS) that the app must support. We address it by testing on cloud device farms like BrowserStack.
Hinglish: Fragmentation ka matlab hai market me available alag-alag screen sizes, OS versions aur devices. Isko test karne ke liye hum real device clouds like BrowserStack use karte hain.
9. Explain the difference between WebDriver and Appium Driver.
English: WebDriver is used for automating desktop web browsers. Appium extends the WebDriver protocol (using the Mobile JSON Wire Protocol) to support native, hybrid, and mobile web applications.
Hinglish: WebDriver web browsers ko automate karne ke liye use hota hai, jabki Appium Driver usi protocol ko extend karke mobile apps (Android/iOS) ko automate karta hai.
10. What is an .apk file and .app / .ipa file?
English: An `.apk` (Android Package) file is the installation file format for Android apps. A `.app` is the simulator bundle and `.ipa` (iOS App Store Package) is the file format for installing apps on real iOS devices.
Hinglish: `.apk` Android application ki installer file hoti hai aur `.ipa` iOS application ki installer file hoti hai jo real iPhone pe deploy hoti hai.
11. What is ADB? Name some common ADB commands.
English: ADB (Android Debug Bridge) is a command-line tool that lets you communicate with a device. Common commands: `adb devices` (list devices), `adb install app.apk` (install app), `adb logcat` (view device logs), `adb shell` (open command shell).
Hinglish: ADB ek command line utility hai jo device se communicate karne me help karti hai. Example: `adb devices` list dekhne ke liye aur `adb logcat` crash logs check karne ke liye.
12. How do you perform swipe/scroll actions in Appium?
English: In Appium 2.x, we use the W3C Actions API or the mobile command executor (e.g. `mobile: scrollGesture` or `mobile: swipeGesture`). Using the legacy `TouchAction` class is deprecated.
Hinglish: Appium 2.0 me swipe karne ke liye W3C Actions API ya shell gesture commands (like mobile: swipeGesture) use hote hain, standard TouchAction ab deprecate ho chuki hai.
13. What is Appium Inspector?
English: Appium Inspector is a GUI tool used to inspect the UI hierarchy of a mobile application, enabling QA engineers to find unique accessibility IDs, XPaths, or IDs of elements for automation scripts.
Hinglish: Appium Inspector ek tool hai jisse hum mobile app ke elements (buttons, inputs) ke locators ya ID search karte hain taaki unhe automate kar sakein.
14. What are Desired Capabilities in Appium?
English: Desired Capabilities are key-value pairs sent to the Appium server to define the session (e.g., `platformName`, `deviceName`, `appActivity`, `appPackage`, `automationName`).
Hinglish: Capabilities key-value pairs hote hain jo Appium server ko batate hain ki kaunsa OS (Android/iOS), device name, aur kaunsi app execute karni hai.
15. What is the difference between cold start and warm start of an app?
English: A cold start is launching an app from scratch (not residing in memory), which takes more time. A warm start is launching an app that is already running in the background and held in RAM.
Hinglish: Cold start ka matlab hai app ko fresh start karna (jo memory me na ho). Warm start matlab app background me chal rahi hai aur use direct click karke open kiya jaye.

Appium Driver Setup Code (Java)

Below is the standard configuration class to initialize Appium Driver for Android automation in Java:

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.options.UiAutomator2Options;
import java.net.MalformedURLException;
import java.net.URL;

public class AppiumSetup {
    public static AndroidDriver driver;

    public static void setupDriver() throws MalformedURLException {
        // Setup UIAutomator2 Options for Android
        UiAutomator2Options options = new UiAutomator2Options();
        options.setPlatformName("Android")
               .setDeviceName("Emulator_5554")
               .setApp("path/to/your/app.apk")
               .setAppPackage("com.example.myapp")
               .setAppActivity("com.example.myapp.MainActivity")
               .setAutomationName("UiAutomator2");

        // Connect to the locally running Appium Server
        URL serverUrl = new URL("http://127.0.0.1:4723/");
        driver = new AndroidDriver(serverUrl, options);
        System.out.println("Appium Session Started Successfully!");
    }
}