コンソールへ移動

Firebase Test Lab の Robo テスト

Robo テストは、Firebase Test Lab に統合されているテストツールです。Robo テストはアプリの UI の構造を分析してから、ユーザーのアクティビティを自動的にシミュレートして体系的な調査を行います。UI/Application Exerciser Monkey テストとは異なり、Robo テストでは、特定のデバイス構成で同一の設定を使用してアプリをテストするときに、常に同じユーザー アクティビティを同じ順序でシミュレーションします。これにより、UI/Application Exerciser Monkey テストでは不可能な方法で、Robo テストを使用しバグの修正の検証や回帰テストを行うことができます。

Robo テストは、ログファイルをキャプチャして一連の注釈付きスクリーンショットを保存します。次にスクリーンショットから動画を作成し、実行したユーザー操作をシミュレートして表示します。これらのログ、スクリーンショット、動画は、アプリがクラッシュした際の根本原因の特定や、アプリの UI の問題を把握するのに役立ちます。

Robo テストクロールの統計情報

Robo テストの結果を解釈するのに役立つように、Robo では各テストクロール中に統計情報が記録されます。Test Lab では、テストの結果ページの [Robo] タブの上部に統計情報が表示されます。

  • 操作: クロール中に行われた操作の総数。Robo スクリプト操作、モンキー アクション、Robo ディレクティブが含まれます。
  • アクティビティ : クロール中に対象となった個別のアクティビティの数。
  • スクリーン数 : クロール中にアクセスされた個別のスクリーンの数。

また、Test Lab では統計情報を使用して、クロールグラフの形式での Robo クロールの視覚表現も作成されます。グラフには、スクリーンがノードとして、操作がエッジとして表示されます。スクリーン間のエッジをたどることで、Robo がクロール全体でアプリをどのように移動したかを知ることができます。

Robo テストのタイムアウト

アプリの UI の複雑さによっては、詳細な UI インタラクションのセットを Robo テストで完了するのに 5 分以上かかることがあります。テストのタイムアウトは、通常のアプリでは 120 秒(2 分)以上、中程度の複雑さのアプリでは 300 秒(5 分)以上に設定することをおすすめします。タイムアウトのデフォルト値は、Android Studio と Google Developer Console からテストを実施した場合は 300 秒(5 分)、gcloud コマンドラインからテストを実施した場合は 1,500 秒(25 分)です。

アプリの起動タイムアウト エラー

アプリの起動に時間がかかると、Robo はエラーをスローする場合があります。この場合、アプリをクロールできなくなります。これは起動時間が非常に長い場合にのみ発生する問題なので、アプリを変更して起動時間を短縮するだけで問題を解決できます。

Robo スクリプトによる詳細な制御

時には、テストに更なる制御が必要な場合があります。たとえば、一般的なユーザー行動経路をテストしたり、ユーザー名やパスワードなどの特定の UI 入力を表示したいときなどです。これには、Robo スクリプトが役立ちます。

Robo スクリプトを使用すると、アプリ内のワークフローの操作手順を記録し、記録した内容を Firebase コンソールにアップロードして、Robo テスト内で実行することができます。スクリプトを添付した状態で Robo テストを実行すると、Robo はまずスクリプトに記述されたアクションを実行してから、通常どおりアプリを調べます。

Android Studio の Firebase ツールを使用して、Robo スクリプトを開始します。

  1. Android Studio を開きます。
  2. メインメニューで、[ツール] > [Firebase] を選択します。
  3. [Test Lab] を選択し、[Record Robo Script and use it to Guide Robo Test] をクリックします。
  4. ツールの残りの手順に従って、Robo スクリプトを記録します。
  5. Robo スクリプトを Test Lab にアップロードし、テストを開始します。

Robo スクリプトのエラー

Robo スクリプトが失敗した場合、Test Lab はスクリプト内の以降のステップをすべて中止し、通常の Robo クロールを再開します。ほとんどの場合、スクリーン上の必要な要素を Test Lab で見つけることができないために Robo スクリプトは失敗します。失敗を回避するには、アプリのナビゲーションが予測可能であり、スクリーンの表示順序が非決定的でないことを確認してください。

Robo テストと Android UI 以外のウィジェット

Robo テストは Android API を使用して、Android UI ウィジェットのアクションを直接実行します。これは、テストで UI を自動的に探索するのに役立ちますが、テストを実行するために画面の Android UI 階層を抽出する必要があることを意味します。

