Firebase Test Lab の Robo テスト

Robo テストは、Firebase Test Lab に統合されたテストツールです。Robo テストはアプリの UI の構造を分析してから、ユーザー アクティビティを自動的にシミュレートすることによって体系的な調査を行います。Robo テストを使用して、特定の端末設定で、同一の設定を使用してアプリをテストする場合、Robo テストは UI/Application Exerciser Monkey テストとは異なり、常に同じユーザー アクティビティを同じ順序でシミュレーションします。これにより、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 テストでは、テスト アカウントのログインに対応しています。また、事前定義したテキストをアプリ内のフィールドに入力することもできます。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 テストは、ログイン用の認証情報に加えて、その他のユーザー操作(キャプチャの入力など)を必要とするログイン画面を迂回することはできません。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。