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)を維持したりする必要があります。

Developer Device Platform の gcloud beta device-run CLI は、これらの機能をコアの Google Cloud CLI に直接統合します。これにより、物理デバイスと仮想デバイスの両方でテストを予測可能かつ効率的に実行する、より堅牢で宣言型のスケーラブルなバックエンド インターフェースが提供されます。

DDP が Firebase Test Lab よりも優れたプラットフォームである主な機能と機能は次のとおりです。

高度なスマート シャーディング

Firebase Test Lab は 1 回の実行のタイミング データに基づいてテストをシャードしますが、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++ バイナリの実行をサポートしています。

デバイスのインタラクションの強化と高度なデバッグ

DDP は、Test Lab で利用できるものよりも、デバイス上のインタラクションがより深く、デバッグ アーティファクトがより豊富です。

  • 位置情報のモック: DDP はデバイスの GPS 座標のモックに対応しています。
  • ApkSet のサポート: デベロッパーは、ApkSet(.apks ファイル)をリモート デバイスに直接インストールできます。
  • 高度なデバッグ: DDP は、dumpsys や bugreport などの重要なシステムログとデバッグ情報をデベロッパーに直接提供します。

スケーラビリティの高いデバイス カタログ

DDP では、Test Lab の厳格で重い環境カタログが、完全に再設計された Device Catalog API に置き換えられます。

  • サーバーサイド フィルタリング: デベロッパーがサーバーサイドでデバイスをフィルタできるようにすることで、クエリを高速化し、ペイロードのレイテンシを短縮します。
  • リアルタイムの可用性データ: DDP は、デバイスの可用性に関するリアルタイムの情報をデバイスランに直接提供します。これにより、高可用性のデバイスを選択して、長いキュー時間を回避できます。これは Test Lab にはない機能です。

移行パスの選択

AI を使用して移行を自動化する

この移行をスムーズに行うために、専用の翻訳エージェント スキル migrating-device-run を開発しました。

Antigravity、Claude Code、Codex などの AI コーディング エージェントを使用している場合は、カスタム テスト スクリプトを簡単に変換できます。移行スキルのスキーマの URL をコピーして、ここに記載されているように 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 は、3 つの主要なリソース グループ全体で最新の <resource> <verb> コマンド パターンを採用しています。
    • devices: デバイス カタログのインベントリと包括的なデバイスの詳細に CLI から直接アクセスできます。断片化された以前の firebase test android/ios models/versions/locales コマンドに代わるものです。
    • software-versions: サポートされているソフトウェア バージョン(Xcode や Android Test Orchestrator のバージョンなど)への CLI による直接アクセス。以前の 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 フラグリスト(例: --app と --additional-apks に分割するのではなく、--apps=app.apk,helper.apk)に分割します。
  • 構造化された辞書とリストの引数: カンマ区切りのファイルまたは環境リストを、構造化された 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): バージョン管理された YAML ファイルをシェル スクリプト文字列よりも優先する Flank から移行するチームは、gcloud のユニバーサル --flags-file=device-run-flags.yaml サポートを使用できます。

次のステップ

  1. クイックスタートを使用して、Developer Device Platform を設定します。
  2. デバイス カタログで、利用可能なすべてのデバイスをご確認ください。
  3. テストの実行を開始するには、デバイス実行について学習します。
  4. コマンドとフラグの翻訳にアクセスして、Test Lab と Flank のフラグから DDP へのマッピングをご覧ください。