Robo テストは、Firebase Test Lab に統合されているテストツールです。Robo テストはアプリのユーザー インターフェース(UI)の構造を分析し、ユーザーのアクティビティを自動的にシミュレートして体系的な調査を行います。Robo テストでは、特定のデバイス構成で同一の設定を使用してアプリをテストするときに、常に同じユーザー アクティビティを同じ順序でシミュレーションします。この再現可能なテスト アプローチにより、Robo テストを使用しバグの修正の検証や回帰テストを行うことができます。
Robo テストは、ログファイルをキャプチャして一連の注釈付きスクリーンショットを保存します。次にスクリーンショットから動画を作成し、実行したユーザー操作をシミュレートして表示します。これらのログ、スクリーンショット、動画は、アプリのクラッシュの根本原因を特定するのに役立ちます。これらの Robo テスト機能は、アプリの UI に関する問題を把握する際にも役立ちます。
Robo テストに加えて、Robo テストの機能である Robo スクリプトを使用してテストをカスタマイズできます。詳細については、Robo スクリプトの実行をご覧ください。
iOS+ 用 Robo のベータ版を試す場合は、Robo テストの実行をご覧ください。
Robo テストクロールの統計情報
Robo テストの結果の解釈に役立つように、Robo テストでは各テストクロール中に統計情報が記録されます。Test Lab では、テストの結果ページの [Robo テスト] タブの上部に統計情報が表示されます。
操作: クロール中に行われた操作の総数。Robo スクリプト操作、モンキー アクション、Robo ディレクティブが含まれます。
アクティビティ: クロール中に対象となった個別のアクティビティの数。
スクリーン数: クロール中にアクセスされた個別のスクリーンの数。
また、Test Lab では統計情報を使用して、クロールグラフの形式での Robo テストの視覚表現も作成されます。グラフには、スクリーンがノードとして、操作がエッジとして表示されます。スクリーン間のエッジをたどることで、Robo テストがクロール全体でアプリをどのように移動したかを知ることができます。
Robo テストのタイムアウト
アプリの UI の複雑さによっては、詳細な UI インタラクションのセットを Robo テストで完了するのに 5 分以上かかることがあります。テストのタイムアウトは、通常のアプリで 120 秒(2 分)以上、中程度の複雑さのアプリで 300 秒(5 分)以上に設定することをおすすめします。タイムアウトのデフォルト値は、Android Studio と Firebase コンソールからテストを実施した場合は 300 秒(5 分)、gcloud
コマンドラインからテストを実施した場合は 900 秒(15 分)です。
アプリの起動タイムアウト エラー
アプリの起動に時間がかかると、Robo テストはエラーをスローする場合があります。この場合、アプリをクロールできなくなります。これは起動時間が非常に長い場合にのみ発生する問題なので、アプリを変更して起動時間を短縮するだけで問題を解決できます。
Robo スクリプトによる詳細な制御
時には、テストに更なる制御が必要な場合があります。たとえば、一般的なユーザー行動をテストしたいときや、ユーザー名やパスワードなどの特定の UI 入力を表示したいときなどです。これには、Robo スクリプトが役立ちます。Robo スクリプトの詳細については、Robo スクリプトの実行と Robo スクリプト リファレンス ガイドをご覧ください。
Robo テストと Android UI 以外のウィジェット
Robo テストは Android API を使用して、Android UI ウィジェットのアクションを直接実行します。これは、テストで UI を自動的に探索するのに役立ちますが、テストを実行するために画面の Android UI 階層を抽出する必要があることを意味します。
アプリの画面が Android UI ウィジェットを使用していない場合、Robo テストはその画面をテストするためにモンキー アクションに戻ります。より洗練された Robo テストのアクションとは異なり、モンキー アクションは、デバイスの画面上のセミランダムな位置でタップイベントをシミュレートするだけです。
Android UI ウィジェットを使用しない画面のテストを改善するために、モンキー アクションの無作為なタップを、Firebase Test Lab ゲームループ テストを使用して一連のスクリプトタップとインタラクションに置き換えることができます。
Google Play との統合
アルファまたはベータチャネルを使用してアプリの APK ファイルをアップロードして公開するときに、Google Play Console で Robo テストを使用できます。Robo テストは、さまざまな地域の一般的な物理デバイスで動作し、各種のフォーム ファクタとハードウェア構成に対してテストを実行できます。詳しくは、リリース前レポートを使って問題を特定するをご覧ください。
テスト アカウントのログインと事前定義テキストの入力
Robo テストではテスト アカウントのログインがサポートされるだけでなく、アプリのフィールドに事前定義テキストを入力することもできます。カスタム ログインやその他の事前定義テキストの入力には、アプリの EditText
フィールドが使用されます。文字列ごとに、Android リソース名を使用して EditText
フィールドを識別する必要があります。詳しくは、リソースへのアクセスをご覧ください。
ログイン
Robo テストでは、相互排他的な 2 種類の方法によってログインをサポートします。
カスタム ログイン: テスト アカウントの認証情報を提供する場合は、Robo テストに入力場所を指示し、その認証情報を提供する必要があります。
自動ログイン: ログイン画面での認証に Google アカウントを使用するアプリの場合は、認証用の Google テスト アカウントが Robo テストで使用されます(カスタム ログイン用のテスト アカウントの認証情報を提供する場合を除く)。
カスタム ログインに使用するテスト アカウントの認証情報を提供するには、次の手順に従います。
[ディメンションを選択] ページで [その他のオプション] を選択します。
[テスト アカウント認証情報(オプション)] で、ユーザー名とパスワードのリソース名、テスト アカウントのユーザー名とパスワードを入力します。
事前定義テキストの入力
アプリで使用するその他のテキスト フィールドに、カスタム テキストを入力することもできます。他のフィールドにテキストを入力するには、次の手順に従います。
[ディメンションを選択] ページで [その他のオプション] を選択します。
[その他の項目(オプション)] で、1 つ以上のリソース名と、該当のテキスト フィールドに入力する文字列を指定します。
事前定義テキストの入力 {:#predefine-text} エラー
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 スクリプトを使用して、テストをカスタマイズします。