アプリの画面が Android UI ウィジェットを使用していない場合、Robo テストはその画面をテストするために Monkey アクションに戻ります。より体系的な Robo のアクションとは異なり、Monkey アクションは、デバイスの画面上のランダムな位置でタップイベントをシミュレートするだけです。

Android UI ウィジェットを使用しない画面のテストを改善するために、Monkey アクションの無作為なタップを、Firebase Test Lab ゲームループ テストを使用して一連のスクリプト タップとインタラクションに置き換えることができます。

Google Play との統合

アルファまたはベータチャネルを使用してアプリの APK ファイルをアップロードして公開するときに、Google Play Console で Robo テストを使用できます。Robo テストは、さまざまな地域の一般的な物理デバイスで動作し、各種のフォーム ファクタとハードウェア構成に対してテストを実行できます。詳しくは、リリース前レポートを使って問題を特定するをご覧ください。

テスト アカウントのログインと事前定義テキストの入力

Robo テストではテスト アカウントのログインがサポートされるだけでなく、アプリのフィールドに事前定義テキストを入力することもできます。カスタム ログインやその他の事前定義テキストの入力には、アプリの EditText フィールドが使用されます。文字列ごとに、Android リソース名を使用して EditText フィールドを識別する必要があります。詳しくは、リソースへのアクセスをご覧ください。

ログイン

Robo テストでは、相互排他的な 2 種類の方法によってログインをサポートします。

  • カスタム ログイン: テスト アカウントの認証情報を提供する場合は、Robo テストに入力場所を指示し、その認証情報も提供する必要があります。
  • 自動ログイン: ログイン画面での認証に Google アカウントを使用するアプリの場合は、認証用の Google テスト アカウントが Robo テストで使用されます(カスタム ログイン用のテスト アカウントの認証情報を提供する場合を除く)。

カスタム ログインに使用するテスト アカウントの認証情報を提供するには、次の手順に従います。

  1. [ディメンションを選択] ページで [詳細設定を表示] を選択します。
  2. [テスト アカウント認証情報(オプション)] で、ユーザー名とパスワードのリソース名、テスト アカウントのユーザー名とパスワードを入力します。

事前定義テキストの入力

アプリで使用するその他のテキスト フィールドに、カスタム テキストを入力することもできます。他のフィールドにテキストを入力するには、次の手順に従います。

  1. [ディメンションを選択] ページで [詳細設定を表示] を選択します。
  2. [その他の項目(オプション)] で、1 つ以上のリソース名と、該当のテキスト フィールドに入力する文字列を指定します。

事前定義テキストの入力エラー

Robo は、指定された正規表現に一致する Android リソース名が設定された EditText フィールドを検索します。Robo が一致するフィールドを見つけられない場合、テキストは入力されませんが、それ以外の場合は通常どおりクロールを続行します。

テストには、アプリでサポートされているディープリンクを 3 つまで提供できます。ディープリンクは Android ACTION_VIEW インテントとしてアプリに発行されるため、各リンクはアプリ内のインテント フィルタと一致している必要があります。

ディープリンクが 1 つ以上提供されている場合、アプリはまず(ACTION_MAIN インテントを使用して)通常どおり起動され、指定されたタイムアウトまでクロールされます。メインクロール後、各ディープリンクはさらに 30 秒間ずつクロールされます。

Robo がディープリンクに一致するアクティビティを見つけられない場合、Test Lab はそのリンクを無視します。ディープリンクの問題は、通常、提供されたディープリンクとアプリ内でのその定義に相違があるために発生します。提供された URL とアプリの両方で、入力ミスやその他の不一致がないか確認してください。

アプリのライセンス サポート

Test Lab は、Google Play が提供するアプリ ライセンス サービスを使用するアプリをサポートしています。Test Lab でアプリをテストする際にライセンスを確認するには、アプリを Play ストアの製品版チャネルに公開する必要があります。Test Lab を使用してアルファまたはベータチャネルでアプリをテストするには、アプリを Test Lab にアップロードする前にライセンス チェックを削除します。

既知の問題

Robo テストには、現時点で以下の既知の制限があります。

  • UI フレームワークのサポート。Robo テストは、Android UI フレームワークの UI 要素(ViewViewGroup オブジェクトを含み、WebView オブジェクトは含まない)を使用するアプリにしか対応していません。Robo テストを使用して、他の UI フレームワークを使用するアプリ(Unity ゲームエンジンを使用するアプリを含む)を実行する場合、テストは最初の画面を調べただけで終了することがあります。
  • ログイン キャプチャ。Robo テストは、ログイン用の認証情報に加えて、その他のユーザー操作(キャプチャの入力など)を必要とするログイン画面を迂回することはできません。