50 Appium & Mobile Testing Interview Questions (2026 Guide)
50 mobile testing and Appium 2 interview questions with answers and Java code — test types, architecture, capabilities, locators, gestures, hybrid apps, parallel runs and device farms.
Almost every Indian product now has an Android and iOS app, so “Mobile Testing” and “Appium” appear in a large share of QA job descriptions — from manual mobile testers to SDETs building cross-platform frameworks.
This guide covers 50 mobile testing and Appium interview questions in five groups: mobile testing concepts, Appium 2 architecture, capabilities and locators, gestures and device actions, and framework design with real devices. Code uses the Appium Java client (version 9), the most common stack in Indian companies.
Mobile testing concepts (1–10)
1. What is mobile application testing?
Testing an app on mobile devices for functionality, usability, compatibility, performance, security and behaviour under real-world conditions such as low network, interruptions, low battery and different screen sizes and OS versions.
2. Native vs hybrid vs mobile web apps?
Native apps are built for one platform (Kotlin/Java for Android, Swift for iOS) and installed from the store. Hybrid apps wrap web content in a native shell (WebView) — Ionic, Cordova, or partly React Native screens. Mobile web apps run in the mobile browser and are not installed.
3. Which types of testing are specific to mobile?
Installation/uninstallation/upgrade, interruption testing (calls, SMS, notifications), network testing (2G/3G/4G/Wi-Fi/offline switching), battery and resource usage, orientation changes, permissions, push notifications, deep links, gestures, app backgrounding, and device fragmentation (screen sizes, OS versions, OEM skins).
4. What is interruption testing? Give examples.
Checking how the app behaves when something interrupts it: an incoming call, SMS, alarm, low-battery popup, network loss, charger connect, another app opened, or the phone being locked. The app should pause and resume without losing data or crashing.
5. Emulator vs simulator vs real device?
An emulator (Android) mimics both hardware and software; a simulator (iOS) mimics only the software environment on a Mac. Both are fast and cheap for early testing. Real devices are needed for camera, sensors, real network, performance, battery, OEM-specific bugs and final sign-off.
6. What is device fragmentation and how do you handle it?
The huge variety of devices, screen sizes, OS versions and manufacturer customisations, especially on Android. Handle it with a device matrix based on analytics (top devices and OS versions of your users), a mix of emulators and real devices, and cloud device farms such as BrowserStack, Sauce Labs, LambdaTest or AWS Device Farm.
7. What is an APK and an IPA?
An APK (or AAB for the Play Store) is the Android app package; an IPA is the iOS app package. Testers install debug builds on devices — adb install app.apk for Android, and TestFlight, Xcode or a device farm for iOS.
8. What should you check in a mobile app upgrade test?
Install the old version, create data (login, settings, cart), upgrade to the new version and verify the user stays logged in, data and settings are preserved, database migrations work, and new permissions are requested correctly. Also check a fresh install of the new version.
9. How do you test push notifications?
Verify receipt with the app in foreground, background and killed state; tap behaviour and deep-link destination; content and images; behaviour when notification permission is denied; and that opt-out settings are respected.
10. Which tools are used for mobile testing besides Appium?
Espresso (Android) and XCUITest (iOS) for native UI tests, Android Studio and Xcode for builds and logs, adb, Charles or Proxyman for network inspection, Firebase Test Lab and device clouds for real devices, and Maestro or Detox in some teams.
Appium basics and architecture (11–20)
11. What is Appium?
Appium is an open-source tool for automating native, hybrid and mobile web apps on Android and iOS (and other platforms) using the W3C WebDriver protocol. You can write tests in Java, Python, JavaScript, C# or Ruby, and you do not need to modify the app.
12. Explain the Appium architecture.
Your test (client library) sends WebDriver commands over HTTP to the Appium server (Node.js). The server forwards them to a platform driver — UiAutomator2 for Android or XCUITest for iOS — which executes them on the device or emulator and returns the result.
13. What changed in Appium 2?
Drivers and plugins are installed separately (appium driver install uiautomator2, appium driver install xcuitest), the base path is / instead of /wd/hub, non-standard capabilities need the appium: prefix, JSON Wire Protocol is removed, and Appium Desktop is replaced by the standalone Appium Inspector.
14. How do you set up Appium for Android?
Install Java (JDK), Android SDK with platform-tools, set ANDROID_HOME and JAVA_HOME, install Node.js, run npm i -g appium and appium driver install uiautomator2, then start appium. Check the setup with appium-doctor (or appium driver doctor uiautomator2) and adb devices.
15. What do you need to automate iOS?
A Mac with Xcode, the XCUITest driver, WebDriverAgent (built and signed with a development team for real devices), and the app as a simulator build (.app) or signed IPA for devices.
16. What is Appium Inspector?
A GUI that connects to an Appium session to show the app screenshot and element tree. You can see attributes (resource-id, accessibility id, text, class), try locators and record basic actions — the main tool for building locators.
17. What is UiAutomator2?
The Appium driver for Android based on Google’s UiAutomator framework. It installs a server APK on the device that drives the UI. It is the default and recommended Android driver; Espresso driver is an alternative for faster, more synchronised tests when you have the app source.
18. What is WebDriverAgent?
A WebDriver server for iOS created by Facebook and maintained by Appium. The XCUITest driver installs it on the simulator or device; it uses Apple’s XCTest framework to perform actions.
19. How do you find appPackage and appActivity?
Open the app on the device and run adb shell dumpsys window | grep -E 'mCurrentFocus|mFocusedApp' (use findstr on Windows). The output shows package/activity. You can also use aapt dump badging app.apk.
20. Name useful adb commands for testers.adb devices, adb install -r app.apk, adb uninstall com.app, adb shell pm clear com.app (clear data), adb logcat (logs), adb shell screencap and screenrecord, adb shell input text, and adb shell svc wifi disable for network checks.
🚀 Looking for mobile testing jobs?
QA Jobs India shares 100+ fresh QA & software testing openings every morning — manual, automation, API and remote roles.
See today’s QA jobs →Capabilities, sessions and locators (21–30)
21. What are capabilities in Appium?
Key-value settings sent when creating a session that tell Appium which platform, driver, device and app to use, and how to behave. Standard ones: platformName; Appium ones use the appium: prefix, e.g. appium:automationName, appium:deviceName, appium:udid, appium:app, appium:appPackage, appium:appActivity, appium:bundleId.
22. Write code to start an Android session (Java client 9).
Use the options classes instead of raw DesiredCapabilities:
UiAutomator2Options options = new UiAutomator2Options()
.setDeviceName("Pixel_7_API_34")
.setApp(System.getProperty("user.dir") + "/apps/app-debug.apk")
.setAppWaitActivity("*")
.setAutoGrantPermissions(true)
.setNewCommandTimeout(Duration.ofSeconds(120));
AndroidDriver driver = new AndroidDriver(
new URL("http://127.0.0.1:4723"), options);
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));23. noReset vs fullReset?noReset: true keeps app data between sessions (no clearing, no reinstall). fullReset: true uninstalls the app and clears data before and after the session. The default (both false) clears app data on Android but does not reinstall.
24. Which locator strategies does Appium support?
Accessibility ID (best for cross-platform), ID (Android resource-id), class name, XPath, Android UIAutomator selectors, iOS class chain and iOS predicate string. In Java client 9 use AppiumBy.accessibilityId(), AppiumBy.id(), AppiumBy.androidUIAutomator(), AppiumBy.iOSClassChain() and AppiumBy.iOSNsPredicateString().
25. Why avoid XPath in mobile automation?
XPath forces Appium to read the full page source (XML) and search it, which is slow — especially on iOS — and breaks easily when the layout changes. Prefer accessibility id or resource-id, and ask developers to add contentDescription/accessibilityIdentifier to key elements.
26. What is accessibility ID?
The content-desc attribute on Android and accessibilityIdentifier on iOS. Because both platforms can use the same value, it lets one locator work on Android and iOS, and it also improves app accessibility.
27. How do you scroll to an element on Android?
Use UiScrollable through the UiAutomator locator:
WebElement item = driver.findElement(AppiumBy.androidUIAutomator(
"new UiScrollable(new UiSelector().scrollable(true))" +
".scrollIntoView(new UiSelector().text(\"Settings\"))"));
item.click();28. How do you verify an Android toast message?
With UiAutomator2, toasts can be located by XPath //android.widget.Toast and read with getText() (or getAttribute("name")) — wait for it with an explicit wait because it disappears in about 2–3 seconds.
29. How do you handle waits in Appium?
Use explicit waits (WebDriverWait with ExpectedConditions) for specific elements, keep a small implicit wait or none (do not mix large implicit and explicit waits), and avoid Thread.sleep. Increase newCommandTimeout for long debugging sessions.
30. How do you handle the keyboard?driver.hideKeyboard() closes it, driver.isKeyboardShown() checks it, and pressKey(new KeyEvent(AndroidKey.ENTER)) sends keys on Android. Setting appium:hideKeyboard can also help on Android.
Gestures, hybrid apps and device actions (31–40)
31. How do you perform tap, swipe and long press in Appium 2?
TouchAction and MultiTouchAction are deprecated. Use W3C Actions (PointerInput + Sequence) or driver extension commands like mobile: clickGesture, mobile: longClickGesture, mobile: swipeGesture and mobile: scrollGesture on Android.
// swipe left on an element (UiAutomator2)
driver.executeScript("mobile: swipeGesture", Map.of(
"elementId", ((RemoteWebElement) card).getId(),
"direction", "left",
"percent", 0.75));
// long press
driver.executeScript("mobile: longClickGesture", Map.of(
"elementId", ((RemoteWebElement) item).getId(),
"duration", 1500));32. Write a swipe using W3C Actions.
Define a finger, move to the start point, press, move to the end point over time, and release:
PointerInput finger = new PointerInput(PointerInput.Kind.TOUCH, "finger");
Sequence swipe = new Sequence(finger, 1)
.addAction(finger.createPointerMove(Duration.ZERO, PointerInput.Origin.viewport(), 500, 1600))
.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg()))
.addAction(finger.createPointerMove(Duration.ofMillis(600), PointerInput.Origin.viewport(), 500, 400))
.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg()));
driver.perform(List.of(swipe));33. How do you automate a hybrid app?
Switch from the native context to the WebView context, use normal web locators, then switch back. The WebView must be debuggable (setWebContentsDebuggingEnabled(true)) in the build:
Set<String> contexts = driver.getContextHandles(); // NATIVE_APP, WEBVIEW_com.app
driver.context("WEBVIEW_com.app");
driver.findElement(By.cssSelector("#email")).sendKeys("qa@test.com");
driver.context("NATIVE_APP");34. How do you test mobile web (Chrome on Android)?
Set browserName to Chrome (Safari on iOS) instead of an app; Appium starts the browser through Chromedriver, and you write normal Selenium web code. Make sure the Chromedriver version matches the device Chrome (Appium can auto-download it with --allow-insecure chromedriver_autodownload).
35. How do you put an app in the background or restart it?driver.runAppInBackground(Duration.ofSeconds(5)), driver.terminateApp("com.app") and driver.activateApp("com.app"). These help test state restoration and interruptions.
36. How do you change orientation?driver.rotate(ScreenOrientation.LANDSCAPE) and check driver.getOrientation(). Verify that layout adapts and entered data is not lost.
37. How do you open a deep link?
On Android: driver.executeScript("mobile: deepLink", Map.of("url", "myapp://orders/1042", "package", "com.app")). On iOS you can call driver.get("myapp://orders/1042") or open the URL through Safari. Assert the correct screen opens, including when the user is logged out.
38. How do you handle permission popups?
Use appium:autoGrantPermissions on Android (grants all at install), or tap the system dialog buttons (com.android.permissioncontroller:id/permission_allow_button). On iOS use appium:autoAcceptAlerts/autoDismissAlerts or handle the alert with driver.switchTo().alert(). Also test the “Deny” path manually.
39. How do you capture logs, screenshots and video?
Screenshots: driver.getScreenshotAs(OutputType.FILE). Video: startRecordingScreen() / stopRecordingScreen() (base64). Logs: driver.manage().logs().get("logcat") on Android or syslog on iOS. Attach them to the report on failure.
40. How do you simulate network conditions?
On Android emulators use driver.setConnection()/toggleWifi() or adb commands; on real devices and clouds use the provider’s network throttling. Tools like Charles/Proxyman can throttle and mock API responses to test slow and error states.
Framework, parallel runs and real devices (41–50)
41. How do you design an Appium framework?
Java + Appium client + TestNG, Page Object Model with separate Android/iOS locators (@AndroidFindBy/@iOSXCUITFindBy with PageFactory or a locator map), a DriverFactory reading capabilities from config/JSON per platform, ThreadLocal driver for parallel runs, utility classes for gestures and waits, Extent/Allure reports, and Maven + Jenkins/GitHub Actions.
42. How do you write one test for both Android and iOS?
Keep test steps the same and abstract the locators per platform in page objects (annotations or a platform-keyed locator file). Use accessibility IDs where both apps share them, and choose the driver at runtime from a platform parameter.
43. How do you run Appium tests in parallel?
Each device needs its own session with a unique udid; on Android also a unique systemPort (and chromedriverPort for web), on iOS a unique wdaLocalPort. Use TestNG parallel with ThreadLocal drivers, separate Appium servers or one server, or Selenium Grid 4 with Appium nodes / a device cloud.
44. How do you start the Appium server programmatically?
With AppiumServiceBuilder and AppiumDriverLocalService: choose any free port, start it in @BeforeSuite, pass service.getUrl() to the driver and stop it in @AfterSuite. This removes the manual “start Appium” step in CI.
45. How do you run tests on BrowserStack or other device clouds?
Upload the app to the provider, then point the driver to their hub URL with your username/access key and their capabilities (device, OS version, app id). Keep keys in environment variables. Most clouds also give videos, logs and network throttling.
46. What are the most common challenges in mobile automation?
Flaky waits and animations, missing or dynamic IDs, slow XPath, device fragmentation, OS popups, keyboard overlap, emulator instability in CI, iOS signing and WebDriverAgent setup, and keeping Android and iOS page objects in sync.
47. How do you speed up Appium tests?
Use accessibility id/id instead of XPath, disable animations on test devices, use noReset with deep links or API calls to skip login, avoid unnecessary screenshots, run in parallel, and prefer Espresso/XCUITest for very large native suites.
48. How do you test app performance on mobile?
Measure launch time (cold/warm), screen load times, CPU, memory, battery and network usage with Android Studio Profiler, Xcode Instruments, Firebase Performance or cloud device metrics. Appium can collect basic data via getPerformanceData() on Android.
49. What is Espresso, and when would you use it instead of Appium?
Google’s native Android UI test framework, written in Kotlin/Java inside the app project. It is faster and auto-synchronises with the UI thread, so it is ideal for developers and large native suites. Appium is better for black-box, cross-platform tests in any language without app source.
50. Explain your mobile automation project in 60 seconds.
Sample answer: “I automated a fintech Android and iOS app using Appium 2 with Java, TestNG and POM. Locators are kept per platform with accessibility IDs where possible. A DriverFactory reads platform capabilities from JSON. We run smoke tests on emulators in Jenkins on every build and regression on 12 real devices on BrowserStack in parallel. Reports are in Allure with screenshots and video on failure. I also test interruptions, network switching and upgrades manually.”
Mobile testing checklist for interviews
- Functional: login, signup, OTP, forms, navigation, back button behaviour, deep links.
- UI: layout on small and large screens, dark mode, orientation, font scaling, keyboard overlap.
- Device: permissions, camera, location, notifications, background/foreground, low storage, low battery.
- Network: offline mode, slow network, switching Wi-Fi ↔ mobile data, retry messages.
- Lifecycle: install, upgrade from older version, uninstall/reinstall, data migration.
- Security: data on device, session timeout, screenshots of sensitive screens, root/jailbreak handling.
Revise the basics with our manual testing interview questions and keep the QA cheat sheets handy for quick revision.
FAQs
Is Appium still used in 2026?
Yes. Appium 2 is the most widely used open-source tool for cross-platform mobile automation in India, especially in Java-based QA teams and with device clouds.
Do I need coding to become a mobile tester?
Not for manual mobile testing, but basic Java (or Python/JavaScript) plus Appium greatly increases the number of jobs and the salary you can target.
Can I learn iOS automation without a Mac?
You can write the code, but running XCUITest needs macOS. Use a cloud device provider to run iOS tests if you do not have a Mac.
What is the best way to practise Appium?
Use an open-source demo APK (for example a sample shopping app), automate login, product search, cart and checkout with POM and TestNG, and run it on an emulator and one real phone.
📚 More QA interview question banks
Selenium (60) · Playwright (50) · Manual Testing (60) · API Testing (50) · SQL for Testers (50) · Mobile / Appium (50) · JIRA & Agile (50) — open the all-in-one QA Study Material hub →
💎 Get every QA opening, every day
Join QA Jobs India Premium for 100+ verified QA jobs daily with HR contact details.