A4Q Foundation Level Tester for Appium cheat sheet
A4Q Foundation Level Tester for Appium · Keep the key ideas within reach.
Mobile Application Testing Fundamentals
Native app: built with platform SDKs, uses platform UI widgets, needs a distinct build per platform (iOS/Android).
Mobile web app: runs in the device browser, shares one HTML/JS codebase across platforms, no install step.
Hybrid app: native shell plus embedded WebView displaying web content; automation must switch contexts between native and web.
Test pyramid for mobile: many unit tests, service/API tests, fewer UI tests - UI tests are slowest and most flaky.
Device fragmentation: coverage decisions keyed on OS version share, screen size/density, and manufacturer skin.
Interrupt testing: exercise incoming calls, SMS, notifications, low battery, and network loss during app activity.
Network condition testing: verify behavior on 2G/3G/4G/Wi-Fi, airplane mode, and high-latency or dropped connections.
Installation/upgrade paths: fresh install, upgrade over previous version, and uninstall/reinstall must each preserve or clear data as specified.
Non-functional axes: battery drain, memory footprint, cold/warm start time, and responsiveness under background load.
Automating Native, Hybrid and Mobile Web Apps with Appium
Appium architecture: client sends W3C WebDriver commands over HTTP to an Appium server, which drives platform automation frameworks (XCUITest on iOS, UiAutomator2/Espresso on Android).
Desired capabilities: platformName and automationName are required; app/appPackage+appActivity (Android) or app/bundleId (iOS) select the app under test.
noReset vs fullReset: noReset keeps app data between sessions; fullReset uninstalls/reinstalls the app; default behavior differs per driver, so set explicitly.
Context switching: driver.getContextHandles() lists NATIVE_APP and WEBVIEW_* entries; driver.context(name) switches; hybrid tests must return to NATIVE_APP before native commands.
Locator strategy order of preference: accessibility id > id > platform-specific (Android UiAutomator / iOS predicate or class chain) > xpath (slowest, most brittle).
Mobile gestures use the W3C Actions API (pointer/touch input sequences) for tap, swipe, long press, and pinch; legacy TouchAction is deprecated.
Waits: implicit wait applies globally to findElement; explicit WebDriverWait with expected conditions handles async UI; avoid Thread.sleep in committed tests.
WebView automation needs debuggable web content: Android setWebContentsDebuggingEnabled, iOS enableWebInspector on the simulator.
Parallel execution requires unique device UDIDs/systemPorts and separate Appium server instances or a Selenium Grid/device cloud.