移动端测试
Appium、Espresso、Detox。
30 分钟
移动端测试
移动应用面临 多设备、多 OS 版本、网络切换、权限弹窗 等 Web 少有的复杂度。对照 /roadmaps/qa「Mobile Testing」节点,本课介绍 Appium、Espresso 与 Detox 的分工与选型。
学习目标
- 理解原生、混合、跨平台 App 的测试差异
- 区分 Appium(跨平台)与 Espresso/Detox(平台原生)的适用场景
- 掌握移动端测试的环境、设备矩阵与稳定性要点
- 将移动端测试思维对照本站 Web 测试实践
核心概念
测试分层
| 层级 | Android | iOS | 说明 |
|---|---|---|---|
| 单元 | JUnit + Robolectric | XCTest | 逻辑、ViewModel |
| 组件/UI | Espresso | XCUITest | 单屏交互 |
| E2E | Appium | Appium / Detox | 跨 App 流程 |
Detox 面向 React Native;Espresso 同步等待 UI,比裸 Appium 更稳。
Appium 基础
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("platformName", "Android");
caps.setCapability("app", "/path/to/app.apk");
caps.setCapability("automationName", "UiAutomator2");
WebDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723"), caps);
driver.findElement(AppiumBy.accessibilityId("login-button")).click();
- 需 Appium Server + 模拟器/真机
- 优先 accessibility id,避免 XPath 深嵌套
设备矩阵与专项
- 兼容性:屏幕尺寸、OS 版本、厂商 ROM
- 网络:弱网、离线、切换 Wi-Fi/4G
- 权限:相机、定位、通知首次授权流程
- 生命周期:后台恢复、杀进程、低内存
与 Web 测试对照
移动端 E2E 更 flaky、更慢;应像 Web 一样遵守金字塔:多单元、少 E2E。
与 testing-essentials/Spring 对照
CodeRoadMap 主线是 Java Spring + React Web,无原生 App;移动端测试技能用于:
| Web(本站) | Mobile 类比 |
|---|---|
| Playwright E2E | Appium / Detox |
| Vitest 组件测试 | Espresso / XCTest UI |
| MockMvc API | 测 App 调用的同一 REST API(qa-api) |
后端 API 测试可复用:Spring Boot 接口通过 REST Assured 验证后,Android/iOS 客户端只需测 。扩展 iOS 见 。