從 Firebase Test Lab 遷移至開發人員裝置平台

我們很高興宣布,Developer Device Platform (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 會追蹤每個特定裝置型號的測試執行時間,而不是使用所有裝置的廣義平台平均值。
  • 自動調度管理工具的負荷模型: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++ 二進位檔。

豐富的裝置互動和進階偵錯功能

DDP 提供更深入的裝置端互動,以及比 Test Lab 更豐富的偵錯構件:

  • 模擬位置:DDP 支援模擬裝置 GPS 座標。
  • 支援 ApkSet:開發人員可以直接在遠端裝置上安裝 ApkSet (.apks 檔案)。
  • 進階偵錯:DDP 會直接向開發人員公開重要系統記錄和偵錯資訊,包括 dumpsys 和 bugreport。

高擴充性的裝置目錄

DDP 採用全面重新設計的裝置目錄 API,取代 Test Lab 僵硬且龐大的環境目錄:

  • 伺服器端篩選:開發人員可在伺服器端篩選裝置,加快查詢速度並縮短酬載延遲時間。
  • 即時可用性資料:DDP 會直接向 Device Run 提供即時裝置可用性資訊,方便您選擇高可用性裝置,避免排隊時間過長。Test Lab 完全沒有這項功能。

選擇遷移路徑

運用 AI 技術自動遷移資料

為確保順利完成這項轉換,我們開發了專屬的翻譯代理程式技能:migrating-device-run。

如果您使用 Antigravity、Claude Code、Codex 等 AI 程式碼編寫代理程式,即可輕鬆翻譯自訂測試指令碼。只要複製遷移技能結構定義的網址,然後按照這裡的說明貼到 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 會合併在複數化 --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 檔案,而非殼層指令碼字串,可以利用 gcloud 的通用 --flags-file=device-run-flags.yaml 支援。

後續步驟

  1. 使用我們的快速入門導覽課程設定 Developer Device Platform。
  2. 如要查看所有可用的裝置,請瀏覽裝置目錄。
  3. 瞭解如何使用Device Run功能開始執行測試。
  4. 請參閱指令和旗標翻譯,瞭解 Test Lab 和 Flank 旗標與 DDP 的對應關係。