Device Farm — 是一项云服务,提供对数百台真实移动设备的远程访问,用于应用程序的自动化和手动测试。开发人员上传 APK 或 IPA,选择设备配置并并行运行测试,无需购买物理设备。根据 Perfecto, 2025 的报告,使用 Device Farm 的团队比使用本地设备农场的团队减少 73% 的回归测试时间。
要点
Device Farm — 是一种用于移动应用程序测试的基础设施解决方案,通过互联网提供对物理和虚拟设备的远程访问。与购买和维护自己的设备实验室不同,开发人员租用他人设备上的时间,仅按实际使用付费。
移动设备市场包含超过 24,000 种独特的 Android 智能手机型号(根据 OpenSignal, 2025)。购买所有流行型号用于测试是不可能的 — 这需要数百万美元的投资和不断更新设备群。Device Farm 通过订阅方式提供对最新设备的访问来解决这个问题。
模拟器仅覆盖 60–70% 的测试场景。真实设备对于检查传感器、摄像头、GPS、电池电量、弱硬件性能以及来电时的行为是必需的。Device Farm 结合了两种方法:用于快速冒烟测试的模拟器和用于完全验证的物理设备。
Device Farm 适用于发布第一个应用程序的初创公司、定期发布的成熟产品团队以及拥有数十个应用程序的 企业项目。使用合理性随着目标设备数量和发布频率的增加而增加 — 需要检查的配置越多,云模型就越有利。
使用 Device Farm 的典型工作场景包括五个阶段:上传构建、选择设备、配置测试、运行、分析结果。每个阶段都通过 API 自动化,从而可以将 Device Farm 嵌入到 CI/CD 管道中而无需手动干预。
开发人员将构建的 APK(Android)、AAB 或 IPA(iOS)文件上传到提供商的云存储。某些服务(如 Firebase Test Lab)也直接接受 Xcode 或 Android Studio 项目。文件大小有限制:AWS Device Farm 支持最大 200 MB,BrowserStack 支持最大 500 MB。
从设备目录中选择目标型号和操作系统版本。现代 Device Farm 支持分组:“2024–2025 年所有旗舰机”或“搭载 Android 13–14 的经济型 Android 设备”。并行执行 允许同时在 10–50 台设备上运行一个测试,将总时间缩短到几分钟。
测试在提供商的真实设备上运行。开发人员通过 Web 控制台实时观察进度:日志、屏幕截图、测试视频记录。测试失败时,Device Farm 会截取屏幕截图并收集崩溃日志用于诊断。
// Jenkinsfile 中 Device Farm 配置示例
pipeline {
agent any
stages {
stage('Build') {
steps {
sh './gradlew assembleDebug'
}
}
stage('Device Farm Tests') {
steps {
sh '''aws device-farm schedule-run
--project-arn arn:aws:devicefarm:us-west-2:123:project:1
--app-arn arn:aws:devicefarm:us-west-2:123:app:1
--device-pool-arn arn:aws:devicefarm:us-west-2:123:pool:1
--test-arn arn:aws:devicefarm:us-west-2:123:test:1'''
}
}
}
}
现代 Device Farm 不仅提供测试运行,还提供用于诊断、性能监控和与其他开发服务集成的辅助工具。功能集因提供商而异,但核心保持一致。
所有主要框架都得到支持:Android 的 Espresso 和 UI Automator,iOS 的 XCTest 和 XCUITest,跨平台项目的 Appium 和 Calabash。Device Farm 无需修改代码即可运行测试 — 只需在配置时指定测试框架即可。
开发人员通过浏览器获得对真实设备的远程访问:触摸、滑动、旋转屏幕、按下按钮 — 所有操作都实时传输。交互模式 对于复现自动化测试未覆盖的罕见错误至关重要。AWS Device Farm 提供最多 60 分钟的手动会话,无需额外费用。
每次运行后,Device Farm 会生成报告:测试的 视频记录、逐步屏幕截图、设备日志(Android 的 logcat,iOS 的 syslog)、性能数据(CPU、内存、网络)和崩溃堆栈。这些数据有助于在不使用本地设备复现的情况下定位问题。
所有大型 Device Farm 提供商都提供 Jenkins、GitLab CI、GitHub Actions 和 CircleCI 的插件。Webhook 通知 通过 Slack、Telegram 或电子邮件通知团队测试结果。配置 CI/CD 集成是实施持续交付的团队的标准做法。
| 功能 | AWS Device Farm | BrowserStack | Firebase Test Lab |
|---|---|---|---|
| 物理设备 | 是 | 是 | 是 |
| 模拟器 | 是 | 是 | 是 |
| 手动测试 | 是 | 是 | 否 |
| 错误定位 | 视频 + 日志 | 视频 + 日志 | 仅日志 |
| 免费限制 | 每月 1000 分钟 | 60 分钟试用期 | Firebase 测试 — 免费 |
Device Farm 市场由三个主要类别代表:通用云提供商(AWS)、专业测试服务(BrowserStack)和平台生态系统内的工具(Firebase)。选择取决于技术栈和团队预算。
与 Amazon Web Services 生态系统集成。已经使用 AWS 进行托管和 CI/CD 的开发人员获得统一合同以及与 CodePipeline 和 CodeBuild 的无缝集成。AWS Device Farm 支持在物理设备和模拟器上测试 Android、iOS 和 Web 应用程序。
最大的独立提供商,拥有超过 3,000 台真实设备的设备群。BrowserStack 以方便的 Web 界面、快速的设备提供速度(10–15 秒)和无需复杂配置的 Appium 支持而闻名。该服务在新型号发布后一周内自动更新设备群。
Google 提供的免费服务,适用于 Android 应用程序,具有 iOS 测试功能(有限)。Firebase Test Lab 对初创公司尤其有吸引力:基本测试场景无需订阅即可使用。与 Firebase Console 和 Crashlytics 的集成允许将测试失败与生产中的真实崩溃联系起来。
市场上还有 Samsung Remote Test Lab(免费访问三星设备)、Kobiton(面向企业,支持本地部署)、Perfecto(被 Perforce 收购,专注于金融领域)和 Sauce Labs(最古老的服务之一,现在是 Tricentis 的一部分)。
让我们看看 Firebase Test Lab 与 Android 应用程序的命令行集成。Firebase Test Lab 通过 gcloud CLI 运行测试,从而可以将执行嵌入到任何 CI 管道中,无需额外插件。该示例显示了在三个设备上的最小冒烟测试配置。
# 安装 gcloud CLI 并授权
gcloud auth login
gcloud config set project my-android-app
# 将 APK 上传到 Firebase Test Lab
gcloud firebase test android run \
--app app-debug.apk \
--test app-debug-test.apk \
--type instrumentation \
--device model=Pixel7,version=34 \
--device model=SamsungS23,version=33 \
--device model=OnePlus12,version=34 \
--timeout 30m \
--results-bucket gs://my-app-test-results
该命令上传两个文件:构建本身和带有 Espresso 仪器测试 的测试 APK。如果未明确指定 version,Firebase Test Lab 会自动为每个模型选择最新的可用操作系统版本。结果保存在 Google Cloud Storage 中,格式为 XML 和 HTML,可在浏览器中查看。
每次推送时自动运行使用 GitHub Actions。工作流构建应用程序,运行 Firebase Test Lab 并返回验证状态。
name: Android CI with Device Farm
on: [push]
jobs:
test-on-devices:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- run: ./gradlew assembleDebug assembleDebugAndroidTest
- uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- run: gcloud firebase test android run
--app app/build/outputs/apk/debug/app-debug.apk
--test app/build/outputs/apk/androidTest/debug/app-debug-test.apk
--device model=Pixel8,version=35
Device Farm 的成本由几个参数组成:并行会话数、设备类型(物理或模拟器)、测试持续时间和附加功能。在选择提供商之前了解成本结构非常重要,以避免扩展时产生意外支出。
大多数提供商按设备实际使用时间收费。物理设备 比模拟器贵 2–5 倍。AWS Device Farm 为新账户每月提供 1000 免费分钟,BrowserStack 提供 60 分钟试用期。物理 Android 设备上一分钟的平均成本为 0.05–0.17 美元。
对于定期测试,固定订阅更划算。BrowserStack 为 3 名用户提供每月 299 美元的 Team 计划,在物理设备上无限分钟。AWS Device Farm 没有固定订阅 — 按分钟付费,这对于不规则负载很方便,但在密集使用时更贵。
计算预算时请考虑:测试工件(视频、屏幕截图、日志)的 存储 — AWS Device Farm 免费保存结果最多 90 天,BrowserStack 最多 30 天;上传大型 APK/IPA 时的 网络流量;并行会话数 — 增加并行性可能需要更昂贵的计划。
常见问题
模拟器 通过软件在您的计算机上模拟设备,而 Device Farm 提供对具有原始固件、处理器和传感器的真实物理设备的访问。只有在真实设备上才能检查摄像头、GPS、外壳温度以及与运营商网络的交互。
是的,所有大型提供商都支持 iOS。测试需要使用开发证书构建的 IPA 文件。BrowserStack 和 AWS Device Farm 提供物理 iPhone 和 iPad,Firebase Test Lab 通过数据中心的 macOS 模拟器支持 iOS。
Jenkins 通过插件(例如 AWS Device Farm Plugin)或在构建阶段运行的 CLI 命令进行集成。该插件自动上传构建工件,在选定设备上运行测试并将结果返回到 Jenkins 管道。
对于初创公司,Firebase Test Lab 是最优选择 — 基本功能免费,与 Android Studio 的集成开箱即用。对于 iOS 项目,BrowserStack 提供 60 分钟免费测试。随着团队成长,转向包含完整设备群的付费订阅。
大型提供商遵守 SOC 2 认证 并在传输和存储过程中加密数据。AWS Device Farm 在隔离的 AWS 账户中运行,BrowserStack 为每个会话使用一次性设备。敏感数据(API 密钥)建议放在构建配置中。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。