Deep Link
// Definition
A URL that opens a specific screen inside an app rather than its home screen — e.g. `myapp://orders/1042` or a universal `https://` link that the OS routes into the app. Deep links power notifications, share flows, and marketing campaigns, and they break quietly: a malformed link or unhandled path dumps the user on the wrong screen or a crash.
// Why it matters
Deep links are a high-traffic entry point that's easy to forget in test plans — every push notification, email CTA, and shared link is a deep link. QA matters because they fail in ways manual happy-path testing misses: cold-start vs warm-start routing, links to gated content while logged out, and malformed paths.
// How to test
// Drive deep links via Appium and assert the right screen opens
// (cold start — app not running)
await driver.terminateApp('com.myapp')
await driver.execute('mobile: deepLink', { url: 'myapp://orders/1042', package: 'com.myapp' })
expect(await driver.$('~order-detail-1042').isDisplayed()).to.be.true
// gated content while logged out → should route to login, not crash
await driver.execute('mobile: deepLink', { url: 'myapp://account/settings', package: 'com.myapp' })
expect(await driver.$('~login-screen').isDisplayed()).to.be.true// Common mistakes
- Testing only warm start (app already open), missing cold-start routing bugs
- Not testing deep links to auth-gated screens while logged out
- Ignoring malformed/unknown paths (should fail gracefully, not crash)
// Related terms
Native App
A mobile application built with platform-specific languages and SDKs — Swift or Objective-C for iOS, Kotlin or Java for Android. Native apps have full access to device hardware (camera, NFC, biometrics, GPS), run with the best performance characteristics, and follow each platform's UI conventions. For testers, native apps require platform-specific automation frameworks: XCUITest for iOS or Espresso for Android at the unit/integration layer, and Appium's UIAutomator2/XCUITest drivers at the end-to-end layer. Native apps are the gold standard for user experience but the most expensive to build and test across both platforms.
Push Notification
A message delivered from a server to a client device or browser without the client polling — using APNs (iOS), FCM (Android/web), or the Web Push API. Testing concerns include: notification delivery when the app is in the foreground vs. background vs. closed, correct payload content, deep-link routing when the user taps the notification, handling of denied or revoked permissions, and notification grouping or badge-count accuracy. Also test what happens when the device is offline and comes back online.
Cold Start
The time from when a user taps an app icon to when the first interactive frame is visible, measured when the app process is not already in memory. A cold start is the worst-case launch scenario: the OS must create a new process, load the app binary from disk, initialise the runtime (JVM on Android, Swift/ObjC runtime on iOS), and render the first frame. Warm starts — where the process exists in memory but the activity was destroyed — are faster. Hot starts — where the activity is merely paused — are fastest. Google's Android Vitals targets 5 seconds as the threshold beyond which users abandon the launch; well-optimised apps aim for under 2 seconds. Testing cold start requires clearing the app from memory (via adb shell am force-stop or equivalent), then timing the launch with Perfetto, Xcode Instruments, or platform-native profiling tools.