Mobile Testing
<default_to_action> When testing mobile applications:
-
DEFINE device coverage matrix (Tier 1: 60%, Tier 2: 30%, Tier 3: 10%)
-
TEST platform differences (iOS ≠ Android: back button, permissions, UI)
-
VALIDATE touch gestures (tap, swipe, pinch, long-press)
-
TEST mobile-specific scenarios (offline, low battery, interruptions)
-
USE real devices for critical paths, emulators for fast feedback
Quick Mobile Checklist:
-
Test on latest iOS + Android flagship devices
-
Test offline mode and network transitions
-
Verify push notifications work
-
Test gesture interactions (swipe, pinch)
-
Check permissions flow (camera, location, notifications)
Critical Success Factors:
-
Emulators for 80% of testing, real devices for 20% critical paths
-
Test on devices your users actually use (analytics)
-
Device fragmentation is Android's biggest challenge </default_to_action>
Quick Reference Card
When to Use
-
Native app development (iOS/Android)
-
Hybrid apps (React Native, Flutter)
-
Mobile web / PWAs
-
App store submission preparation
iOS vs Android Differences
Aspect iOS Android
OS Versions 2-3 supported 10+ in use
Devices ~40 models 1000+ variants
Back Button Gesture/nav Hardware/software
Permissions Single prompt Runtime granular
App Store Strict review Google Play + sideload
Device Coverage Tiers
Tier Coverage Devices
Tier 1 60% users iPhone 15, Galaxy S24, iPad
Tier 2 30% users iPhone 14/13, Pixel 8
Tier 3 10% users Older devices, other manufacturers
Mobile Performance Goals
Metric Target
App launch < 2 seconds
Screen transition < 300ms
Frame rate 60 FPS
Battery drain < 5%/hour background
Touch Gesture Testing
// Appium gesture examples // Tap await driver.touchAction({ action: 'tap', x: 100, y: 200 });
// Swipe (scroll down) await driver.touchAction([ { action: 'press', x: 200, y: 400 }, { action: 'moveTo', x: 200, y: 100 }, { action: 'release' } ]);
// Pinch to zoom const finger1 = [ { action: 'press', x: 100, y: 200 }, { action: 'moveTo', x: 50, y: 150 }, { action: 'release' } ]; const finger2 = [ { action: 'press', x: 200, y: 200 }, { action: 'moveTo', x: 250, y: 250 }, { action: 'release' } ]; await driver.multiTouchAction([finger1, finger2]);
// Long press await driver.touchAction({ action: 'longPress', x: 100, y: 200, duration: 2000 });
Mobile-Specific Scenarios
// Offline mode testing test('app works offline', async () => { await driver.toggleAirplaneMode();
await driver.findElement('view-saved-items').click(); const items = await driver.findElements('saved-item'); expect(items.length).toBeGreaterThan(0);
const banner = await driver.findElement('offline-banner'); expect(banner.getText()).toContain('No internet');
await driver.toggleAirplaneMode(); // Restore });
// Location testing test('location-based features', async () => { await driver.setGeoLocation({ latitude: 37.7749, longitude: -122.4194, altitude: 0 });
const stores = await driver.findElement('stores-list'); expect(stores.getText()).toContain('San Francisco'); });
// Permission testing (Android) test('camera permission flow', async () => { await driver.findElement('take-photo').click();
// Handle permission dialog await driver.findElement( 'com.android.packageinstaller:id/permission_allow_button' ).click();
expect(await driver.findElement('camera-view')).toBeDefined(); });
Agent-Driven Mobile Testing
// Cross-platform mobile testing await Task("Mobile Test Suite", { platforms: ['iOS', 'Android'], deviceTiers: [1, 2], tests: 'regression-suite', parallelDevices: 5, deviceFarm: 'browserstack' }, "qe-test-executor");
// Device farm integration await Task("Device Farm Execution", { service: 'browserstack', devices: [ 'iPhone 15 - iOS 17', 'Samsung Galaxy S24 - Android 14' ], recordVideo: true, captureNetworkLogs: true }, "qe-test-executor");
Agent Coordination Hints
Memory Namespace
aqe/mobile-testing/ ├── device-matrix/* - Device coverage strategy ├── platform-tests/* - iOS/Android specific tests ├── gesture-library/* - Reusable gesture patterns └── performance/* - Mobile performance metrics
Fleet Coordination
const mobileFleet = await FleetManager.coordinate({ strategy: 'mobile-testing', agents: [ 'qe-test-executor', // Cross-platform execution 'qe-performance-tester', // Mobile performance 'qe-visual-tester' // Screen size validation ], topology: 'parallel' });
Related Skills
-
accessibility-testing - VoiceOver, TalkBack
-
performance-testing - Mobile performance
-
compatibility-testing - Device compatibility
Remember
Mobile is not a smaller desktop - it's a different platform. 60%+ of web traffic is mobile. Device fragmentation (1000+ Android devices), touch gestures, sensors, permissions, offline scenarios - all require specific testing.
Test on real devices for critical flows. Emulators catch 80% of bugs but real devices needed for actual performance, sensor behavior, and platform quirks.
With Agents: qe-test-executor orchestrates testing across device farms, manages platform differences, and tests 10+ devices in parallel. Reduces mobile testing from days to hours.