通过 AWS Device Farm 自动化移动应用测试 - 真机测试与 CI/CD 集成
在 iOS 和 Android 真机上自动执行测试并集成到 CI/CD 管道。同时介绍测试框架的选择标准和通过远程访问进行的手动测试。
Device Farm 概述与移动测试的挑战
移动应用品质保证面临的最大课题是设备多样性。Android 与 iOS 不同的操作系统版本、屏幕尺寸、硬件规格组合达数千种模式,手动测试所有组合不现实。构建本地设备实验室需要大量投资用于设备采购、管理、操作系统升级和网络环境建设。Device Farm 是在 AWS 托管的真机设备上测试移动应用和 Web 应用的服务。提供 Samsung Galaxy、Google Pixel、iPhone、iPad 等 2,500 多种设备配置,OS 版本也覆盖多个世代。服务提供自动测试 (测试脚本执行) 和远程访问 (真机手动操作) 两种模式,让开发团队专注于测试设计和品质改进。
测试框架与设备池管理
Device Farm 支持 Appium (Java、Python、Node.js、Ruby)、Espresso (Android)、XCTest/XCUITest (iOS)、Calabash。跨平台测试最适合 Appium,可用同一测试代码在 iOS 和 Android 上执行。内置测试套件无需编写测试代码即可执行基本测试。Fuzz 测试生成随机用户操作检测崩溃,Explorer 测试自动探索应用画面并获取截图。设备池是将测试对象设备分组的机制,可按 OS 版本、屏幕尺寸、厂商等条件筛选。顶级设备池功能自动选定市场占有率高的设备。测试结果包含日志、截图、视频和性能数据 (CPU、内存、网络)。以下是使用 AWS CLI 调度测试运行的示例: ```bash aws devicefarm schedule-run \ --project-arn arn:aws:devicefarm:us-west-2:123456789012:project:EXAMPLE \ --app-arn arn:aws:devicefarm:us-west-2:123456789012:upload:EXAMPLE \ --device-pool-arn arn:aws:devicefarm:us-west-2:123456789012:devicepool:EXAMPLE \ --test type=APPIUM_JAVA_JUNIT,testPackageArn=arn:aws:devicefarm:... ```
CI/CD 管道集成
在 CodePipeline 的测试阶段添加 Device Farm 操作,可在构建后自动执行设备测试。测试失败时管道停止,防止有缺陷的构建部署到生产环境。也可从 Jenkins 或 GitHub Actions 通过 AWS CLI 或 SDK 调用 Device Farm API。与 Amplify 构建管道集成后,构建成功即自动执行 Device Farm 测试。在所有设备上测试耗时且成本高,因此优先选定市场占有率高的设备,区分发布前全面测试和日常冒烟测试的设备数量是有效策略。远程访问功能可实时连接云端真机设备,执行手动探索性测试和调试。
性能测试与网络模拟
Device Farm 自动收集应用性能指标。CPU 使用率、内存使用量、网络流量、电池消耗等指标按设备记录,帮助定位性能瓶颈。网络模拟功能可在 3G、4G、Wi-Fi、低带宽、高延迟等各种网络条件下测试应用行为。面向新兴市场的应用,低速网络环境下的行为验证对品质保证至关重要。GPS 模拟功能可在全球任意坐标下测试基于位置的应用。
测试结果管理与质量监控
测试执行中的截图、视频录制和日志输出自动保存到 S3,可用于长期品质数据积累和分析。与 CloudWatch 指标集成后,可在仪表板可视化测试成功率和各设备故障率,实现品质的持续监控。测试结果可直接从 CodePipeline 控制台确认,访问失败测试用例的详细信息、截图和设备日志。数百种真机设备的并行测试执行,将手动需要数周的设备兼容性验证缩短至数小时。
Device Farm 的费用
Device Farm 提供两种计费模式。按量计费为每台设备每分钟约 0.17 美元。定额计划为月费 250 美元,可无限使用 1 台设备。也提供多设备定额计划。在 CI/CD 管道中每日执行测试时,月测试时间超过约 25 小时则定额计划更经济。远程访问 (手动测试) 每分钟约 0.17 美元。前 1,000 设备分钟含在免费试用中。构建本地设备实验室需数百万日元初始投资,而 Device Farm 可零初始费用构建测试基础设施。
总结
Device Farm 是自动化真机设备移动应用测试的服务。无需购买和管理数百种设备,即可使用主流测试框架执行自动测试。通过集成到 CI/CD 管道,早期发现设备特有的缺陷,交付高质量的移动应用。性能指标自动收集和网络模拟使得在接近用户实际体验的条件下测试成为可能,大幅减少发布后的缺陷。