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

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

gcloud beta device-run CLI 可简化并改进在设备(包括实体设备和虚拟设备)上运行自动化测试和插桩测试的方式。在预览版中,支持 Android Instrumentation 和 iOS XCTest。如需查看相关说明,请参阅设备运行概览。

概览和优势

从 Firebase Test Lab 改用 Developer Device Platform (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 坐标。
  • 支持 ApkSet:开发者可以直接将 ApkSet(.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

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 beta 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. 使用我们的快速入门设置开发者设备平台。
  2. 浏览我们的设备目录,了解所有可用的设备。
  3. 了解 Device Run 以开始运行测试。
  4. 请访问我们的命令和标志翻译,查看 Test Lab 和 Flank 标志与 DDP 的映射关系。