Firebase Test Lab 是 Google 的一项云服务,用于在 Google 数据中心内的真实设备上自动化测试移动应用程序。Test Lab 允许在数百种不同 Android 和 iOS 版本的设备配置上运行仪器测试、截图测试和爬虫测试,而无需拥有自己的设备农场。根据 Firebase Documentation, 2026,Firebase 爬虫测试会自动遍历应用程序的所有屏幕,在不编写一行测试代码的情况下发现崩溃、ANR 和 UI 问题。该服务支持与 CI/CD 系统集成,并提供包含视频和日志的详细报告。
要点
Firebase Test Lab 是 Google 的云基础设施,用于在位于 Google 全球数据中心的物理设备上自动化测试移动应用程序。与本地机器上的模拟器不同,Test Lab 在真实的 Android 设备和 iOS 设备上运行测试,具有不同的操作系统版本、屏幕分辨率、RAM 大小和 API 级别。该服务自动处理测试结果,提供执行视频、步骤截图和详细日志。
拥有自己的设备农场需要大量的资本投资来购买和维护物理设备。Firebase Test Lab 以按使用付费的方式提供对数千台设备的访问,Spark 计划有免费限制。Test Lab 自动将设备库更新到最新型号,包括最新的旗舰机型 Google Pixel、Samsung Galaxy、Xiaomi 和 iPhone。测试在多台设备上并行执行,从而减少了应用程序的总体验证时间。
对于 Android,Test Lab 支持在 API 级别从 21 到最新的稳定版 Android 的设备上进行测试。iOS 支持包括真实的 iPhone 和 iPad 设备,iOS 版本从 15 到最新的稳定版。对于 iOS,可以使用爬虫测试和 XCTest。每个测试都可以在物理设备或模拟器上执行——为了获得最准确的结果,Google 建议使用物理设备,因为它们能发现传感器、摄像头和网络接口的问题。
Firebase Test Lab 支持多种测试类型,每种类型在开发周期中解决自己的任务:爬虫测试用于快速检查稳定性,仪器测试用于功能验证,截图测试用于检测视觉回归。测试类型的选择取决于开发阶段和特定执行的目标。
爬虫测试是 Firebase Test Lab 的独特功能,无需编写测试代码。Firebase Crawler 自动探索应用程序:找到所有交互式 UI 元素,点击它们,用测试数据填写表单,在屏幕之间导航,并记录任何故障(崩溃、ANR、异常)。爬虫测试无需一行测试代码即可发现多达 80% 的关键错误,使其成为在开发早期评估应用程序基本稳定性的理想工具。
仪器测试是开发人员使用 Espresso(Android)或 XCTest(iOS)框架编写的测试。Test Lab 在目标设备上运行包含测试的 APK,并收集执行结果。测试可以是简单的(检查元素显示)或复杂的(端到端场景:授权、添加到购物车、完成订单)。Firebase Test Lab 支持 Android Test Orchestrator 来隔离测试,防止一个失败的测试影响其他测试。
截图测试用于检测应用程序中的视觉回归。Game loop 是一种特殊类型的测试,它通过 intent 向应用程序发送场景列表,应用程序必须执行这些场景并截取关键屏幕的截图。Test Lab 从矩阵中的所有设备收集截图,并允许与参考截图进行比较以发现差异。这种测试类型在游戏应用中特别流行,用于检查不同 GPU 上的渲染效果。
| 测试类型 | 代码 | 检查内容 | 何时使用 |
|---|---|---|---|
| 爬虫测试 | 不需要 | 崩溃、ANR、异常 | 快速检查稳定性 |
| 仪器测试 | Espresso / XCTest | 场景功能 | 回归测试 |
| 截图测试 | Game loop | 视觉回归 | 在不同设备上检查 UI |
测试矩阵在 Firebase Test Lab 中是一组设备配置,选定的测试将在其上执行。每个配置包括设备型号、操作系统版本、屏幕方向(纵向/横向)和区域设置(语言环境、语言)。测试在所有选定的配置上并行执行,与在每个设备上顺序执行相比,显著减少了总执行时间。
Google 建议在矩阵中包含具有不同特性的设备:旗舰型号(Google Pixel、Samsung Galaxy S)、预算设备(Moto G、Xiaomi Redmi)、应用程序支持的最低 API 版本的设备。最佳矩阵包括 5–10 个配置,覆盖应用程序支持的所有操作系统版本。对于 iOS,选择不同代的 iPhone 和 iPad(例如 iPhone SE、iPhone 14、iPad Air)以及不同的 iOS 版本。
Test Lab 自动将测试分配到选定的设备上,在每个配置上执行每个测试。整个矩阵的执行时间等于最慢设备上最慢测试的执行时间——所有其他测试并行执行。如果一个测试在所有设备上失败,Test Lab 会停止在其余配置上的执行以节省资源。结果按测试和设备分组,可以快速确定错误是否特定于某个配置。
爬虫测试是 Firebase Test Lab 的旗舰功能,无需编写任何测试即可自动探索应用程序。Firebase Crawler(爬虫机器人)分析应用程序的 UI 层次结构,找到所有交互式元素(按钮、文本字段、列表、菜单)并与之交互,模拟真实用户的行为。爬虫测试在开发的早期阶段特别有效,当测试尚未编写时,或用于检查遗留代码。
要运行爬虫测试,只需将 APK 或 IPA 上传到 Firebase Console 并选择 Robo test 选项。爬虫机器人可以通过预先配置的凭据(用户名/密码)自动登录应用程序,以访问隐藏在授权后面的屏幕。还可以设置探索深度(max depth)以限制爬虫机器人的步数,或指定爬虫机器人应优先点击的特定元素。
<!-- res/xml/robo_directives.xml -->
<!-- 爬虫机器人将填写登录名和密码字段 -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
爬虫测试不能替代手动测试和针对复杂场景编写的仪器测试。爬虫机器人无法检查业务逻辑:它会依次点击所有元素,但不知道结果是否正确。此外,爬虫机器人无法与不从标准 ViewGroup 继承的自定义视图交互,也不处理 WebView。在这些情况下,需要使用仪器测试或 Game loop。
Firebase Test Lab 与 CI/CD 系统集成允许在每次推送到仓库时自动运行测试。Test Lab 支持 Android 的 Gradle 任务和两个平台的 Fastlane。配置 CI/CD 管道包括构建应用程序、将 APK/IPA 上传到 Google Cloud Storage、通过 Firebase CLI 运行测试以及接收报告返回 CI 系统以显示构建状态。
Google 为 Gradle 提供了 gcloud-test-lab 插件,可自动上传和运行测试。assembleAndroidTest 任务构建包含测试的 APK,gcloud 任务将其上传到 Test Lab 并运行矩阵。测试结果作为 pass/fail 返回到 Gradle,从而允许将 Test Lab 集成到任何支持 Gradle 的 CI 管道中。授权使用具有 Test Lab 权限的 Firebase 服务帐户。
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
Fastlane 提供 firebase_test_lab 插件用于与 iOS 和 Android 测试集成。Fastlane lane 执行构建、运行测试并处理结果。对于 iOS XCTest,Test Lab 需要 xctestrun 文件,该文件在构建测试目标时自动创建。Fastlane 还可以将测试结果上传到 Slack 或其他即时通讯工具,以便在每次运行后通知团队测试状态。
测试完成后,Firebase Test Lab 提供全面的报告,可在 Firebase Console 和 gcloud CLI 中获取。报告包括快速摘要(通过、失败和跳过的测试数量)、每个设备上每个测试的详细信息、执行视频、关键步骤截图和设备日志(Android 的 logcat,iOS 的 system log)。对于失败的测试,提供堆栈跟踪,指示错误的准确位置。
对于爬虫测试,报告与仪器测试不同:报告显示探索统计信息,而不是每个测试用例的 pass/fail。关键指标——发现和访问的屏幕数量、爬虫机器人交互次数(点击、滑动、文本输入)、检测到的崩溃和 ANR,以及应用程序中经过的路径。爬虫机器人的执行视频可以直观地评估哪些屏幕已测试,哪些未被覆盖。
测试结果存储在 Google Cloud Storage 中与项目关联的存储桶中。数据可用于导出并与外部分析系统集成。对于长期存储和运行间结果比较,建议配置 BigQuery 导出或使用 Firebase Test Lab API 以编程方式获取结果。Google 提供下载包含每次测试运行完整结果集的 ZIP 存档的功能。
常见问题
Spark 计划每天包含 10 次 Robo 测试和每月 5 小时仪器测试免费。Blaze 计划按时间计费:Robo 测试约 1 美元/设备小时,仪器测试约 5 美元/设备小时。具体价格取决于地区和设备类型。
物理设备提供更准确的结果,包括传感器、摄像头、GPS、蓝牙和真实性能方面的问题。模拟器启动更快、更便宜,但无法发现与硬件特性相关的问题。Google 建议在发布前测试中使用物理设备。
创建包含输入字段(用户名、密码)和点击按钮的 XML 文件 robo_directives.xml。通过 Firebase Console 或 CLI 运行测试时,将该文件与 APK 一起上传。爬虫机器人将在开始探索之前执行指定的操作。
可以,Firebase Test Lab 自 2024 年起支持 iOS。在真实的 iPhone 和 iPad 设备上可以使用 Robo 测试(自动探索)和 XCTest(仪器测试)。上传需要带有测试目标的 IPA 文件。
在 GitHub Actions 中使用 Firebase CLI:通过 Service Account JSON 配置身份验证,安装 gcloud SDK,执行 firebase test android run 命令并指定 APK 和配置。测试结果可通过 Firebase Console 或 gcloud CLI 获取。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。