翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Android インストルメンテーションと Device Farm の統合
注記
Android インストルメンテーションテストを AWS Device Farm と統合するには、次の手順に従います。Device Farm でのインストルメンテーションテストの使用に関する詳細については、「Android および AWS Device Farm のインストルメンテーション」を参照してください。
Android 計測テストを実行する (コンソール)
Device Farm コンソールを使用してテストをアップロードします。
-
https://console.aws.amazon.com/devicefarm
で Device Farm コンソールにサインインします。 -
ナビゲーションペインで、 [モバイルデバイスのテスト] を選択し、そして次に、[プロジェクト] を選択します。
-
プロジェクトのリストで、テストをアップロードするプロジェクトを選択します。
ヒント
検索バーで名前によりプロジェクトリストを絞り込めます。
プロジェクトを作成するには、「AWS Device Farm でのプロジェクトの作成」の手順に従ってください。
-
[ルールを作成] を選択します。
-
「アプリと実行タイプの選択」セクションで、Android アプリを選択します。
-
アプリの選択 セクションで、アプリがない場合は Device Farm が提供するサンプルアプリの選択 を選択します。独自のアプリを持ち込む場合は、独自のアプリをアップロードを選択し、APK (.apk ファイル形式) を選択します。
-
「テストの設定」の「テストフレームワークの選択」セクションで「計測」を選択し、「ファイルの選択」を選択します。テストを含む APK ファイル (.apk ファイル形式) を参照して選択します。
-
「実行環境を選択する」で、カスタム環境でテストを実行するか、標準環境でテストを実行するを選択します。詳細については、「AWS Device Farm でのテスト環境」を参照してください。
-
カスタム環境を選択した場合は、計測テスト用に入力されたデフォルトのテスト仕様を使用するか、独自のテスト仕様をアップロードを選択して独自のテスト仕様を提供できます。
-
デバイスの選択 で、デバイスの選択方法を選択します。デバイスプールを使用する を選択して、作成したデバイスの厳選されたコレクションまたはカスタムデバイスプールから選択します。テストを実行する個々のデバイスを選択するデバイスを手動で選択します。デバイス互換性セクションには、選択したプール内のデバイスがアプリと互換性がある数が表示されます。詳細については、「AWS Device Farm でのデバイスサポート」を参照してください。
-
実行レベルのプロパティを設定するには、実行設定セクションを更新します。ここでは、以下を実行できます。
-
(オプション) 実行の完了後に Device Farm にテストレポートを生成するには、「テストレポートの生成」を選択します。このオプションは、カスタムテスト環境でのみ使用できます。Device Farm は、テスト仕様出力に含まれる計測結果からレポートを生成します。独自のテスト仕様をアップロードする場合は、計測結果をテスト仕様の出力に出力してください。
-
-
残りのステップを完了し、実行を開始します。
テストレポートを表示する (コンソール)
https://console.aws.amazon.com/devicefarm
で Device Farm コンソールにサインインします。 -
ナビゲーションペインで、 [モバイルデバイスのテスト] を選択し、そして次に、[プロジェクト] を選択します。
-
検査する実行を含むプロジェクトを選択します。
-
完了した実行を選択して詳細を開きます。
-
完了したジョブのいずれかを選択して、そのデバイスの結果を開きます。
テストインサイトが有効になっている
ジョブの結果には、テストレポートタブが含まれます。これを選択すると、テストごとの内訳が表示されます。次のスクリーンショットは、すべての列が表示されたテストレポートタブを示しています。
タブには、テストごとに次のフィールドが表示されます。
testNameテスト方法の名前。
testClassテストクラスの名前。
resultテストの Device Farm の結果。
frameworkResult計測フレームワークが報告した結果。Device Farm はこの値を正規化された
resultフィールドにマッピングします。durationSecondsテストの期間を秒単位で表します。
startTimestampテストが開始された時刻。
endTimestampテストが終了した時刻。
current実行時のテストの位置。
numTests実行中のテストの合計数。
statusCodeテストが報告した計測ステータスコード。
streamテストの計測出力の人間が読み取れるバージョン。
stackTrace失敗したテストの場合、失敗のスタックトレース。
完全なテストレポートを JSON ファイルとしてダウンロードするには、ジョブの詳細の上部にある完全な概要のダウンロードを選択します。
表示する列を選択するには、歯車アイコンを選択します。設定では、表示する列を選択し、クラス別のグループをオンまたはオフにすることができます。クラス別のグループ化はデフォルトでオンになっており、テストクラス別にテストをグループ化します。オフにすると、次のスクリーンショットに示すように、すべてのテストのフラットリストが表示されます。
テストインサイトが有効になっていない
ジョブの結果には、標準のテスト出力とアーティファクトが表示されますが、テストレポートタブは表示されません。テストレポートを生成するには、テストインサイトを有効にして新しい実行をスケジュールします。
テストレポートを表示する (AWS CLI)
を実行してジョブ ARN get-jobを指定します。
aws devicefarm get-job --arnarn:aws:devicefarm:us-west-2:123456789012:job:PROJECT_ID/RUN_ID/00000
テストインサイトが有効になっていない
テストインサイトを有効にしなかった場合、レスポンスにはジョブのステータス、結果、カウンター、デバイスなどの標準ジョブフィールドが含まれます。
{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "name": "Example Android Phone", "created": "2026-08-05T14:26:56.959000-07:00", "status": "COMPLETED", "result": "PASSED", "counters": { "total": 3, "passed": 3, "failed": 0, "warned": 0, "errored": 0, "stopped": 0, "skipped": 0 }, "message": "Successful test lifecycle of Setup Test", "device": { "arn": "arn:aws:devicefarm:us-west-2::device:EXAMPLEDEVICEID", "name": "Example Android Phone", "platform": "ANDROID", "os": "16", "formFactor": "PHONE", "fleetType": "PUBLIC" }, "deviceMinutes": { "total": 1.38, "metered": 0.0, "unmetered": 1.13 }, "videoCapture": true } }
テストインサイトが有効になっている
テストインサイトを有効にした場合、レスポンスには insights オブジェクトも含まれます。このオブジェクトには、テストレポートのステータス、高レベルのメトリクス、詳細レポートへの署名付き URL が含まれます。
{ "job": { "arn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "status": "COMPLETED", "result": "PASSED", "counters": { ... }, "device": { ... }, "deviceMinutes": { ... }, "videoCapture": true, "insights": { "status": "COMPLETED", "testReport": { "message": "Results: 2 Executed | 2 passed, Median test duration: 28.926 seconds.", "metrics": { "testsTotal": 2, "testsPassed": 2, "testsFailed": 0, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 100.0 }, "testDetailsUrl": "https://EXAMPLE-PRESIGNED-URL" } } } }
testDetailsUrl フィールドは、完全なテストレポート JSON への署名付き URL です。これをダウンロードして、テストごとの内訳を取得します。
curl -o test-report.json "PRESIGNED_URL"
計測ジョブのテストレポートの例を次に示します。
{ "version": "1.0", "jobArn": "arn:aws:devicefarm:us-west-2:123456789012:job:EXAMPLE-PROJECT/EXAMPLE-RUN/00000", "metrics": { "testsTotal": 3, "testsPassed": 2, "testsFailed": 1, "testsSkipped": 0, "testsErrored": 0, "testsOther": 0, "testsPassedPercentage": 66.67, "totalTestExecutionDurationSeconds": 26.004, "medianTestExecutionDurationSeconds": 1.598 }, "testDetails": [ { "testName": "testConnect", "testClass": "com.example.myapp.GpsConnectInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 24.399, "startTimestamp": "2026-08-05T20:38:30.131514Z", "endTimestamp": "2026-08-05T20:38:54.530369Z", "statusCode": 0, "current": 1, "numTests": 3 }, { "testName": "testHistoryOff", "testClass": "com.example.myapp.NotificationHistoryInstrumentedTest", "frameworkResult": "PASSED", "result": "PASSED", "durationSeconds": 1.598, "startTimestamp": "2026-08-05T20:38:54.531765Z", "endTimestamp": "2026-08-05T20:38:56.130032Z", "statusCode": 0, "current": 2, "numTests": 3 }, { "testName": "testConnect", "testClass": "com.example.myapp.WifiConnectInstrumentedTest", "frameworkResult": "FAILED", "result": "FAILED", "durationSeconds": 0.002, "startTimestamp": "2026-08-05T20:38:56.131857Z", "endTimestamp": "2026-08-05T20:38:56.133770Z", "stackTrace": "java.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\tat com.example.myapp.WifiConnectInstrumentedTest.testConnect(WifiConnectInstrumentedTest.java:93)\n\t...", "stream": "\nError in testConnect(com.example.myapp.WifiConnectInstrumentedTest):\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...", "statusCode": -2, "current": 3, "numTests": 3 } ], "errorMessage": "There was 1 failure:\n1) testConnect(com.example.myapp.WifiConnectInstrumentedTest)\njava.lang.NullPointerException: Attempt to invoke virtual method 'boolean androidx.test.uiautomator.UiDevice.pressHome()' on a null object reference\n\t...\nFAILURES!!!\nTests run: 3, Failures: 1", "instrumentationCode": -1 }
レポートには、次の最上位フィールドが含まれます。
versionレポートスキーマのバージョン。
jobArnジョブの ARN。
metrics-
ジョブの結果を集計します。
metricsオブジェクトには、以下のフィールドが含まれています。testsTotalジョブ内のテストの合計数。
testsPassed合格したテストの数。
testsFailed失敗したテストの数。
testsSkippedスキップされたテストの数。
testsErroredエラーが発生したテストの数。
testsOther別の結果を持つテストの数。
testsPassedPercentage合格したテストの割合。
totalTestExecutionDurationSecondsすべてのテストの合計時間を秒単位で表します。
medianTestExecutionDurationSecondsテストの期間の中央値。秒単位。
errorMessage実行に失敗した場合、それらを要約したエラーメッセージ。
instrumentationCodeジョブの全体的な計測終了コード。
testDetails-
テスト結果ごとのリスト。の各エントリには、次のフィールド
testDetailsが含まれます。testNameテスト方法の名前。
testClassテストクラスの名前。
resultテストの Device Farm の結果。
frameworkResult計測フレームワークが報告した結果。Device Farm はこの値を正規化された
resultフィールドにマッピングします。durationSecondsテストの期間を秒単位で表します。
startTimestampテストが開始された時刻。
endTimestampテストが終了した時刻。
current実行時のテストの位置。
numTests実行中のテストの合計数。
statusCodeテストが報告した計測ステータスコード。
streamテストの計測出力の人間が読み取れるバージョン。
stackTrace失敗したテストの場合、障害のスタックトレース。
(オプション) Android インストルメンテーションテストでのスクリーンショットの撮影
Android インストゥルメンテーションインストゥルメンテーションテストの一部としてスクリーンショットを撮ることができます。
スクリーンショットを撮るには、次のいずれかのメソッドを呼び出します:
-
Robotium の場合は、
takeScreenShotメソッドを呼び出します (例:solo.takeScreenShot();)。 -
Spoon の場合は、次のような
screenshotメソッドを呼び出します:Spoon.screenshot(activity, "initial_state"); /* Normal test code... */ Spoon.screenshot(activity, "after_login");
テスト実行中、Device Farm は、デバイス上の次の場所 (存在する場合) からスクリーンショットを撮影し、テストレポートに追加します:
-
/sdcard/robotium-screenshots -
/sdcard/test-screenshots -
/sdcard/Download/spoon-screenshots/test-class-name/test-method-name -
/data/data/application-package-name/app_spoon-screenshots/test-class-name/test-method-name