View a markdown version of this page

Android 계측을 Device Farm과 통합 - AWS Device Farm

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Android 계측을 Device Farm과 통합

참고

다음 지침에 따라 Android 계측 테스트를 AWS Device Farm과 통합합니다. Device Farm에서 계측 테스트 사용 방법에 대한 자세한 내용은 Android 및 AWS Device Farm용 계측 섹션을 참조하세요.

Android Instrumentation 테스트 실행(콘솔)

Device Farm 콘솔을 사용하여 테스트를 업로드하세요.

  1. https://console.aws.amazon.com/devicefarm에서 Device Farm 콘솔에 로그인하세요.

  2. 탐색 창에서 모바일 디바이스 테스트를 선택하고 프로젝트를 선택하세요.

  3. 프로젝트 목록에서 테스트를 업로드할 프로젝트를 선택하세요.

    작은 정보

    검색 창을 사용하여 인스턴스 목록을 이름별로 필터링할 수 있습니다.

    프로젝트를 생성하려면, AWS Device Farm에서 프로젝트 생성의 지침을 따르세요.

  4. 실행 생성을 선택합니다.

  5. 앱 및 실행 유형 선택실행 유형 섹션에서 Android 앱을 선택합니다.

  6. 앱 선택앱 선택 옵션 섹션에서 앱이 없는 경우 Device Farm에서 제공하는 샘플 앱 선택을 선택합니다. 자체 앱을 가져오는 경우 자체 앱 업로드를 선택한 다음 APK(.apk 파일 형식)를 선택합니다.

  7. 테스트 구성테스트 프레임워크 선택 섹션에서 계측을 선택한 다음 파일 선택을 선택합니다. 테스트가 포함된 APK 파일(.apk 파일 형식)을 찾아 선택합니다.

  8. 실행 환경 선택에서 사용자 지정 환경에서 테스트 실행 또는 표준 환경에서 테스트 실행을 선택합니다. 자세한 내용은 AWS Device Farm의 테스트 환경 단원을 참조하십시오.

  9. 사용자 지정 환경을 선택한 경우 계측 테스트용으로 채워진 기본 테스트 사양을 사용하거나 자체 테스트 사양 업로드를 선택하여 자체 테스트 사양을 제공할 수 있습니다.

  10. 디바이스 선택에서 디바이스 선택 방법을 선택합니다. 디바이스 풀 사용을 선택하여 큐레이션된 디바이스 컬렉션 또는 생성한 사용자 지정 디바이스 풀 중에서 선택합니다. 수동으로 디바이스 선택을 선택하여 테스트를 실행할 개별 디바이스를 선택합니다. 디바이스 호환성 섹션에는 선택한 풀에서 앱과 호환되는 디바이스 수가 표시됩니다. 자세한 내용은 AWS Device Farm에서 디바이스 지원 단원을 참조하십시오.

  11. 실행 수준 속성을 구성하려면 실행 설정 섹션을 업데이트합니다. 여기에서 다음을 수행할 수 있습니다.

    1. (선택 사항) 실행이 완료된 후 Device Farm이 테스트 보고서를 생성하도록 하려면 테스트 보고서 생성을 선택합니다. 이 옵션은 사용자 지정 테스트 환경에서만 사용할 수 있습니다. Device Farm은 테스트 사양 출력에 포함된 계측 결과에서 보고서를 생성합니다. 자체 테스트 사양을 업로드하는 경우 계측 결과를 테스트 사양 출력에 출력해야 합니다.

  12. 나머지 단계를 완료한 다음 실행을 시작합니다.

테스트 보고서 보기(콘솔)

  1. https://console.aws.amazon.com/devicefarm에서 Device Farm 콘솔에 로그인하세요.

  2. 탐색 창에서 모바일 디바이스 테스트를 선택하고 프로젝트를 선택하세요.

  3. 검사할 실행이 포함된 프로젝트를 선택합니다.

  4. 완료된 실행을 선택하여 세부 정보를 엽니다.

  5. 완료된 작업 중 하나를 선택하여 해당 디바이스의 결과를 엽니다.

테스트 인사이트가 활성화된 경우

작업 결과에는 테스트 보고서 탭이 포함됩니다. 테스트별 분석을 보려면 선택합니다. 다음 스크린샷은 모든 열이 표시된 테스트 보고서 탭을 보여줍니다.

완료된 계측 작업에 대한 테스트 보고서 탭의 첫 번째 열 세트입니다.
완료된 계측 작업에 대한 테스트 보고서 탭의 나머지 열입니다.

탭에는 각 테스트에 대한 다음 필드가 표시됩니다.

testName

테스트 방법의 이름입니다.

testClass

테스트 클래스의 이름입니다.

result

테스트에 대한 Device Farm 결과입니다.

frameworkResult

계측 프레임워크가 보고한 결과입니다. Device Farm은이 값을 정규화된 result 필드에 매핑합니다.

durationSeconds

초 단위의 테스트 기간입니다.

startTimestamp

테스트가 시작된 시간입니다.

endTimestamp

테스트가 종료된 시간입니다.

current

실행 시 테스트의 위치입니다.

numTests

실행 중인 총 테스트 수입니다.

statusCode

테스트가 보고한 계측 상태 코드입니다.

stream

사람이 읽을 수 있는 테스트용 계측 출력 버전입니다.

stackTrace

실패한 테스트의 경우 실패의 스택 트레이스입니다.

전체 테스트 보고서를 JSON 파일로 다운로드하려면 작업 세부 정보 상단에서 전체 요약 다운로드를 선택합니다.

표시할 열을 선택하려면 기어 아이콘을 선택합니다. 설정에서 표시할 열을 선택하고 클래스별 그룹화를 켜거나 끌 수 있습니다. 클래스별 그룹화는 기본적으로 켜지며, 테스트 클래스별로 테스트를 그룹화합니다. 다음 스크린샷과 같이 모든 테스트의 평면 목록을 보려면 끕니다.

클래스별 그룹화가 꺼져 있는 테스트 보고서 탭에는 테스트의 플랫 목록이 표시됩니다.

테스트 인사이트가 활성화되지 않은 경우

작업 결과에는 표준 테스트 출력 및 아티팩트가 표시되지만 테스트 보고서 탭은 표시되지 않습니다. 테스트 보고서를 생성하려면 테스트 인사이트가 활성화된 새 실행을 예약합니다.

테스트 인사이트가 활성화되지 않은 완료된 계측 작업에 대한 작업 결과입니다.

테스트 보고서 보기(AWS CLI)

를 실행get-job하고 작업 ARN을 지정합니다.

aws devicefarm get-job --arn arn: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