Robo スクリプトの実行(iOS+)

このドキュメントでは、モバイルアプリの手動 QA タスクを自動化し、継続的インテグレーション(CI)とリリース前テスト戦略を可能にするテストである Robo スクリプトの使用方法について説明します。たとえば、Robo スクリプトを使用して、一般的なユーザー行動のテスト、ユーザー名やパスワードなどの特定のユーザー インターフェース(UI)の入力などができます。Robo スクリプトは Robo テストの機能です。

Robo スクリプトは、テストエンジンとして Robo テストを使用します。最も基本的な形式では、Robo スクリプトは「username」というテキストを入力してから [OK] ボタンをタップするなどの一連の UI アクションで構成されます。Robo スクリプトには、要素が表示されるのを待つ、要素内の特定のポイントをタップする、Android Debug Bridge(adb)シェルのコマンドを実行するなどのアクションを含めることもできます。

Robo スクリプトには、従来のテスト フレームワークに比べて次のようなメリットがあります。

能力 説明
非常に堅牢 Robo スクリプトを使用すると、各アプリ バージョン間の構造、動作の大きな差異、およびアプリの不安定性を許容できます。
オープンエンド Robo スクリプトが完了すると、基本 Robo テストが引き継いでアプリのテストを続けることができます。この継続的なテスト アプローチにより、いくつかの主要なユースケースが可能になります。たとえば、Robo スクリプトを使用してカスタム ログインフローを実行し、アプリを特定の状態にすることができます。
記録可能 Robo スクリプトを手動でコーディングする必要はありません。Android Studio の Robo スクリプト レコーダーを使用して記録できます。Robo スクリプトの作成と変更には通常、モバイル開発の知識は必要ありません。
フレキシブル Robo スクリプトは、ゲームで一般的な非ネイティブ UI 要素とやり取りできます。

Robo スクリプトは、Robo テスト中に条件付きでトリガーされるため、ユーザーは Robo の動作を拡張できます。通常は、カバレッジを拡大したり、特定の機能をターゲットにしたりするのに役立ちます。従来のテスト フレームワークとは対照的に、Robo スクリプトでは以下がサポートされています。

  • さまざまなトリガー条件(例: 特定のアプリのパッケージ名がアクティブになっているかどうか、画面に特定の要素が表示されているかどうか)。
  • 実行制御(例: 最大実行回数、優先度、クロール ステージ)。
  • 一般的でないアクションのタイプ(条件付き、要素の無視、画面を閉じる)。

簡単にメンテナンスできるため、可能な限り Robo スクリプトを使用することをおすすめします。たとえば、Robo スクリプトを使用して次を実行できます。

  • 重要なワークフローをナビゲートして、アプリの機能の中核に到達します。たとえば、ログイン、初回起動後のアプリの状態の設定、新しいユーザーの登録を行うことができます。
  • アプリの特定の部分に Robo を集中させることで、Robo テストの時間を最大限に活用できます。Robo スクリプトは、Robo テストがアプリの関連する部分に到達するようガイドします。ここで、Robo テストは完全に自動化されたクロールを再開します。
  • アプリを特定の状態または画面にして分析を行います。たとえば、アプリ内メッセージ、プライバシー ポリシー、ゲームの特定のレベルなどを分析します。
  • Robo スクリプトの完了後、Robo テストが完全に自動化されたクロールを再開するかどうかにかかわらず、エンドツーエンドのインストルメンテーション テストを実行します。

Robo スクリプトの高度な機能を使用すれば、次のことを行えます。

  • Robo がテスト対象アプリのクロールを開始する前に、またはクロール終了後にアクションを実行します。たとえば、クロール前にテスト対象アプリのデータをクリーンアップしたり、デバイス設定を変更したりできます。
  • クロール中の Robo の動作を変更します。具体的には、次のようなことを行えます。
    • 一部の UI ウィジェットまたはアプリ画面を無視するように Robo に指示します。
    • 特定の画面からバックトラッキングを行う際に実行する Robo のカスタム アクションを指定します。
    • クロール中に特定のアプリ画面が検出されたときに、特定のアクションを実行するように指定します。
  • Robo によるクロールの実行方法を完全にカスタマイズします。たとえば、条件付きアクションと無条件アクションを組み合わせて使用して、デバイスを操作して途中で表示されるポップアップ ダイアログを閉じたりしながら、クロール全体を通じてテスト対象アプリをバックグラウンドでテストします。

Robo スクリプトは、あらゆる種類のテストに代わるものではないことにご注意ください。アプリの低レベルのロジックのバグを検出するには、引き続き単体テストが必要です。通常、これらのテストに Android 環境や iOS 環境は必要ありません。対象を決めたインストルメンテーション テストで Robo スクリプトのテストを補完することをおすすめします。このテストは、ビジネス ロジックに関する具体的で詳細なアサーションを行うことができ、コードで最もよく表現されます。

次のステップ