我们很高兴地宣布,开发者设备平台 (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)
- DDP:
- 复数化和合并的应用:标准 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支持。
后续步骤
- 使用我们的快速入门设置开发者设备平台。
- 浏览我们的设备目录,了解所有可用的设备。
- 了解 Device Run 以开始运行测试。
- 请访问我们的命令和标志翻译,查看 Test Lab 和 Flank 标志与 DDP 的映射关系。