Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

ロボテストを実行する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Robo test は、Firebase Test Lab と統合されたテスト ツールです。 Robo テストは、アプリのユーザー インターフェース (UI) の構造を分析し、ユーザー アクティビティを自動的にシミュレートして系統的に探索します。 Robo テストを使用して特定のデバイス構成で同じ設定のアプリをテストする場合、Robo テストは常に同じユーザー アクティビティを同じ順序でシミュレートします。この反復可能なテスト アプローチにより、Robo テストを使用してバグ修正を検証し、回帰をテストできます。

Robo テストは、ログ ファイルをキャプチャし、注釈付きの一連のスクリーンショットを保存し、それらのスクリーンショットからビデオを作成して、実行したシミュレートされたユーザー操作を示します。これらのログ、スクリーンショット、およびビデオは、アプリのクラッシュの根本原因を特定するのに役立ちます。これらの Robo テスト機能は、アプリの UI の問題を見つけるのにも役立ちます。

通常の Robo テストを実行するだけでなく、Robo テストの機能である Robo スクリプトを使用してテストをカスタマイズできます。詳細については、「 Robo スクリプトを実行する」を参照してください。

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

Robo テストの結果を解釈しやすくするために、Robo テストは各テスト クロール中に統計を記録します。 Test Lab は、テスト結果ページの [Robo テスト] タブの上部に統計を表示します。

  • アクション: ロボ スクリプト アクション、モンキー アクション、ロボ ディレクティブなど、クロール中に実行されたアクションの総数。

  • アクティビティ: クロール中にカバーされた個別のアクティビティの数。

  • 画面: クロール中にアクセスした個別の画面の数。

また、Test Lab は統計を使用して、クロール グラフの形式で Robo テストの視覚的表現を作成します。グラフには、ノードとして画面があり、エッジとしてアクションがあります。画面間の端をたどることで、クロール中に Robo テストがアプリをどのように通過したかを把握できます。

ロボ テストのタイムアウト

アプリの UI の複雑さによっては、Robo テストが一連の完全な UI 操作を完了するのに 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 テストは Monkey Actions にフォールバックしてその画面をテストします。より整然とした Robo テスト アクションとは異なり、Monkey アクションは、デバイスの画面上の半ランダムな場所でタップ イベントをシミュレートするだけです。

Android UI ウィジェットを使用しない画面をより適切にテストするには、Monkey アクションの任意のタップを、 Firebase Test Lab Game Loop Testsを介してスクリプト化されたタップとインタラクションのセットに置き換えることができます。

Google Play との統合

アルファまたはベータ チャネルを使用してアプリの APK ファイルをアップロードおよび公開するときに、Google Play Console で Robo テストを使用できます。 Robo テストは、地理的にさまざまな場所にある一般的な物理デバイスのセットで実行され、さまざまなフォーム ファクターとハードウェア構成にわたるテスト カバレッジを提供します。詳しくは、リリース前レポートを使用して問題を特定するをご覧ください。

アカウントへのサインインと事前定義されたテキスト入力のテスト

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

ログイン

Robo テストには、サインインをサポートする相互に排他的な方法が 2 つあります。

  • カスタム サインイン: テスト アカウントの資格情報を提供する場合は、Robo テストにそれらを入力する場所を伝え、それらの資格情報も提供する必要があります。

  • 自動サインイン: 認証に Google アカウントを使用するサインイン画面がアプリにある場合、カスタム サインイン用のテスト アカウント資格情報を提供しない限り、Robo テストは Google テスト アカウントを使用します。

カスタム サインイン用のテスト アカウント資格情報を提供するには、次の手順を実行します。

  1. [ディメンションの選択]ページで、[追加オプション]を選択します。

  2. Test account credentials (Optional)で、ユーザー名とパスワードのリソース名、およびテスト アカウントのユーザー名とパスワードを入力します。

定義済みテキスト入力

アプリで使用される他のテキスト フィールドにカスタム入力テキストを提供できます。追加フィールドにテキスト入力を提供するには、次の手順を実行します。

  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 要素 ( ViewオブジェクトとViewGroupオブジェクトを含み、 WebViewオブジェクトを除く) を使用するアプリとのみ互換性があります。 Robo テストを使用して、Unity ゲーム エンジンを使用するアプリを含む、他の UI フレームワークを使用するアプリを実行する場合、テストは最初の画面を超えて探索せずに終了する場合があります。
  • サインイン キャプチャ: Robo テストは、サインインするための資格情報の入力以外に追加のユーザー アクションを必要とするサインイン画面をバイパスできません。たとえば、キャプチャの完了などです。

次のステップ