从 Firebase Test Lab 迁移到开发者设备平台

我们非常高兴地宣布,开发者设备平台 (DDP) 中推出了 gcloud beta device-run 命令行界面的预览版,这是对 gcloud firebase test CLI 的增强。

gcloud beta device-run CLI 简化了在设备(包括实体设备和虚拟设备)上运行自动化测试和插桩测试的过程,并使其现代化。在预览版中,Android 插桩测试 和 iOS XCTest 均受支持。如需了解相关说明,请参阅 设备运行概览。

概览和优势

与 Firebase Test Lab 相比,开发者设备平台 (DDP) 具有多项主要优势,尤其是在节省费用、测试执行速度、高级调试和对 AI 驱动型工作流的内置支持方面。

在云端运行移动测试的开发者必须在不同的配置模型 (Firebase Test Lab) 之间切换,或者维护额外的流水线和工具封装层 (Flank)。

开发者设备平台中的 gcloud beta device-run CLI 直接将这些功能合并到核心 Google Cloud CLI 中。它提供了一个更可靠、声明式且可伸缩的后端界面,可在实体设备和虚拟设备上以可预测且高效的方式运行测试。

与 Firebase Test Lab 相比,DDP 具有以下主要功能和特性,使其成为更出色的平台:

高级智能分片

Firebase Test Lab 依赖于单次运行计时数据来对测试进行分片,而 DDP 的智能分片功能则更加智能:

  • _30 天的历史数据_:DDP 会分析长达 30 天的执行历史记录,以 将测试分配到稳定且经过优化的分片中。
  • 特定于设备的持续时间跟踪:DDP 会跟踪每个特定设备型号的测试作业运行时,而不是使用所有设备的通用平台平均值。
  • Orchestrator 开销建模:DDP 会考虑每个测试实例的 Android Test Orchestrator 启动开销,确保分片不会 超出其目标持续时间。

精细且经济高效的重试

在 Test Lab 中,如果分片中的单个测试用例失败,则必须重试整个分片(可能包含数十个测试),这会增加执行时间和结算费用。DDP 引入了高效的重试机制:

  • 有针对性的测试用例级重试:仅隔离并重试分片中特定的 失败测试用例。
  • _按顺序重试不稳定的测试_:默认情况下,按顺序执行不稳定测试的重试(而不是像 Test Lab 那样并发执行)。将此功能与测试用例级重试相结合,可大幅减少总测试运行次数,从而显著节省设备结算费用。

对 Android 测试的高级支持

DDP 解决了 Test Lab 测试 API 中长期存在的限制:

  • 仅测试 APK (无虚拟应用):Test Lab 过去需要虚拟应用才能运行自插桩测试。DDP 支持仅使用测试 APK 运行插桩测试。
  • 延长分片超时时间:DDP 将单个插桩测试分片的最大执行时间限制从 Test Lab 的 45 分钟上限提高到 3 小时。
  • 多个 Orchestrator:DDP 支持多个 Android Test Orchestrator 版本。
  • 内置 C++ 二进制文件支持:DDP 支持执行 Android C++ 二进制文件。

丰富的设备互动和高级调试

与 Test Lab 中提供的功能相比,DDP 提供了更深入的设备上互动和更丰富的调试工件:

  • 模拟位置:DDP 支持模拟设备 GPS 坐标。
  • ApkSets 支持:开发者可以直接将 ApkSets(.apks 文件)安装到远程设备上 。
  • 高级调试:DDP 直接向开发者公开重要的系统日志和调试 信息,包括 dumpsys 和 bugreport。

高度可伸缩的设备目录

DDP 使用经过完全重新设计的设备目录 API 替换了 Test Lab 的僵化且庞大的环境目录:

  • _服务器端过滤_:通过 允许开发者在服务器端过滤设备,从而加快查询速度并减少有效载荷延迟时间。
  • 实时可用性数据:DDP 直接向 Device Run 提供实时设备可用性信息,以便您可以选择高可用性设备并避免长时间排队,而 Test Lab 完全缺乏此功能。

选择迁移路径

使用 AI 自动执行迁移

为了使此转换顺利进行,我们开发了一项专用翻译代理 技能:migrating-device-run。

如果您使用的是 AI 编码代理(例如 Antigravity、Claude Code 、Codex),则可以轻松翻译自定义测试脚本。只需复制 迁移技能架构的网址,然后将其粘贴到 AI 助理工作区中,如此处所述。

迁移提示模板

You are an expert migration assistant. I want to migrate my test command and
configuration to the new `gcloud beta device-run` command format.

Use this migration guideline as your ruleset:
https://docs.cloud.google.com/developer-device-platform/device-run/migrate/migration-skill.md.txt

Translate the following command and configuration to the new `gcloud beta
device-run` CLI: (Insert your raw Firebase Test / Flank YAML or bash script
here.)

手动迁移

按照我们的 命令和标志翻译,迁移 手动从 Firebase Test Lab 迁移到 DDP。在准备迁移时,请注意以下结构差异:

  • 以资源为中心的 CLI 架构:gcloud beta device-run 采用 现代 <resource> <verb> 命令模式,涵盖三个主要资源 组:
    • devices:直接通过 CLI 访问设备目录清单和 全面的设备详细信息,取代了分散的旧版 firebase test android/ios models/versions/locales 命令。
    • software-versions:直接通过 CLI 访问受支持的软件版本(例如 Xcode 和 Android Test Orchestrator 版本),取代了旧版 firebase test ios xcode-versions list。
    • sessions:直接在 终端中进行端到端会话生命周期管理,包括 sessions submit instrumentation、sessions submit xctest、sessions wait、sessions describe [--full]、sessions list、 和 sessions cancel。
  • 子命令结构:测试类型已标准化,并嵌套在 sessions submit下作为干净的子命令,而不是使用类型标志。
    • DDP:gcloud beta device-run sessions submit instrumentation (Android) 或 gcloud alpha device-run sessions submit xctest (iOS)
    • Test Lab:gcloud firebase test android run --type=instrumentation (Android) 或 gcloud firebase test ios run --type=xctest (iOS)
  • 复数形式和合并的应用:标准 APK 和补充 APK 合并到 复数形式的 --apps 标志列表下(例如--apps=app.apk,helper.apk) ,而不是拆分为 --app 和 --additional-apks。
  • 结构化字典和列表实参:将以逗号分隔的文件 或环境列表替换为结构化 CLI 字典和列表格式: --other-files-to-push KEY=VALUE、--additional-test-options KEY=VALUE、 --paths-to-pull 和 --test-targets。
  • 统一的分片和重试控制:无缝支持统一分片 和智能分片,以及并行重试 (--flaky-test-parallel-retry、--flaky-test-retry-level)和运行时 诊断(--dumpsys、--bugreport、--video)。
  • 异步执行:gcloud beta device-run 支持异步执行, 让您无需等待测试完成即可运行测试。使用 gcloud beta device-run sessions wait <SESSION_ID> 等待完成。
  • 声明式 YAML 配置 (--flags-file):从 Flank 迁移且偏好使用受版本控制的 YAML 文件而不是 shell 脚本字符串的团队可以 使用 gcloud 的通用 --flags-file=device-run-flags.yaml 支持。

后续步骤

  1. 使用我们的快速入门设置 Developer Device Platform。
  2. 浏览我们的设备目录, 查找所有可用设备。
  3. 了解设备运行, 开始运行测试。
  4. 访问我们的 命令和标志翻译,查看 Test Lab 和 Flank 标志到 DDP 的 映射。