GitHub

Androidのデバイステスト

BitriseのAndroidデバイステストソリューションを用いることで、デバイスのセットアップや登録を行うことなく、エミュレータ上でUIテストを実行できます。

制限について

ビルド時間によって制限される場合があります。また、1つのビルドには1種類のテスト(instrumentationroboまたはgameloop)を実行する[BETA] Virtual Device Testingステップを1つだけ含めることができます。

デバイステストソリューションはFirebase Test Labをベースとしています。 実行結果のログ、ビデオ、スクリーンショットはBitriseで閲覧することができます。

デバイステストを有効化

  1. はじめにアプリのSettingsタブ上でDevice TestingをONにします。Device Testingの右上隅にあるスイッチを右に切り替えます。

  2. Settings ページからアプリの Build ページに移動します。
  3. テストを行うビルドをクリックします。
  4. もしStep 1でデバイステストを有効にしていれば、APPS & ARTIFACTSの次に3番目のタブDEVICE TESTS BETA が出現するのでこれをクリックします。

  5. add step to primary workflowをクリックして、デバイステストに必要な2つのステップをprimary workflowに追加します。
    • Android Build - テストのためにapkを生成するステップ
    • [BETA] Virtual Device Testing for Android - テストを実行しテストレポートを生成するステップ

テストの実行

Bitriseでは3つのテストタイプから選択可能です。

もしテストタイプの違いを知りたい場合はFirebase’s documentationをご覧ください。 RoboテストとInstrumentationテストでは設定方法に少し違いがありますので、別々に見てみましょう!

Roboテストの実行

  1. Workflow Editorでビルドのprimary workflowを開きます。
  2. APKをエクスポートするため、Android Unit Testステップの後にAndroid Buildステップを追加します。
  3. Variantの入力欄にDebugを追加してください。これにより、ビルドのAPKパスを含む環境変数が準備されます。この環境変数は次のステップで必要になります。

  4. Android Buildステップの後に[BETA] Virtual Device Testing for Androidを追加します。
  5. APK pathの入力欄を設定します。
  6. Test typeroboが選択されていることを確認してください。
  7. Test devices入力欄にテストデバイスのタイプを追加します。デフォルト以外のデバイスを選択する場合、,で区切った deviceID,version,language,orientationのフォーマットで入力する必要があります。

    利用可能なデバイスの一覧はこちらで確認してください。

  8. ビルドを開始し、テスト結果を確認します。

Roboテストを成功させるためのRobo Directivesを使ったユーザー入力の設定

Roboテストを成功させるために、アプリが特定のユーザー操作を必要とする場合、Robo Directives入力フィールドを使ってそれらの必要な入力を設定することができます。たとえば、アプリの特定のUI要素は必要なユーザー入力(ユーザー名とメールアドレス)がログイン用に入力されている場合にのみ、Roboテストにアクセスできます。

  1. ワークフローの[BETA] Virtual Device Testing for Androidステップをクリックします。
  2. Robo Testセクションをクリックします。
  3. Robo directives入力フィールドに、必要なユーザー入力ディレクティブを設定します。
    • カンマ区切りのkey-valueリストを提供してください。keyはターゲットUI要素のAndroidリソース名、valueはテキスト文字列です。EditTextフィールドはサポートされていますが、WebView UI要素のテキストフィールドはサポートされていません。たとえば、カスタムログインに次のパラメータを使用できます。

      username_resource,username,ENTER_TEXT
      password_resource,password,ENTER_TEXT
      loginbtn_resource,,SINGLE_CLICK
      
    • 行ごとに1つのディレクティブを定義し、パラメータは,で区切ります。例: ResourceName,InputText,ActionType

指定した入力に基づき、(特定のユーザー入力でしかアクセスできないページであっても)正常にRoboテストを実行できます。また、ビルドページのDEVICE TESTSタブ内でテスト結果を確認できます。 テスト結果は次のようになります。

以下は成功したRoboテストのスクリーンショットです。RoboテストはRobo directivesによって事前に定義されたemailpasswordのフィールドを注入することでMy applicationのテストは通りました。

Instrumentationテストの実行

  1. Workflow Editorでビルドのprimary workflowを開きます。
  2. Android Build for UI testingをワークフローに追加します。
  3. APKとテストAPKを出力するには、Android Build for UI testingステップで以下の入力フィールドを設定する必要があります。
    • Project Location: Androidプロジェクトのルートディレクトリ
    • Module: ビルドしたいモジュール
    • Variant:ビルドしたいバリアント (通常はdebug)

    このステップの出力は BITRISE_APK_PATH(フィルタリング後に生成されたAPKのパス)とBITRISE_TEST_APK_PATH(フィルタリング後に生成されたテストAPKのパス)になります。

  4. Android Build for UI testingステップ直後に[BETA] Virtual Device Testingステップを追加します。
  5. Test typeinstrumentationに設定します。

    Android Build for UI TestingステップはAPKとテストAPKを出力し、それらのパスは自動的に[BETA] Virtual Device TestingステップのAPK pathTest APK path入力フィールドに設定されます。

  6. Test devices入力欄にテストデバイスのタイプを追加します。デフォルト以外のデバイスを選択する場合、,で区切った deviceID,version,language,orientationのフォーマットで入力する必要があります。

  7. ビルドを開始し、テスト結果を確認します。

テスト結果の確認

UIテストの結果は、ビルドページのDEVICE TESTSタブで確認できます。

  1. Buildsページに戻りビルドを選択し、DEVICE TESTSタブをクリックしてテスト結果を確認します。
  2. プロジェクトのテストを行ったデバイスをクリックします。

Instrumentationテストを選択した場合はテストケースとダウンロード可能なログを、Roboテストを選択した場合はビデオとスクリーンショットを見ることができます。または下にスクロールして、すべてのレポートをFILES GENERATEDでダウンロードできます。