Firebase Test Lab — 什么是它,设备上的测试类型及自动化

作者: IT Sectr 发布日期: 2026-04-29 阅读时间: 9 分钟

Firebase Test Lab 是 Google 的一项云服务,用于在 Google 数据中心内的真实设备上自动化测试移动应用程序。Test Lab 允许在数百种不同 Android 和 iOS 版本的设备配置上运行仪器测试、截图测试和爬虫测试,而无需拥有自己的设备农场。根据 Firebase Documentation, 2026Firebase 爬虫测试会自动遍历应用程序的所有屏幕,在不编写一行测试代码的情况下发现崩溃、ANR 和 UI 问题。该服务支持与 CI/CD 系统集成,并提供包含视频和日志的详细报告。

要点

  • Firebase Test Lab — 在 Google 数据中心内的真实设备上测试移动应用程序的云服务,仅按使用时间付费。
  • 爬虫测试 — 自动探索应用程序:Firebase Crawler 遍历所有屏幕、点击按钮和填写表单,无需编写代码即可记录错误。
  • 仪器测试 — 在真实设备上运行 Espresso、XCTest 和 UI Automator 测试,并在不同配置上并行执行。
  • 设备矩阵 — 测试同时在选定的设备集上运行,具有不同的操作系统版本、屏幕方向和语言。
  • 报告 — 测试后可获得日志、截图、测试视频以及包含发现的错误和性能的摘要。

什么是 Firebase Test Lab

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 支持多种测试类型,每种类型在开发周期中解决自己的任务:爬虫测试用于快速检查稳定性,仪器测试用于功能验证,截图测试用于检测视觉回归。测试类型的选择取决于开发阶段和特定执行的目标。

爬虫测试(Robo tests)

爬虫测试是 Firebase Test Lab 的独特功能,无需编写测试代码。Firebase Crawler 自动探索应用程序:找到所有交互式 UI 元素,点击它们,用测试数据填写表单,在屏幕之间导航,并记录任何故障(崩溃、ANR、异常)。爬虫测试无需一行测试代码即可发现多达 80% 的关键错误,使其成为在开发早期评估应用程序基本稳定性的理想工具。

仪器测试(Instrumentation tests)

仪器测试是开发人员使用 Espresso(Android)或 XCTest(iOS)框架编写的测试。Test Lab 在目标设备上运行包含测试的 APK,并收集执行结果。测试可以是简单的(检查元素显示)或复杂的(端到端场景:授权、添加到购物车、完成订单)。Firebase Test Lab 支持 Android Test Orchestrator 来隔离测试,防止一个失败的测试影响其他测试。

截图测试(Game loop 和截图)

截图测试用于检测应用程序中的视觉回归。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)以限制爬虫机器人的步数,或指定爬虫机器人应优先点击的特定元素。

xml
<!-- 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。

与 CI/CD 和 Gradle 集成

Firebase Test Lab 与 CI/CD 系统集成允许在每次推送到仓库时自动运行测试。Test Lab 支持 Android 的 Gradle 任务和两个平台的 Fastlane。配置 CI/CD 管道包括构建应用程序、将 APK/IPA 上传到 Google Cloud Storage、通过 Firebase CLI 运行测试以及接收报告返回 CI 系统以显示构建状态。

通过 Gradle 配置(Android)

Google 为 Gradle 提供了 gcloud-test-lab 插件,可自动上传和运行测试。assembleAndroidTest 任务构建包含测试的 APK,gcloud 任务将其上传到 Test Lab 并运行矩阵。测试结果作为 pass/fail 返回到 Gradle,从而允许将 Test Lab 集成到任何支持 Gradle 的 CI 管道中。授权使用具有 Test Lab 权限的 Firebase 服务帐户。

groovy
// 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 配置

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 存档的功能。

常见问题

Firebase Test Lab 的费用是多少?

Spark 计划每天包含 10 次 Robo 测试和每月 5 小时仪器测试免费。Blaze 计划按时间计费:Robo 测试约 1 美元/设备小时,仪器测试约 5 美元/设备小时。具体价格取决于地区和设备类型。

Test Lab 中的物理设备和模拟器有何区别?

物理设备提供更准确的结果,包括传感器、摄像头、GPS、蓝牙和真实性能方面的问题。模拟器启动更快、更便宜,但无法发现与硬件特性相关的问题。Google 建议在发布前测试中使用物理设备。

如何为爬虫测试配置授权?

创建包含输入字段(用户名、密码)和点击按钮的 XML 文件 robo_directives.xml。通过 Firebase Console 或 CLI 运行测试时,将该文件与 APK 一起上传。爬虫机器人将在开始探索之前执行指定的操作。

可以在 Firebase Test Lab 中运行 iOS 测试吗?

可以,Firebase Test Lab 自 2024 年起支持 iOS。在真实的 iPhone 和 iPad 设备上可以使用 Robo 测试(自动探索)和 XCTest(仪器测试)。上传需要带有测试目标的 IPA 文件。

如何将 Test Lab 与 GitHub Actions 集成?

在 GitHub Actions 中使用 Firebase CLI:通过 Service Account JSON 配置身份验证,安装 gcloud SDK,执行 firebase test android run 命令并指定 APK 和配置。测试结果可通过 Firebase Console 或 gcloud CLI 获取。

总结

  • Firebase Test Lab — Google 的云服务,用于在真实设备上测试移动应用程序,按使用付费。
  • 三种测试类型 — 爬虫测试(无需代码、自动探索)、仪器测试(Espresso、XCTest)和截图测试(Game loop),适用于不同的验证任务。
  • 设备矩阵允许在一组配置(型号 + 操作系统版本 + 方向)上并行运行测试,减少总检查时间。
  • 爬虫测试(Firebase Crawler)自动探索应用程序,无需编写一行测试代码即可发现多达 80% 的关键错误。
  • CI/CD 集成 — Test Lab 支持 Gradle、Fastlane 和 Firebase CLI,可在每次推送到仓库时自动运行测试。
  • 详细报告包括执行视频、截图、设备日志和每个配置上每个失败测试的堆栈跟踪。
  • 免费限制 — Spark 计划每天 10 次 Robo 测试,足以在日常开发周期中检查应用程序的基本稳定性。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读