

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

# AWS Device Farm의 계측 테스트 문제 해결
<a name="troubleshooting-instrumentation-tests"></a>

다음 주제에서는 계측 테스트를 업로드하는 동안 발생하는 오류 메시지를 나열하고 각 오류를 해결하기 위한 해결 방법을 권장합니다.

**참고**  
AWS Device Farm에서 계측 테스트를 사용할 때 고려해야 할 중요한 사항은 [Android 및 AWS Device Farm용 계측](test-types-android-instrumentation.md) 섹션을 참조하세요.

## 업로드 오류
<a name="troubleshooting-instrumentation-tests-upload"></a>

계측 테스트를 업로드할 때 다음과 같은 오류가 발생할 수 있습니다.

### INSTRUMENTATION\_TEST\_PACKAGE\_UNZIP\_FAILED
<a name="INSTRUMENTATION_TEST_PACKAGE_UNZIP_FAILED"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

```
Warning: We could not open your test APK file. Please verify that the file is valid and
    try again.
```

오류 없이 테스트 패키지의 압축을 풀 수 있는지 확인하세요. 다음 예제에서 패키지 이름은 **app-debug-androidTest-unaligned.apk**입니다.

1. 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

   ```
   $ unzip app-debug-androidTest-unaligned.apk
   ```

1. 패키지 압축을 성공적으로 푼 후에는 다음 명령을 실행하여 작업 디렉터리 트리 구조를 찾을 수 있습니다.

   ```
   $ tree .
   ```

   올바른 계측 테스트 패키지는 다음과 같은 출력이 생성됩니다.

   ```
   .
   |-- AndroidManifest.xml
   |--  classes.dex
   |-- resources.arsc
   |-- LICENSE-junit.txt
   |-- junit (directory)
   `-- META-INF (directory)
   ```

   자세한 내용은 [Android 및 AWS Device Farm용 계측](test-types-android-instrumentation.md) 단원을 참조하세요.

### INSTRUMENTATION\_TEST\_PACKAGE\_AAPT\_DEBUG\_BADGING\_FAILED
<a name="INSTRUMENTATION_TEST_PACKAGE_AAPT_DEBUG_BADGING_FAILED"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

```
We could not extract information about your test package. Please verify that the
      test package is valid by running the command "aapt debug badging <path to your test
      package>", and try again after the command does not print any error.
```

업로드 검증 프로세스 중에 Device Farm은 `aapt debug badging <path to your package>` 명령 출력에서 정보를 구문 분석합니다.

계측 테스트 패키지에서 이 명령을 성공적으로 실행할 수 있는지 확인하세요.

다음 예제에서 패키지 이름은 **app-debug-androidTest-unaligned.apk**입니다.
+ 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

  ```
  $ aapt debug badging app-debug-androidTest-unaligned.apk
  ```

  올바른 계측 테스트 패키지는 다음과 같은 출력이 생성됩니다.

  ```
  package: name='com.amazon.aws.adf.android.referenceapp.test' versionCode='' versionName='' platformBuildVersionName='5.1.1-1819727'
  sdkVersion:'9'
  targetSdkVersion:'22'
  application-label:'Test-api'
  application: label='Test-api' icon=''
  application-debuggable
  uses-library:'android.test.runner'
  feature-group: label=''
  uses-feature: name='android.hardware.touchscreen'
  uses-implied-feature: name='android.hardware.touchscreen' reason='default feature for all apps'
  supports-screens: 'small' 'normal' 'large' 'xlarge'
  supports-any-density: 'true'
  locales: '--_--'
  densities: '160'
  ```

  자세한 내용은 [Android 및 AWS Device Farm용 계측](test-types-android-instrumentation.md) 단원을 참조하세요.

### INSTRUMENTATION\_TEST\_PACKAGE\_INSTRUMENTATION\_RUNNER\_VALUE\_MISSING
<a name="INSTRUMENTATION_TEST_PACKAGE_INSTRUMENTATION_RUNNER_VALUE_MISSING"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

```
We could not find the instrumentation runner value in the AndroidManifest.xml.
      Please verify the test package is valid by running the command "aapt dump xmltree <path to
      your test package> AndroidManifest.xml", and try again after finding the instrumentation
      runner value behind the keyword "instrumentation."
```

업로드 검증 프로세스 중에 Device Farm은 패키지 내에 포함된 XML 파일의 XML 파스 트리에서 계측 러너 값을 파싱합니다. 다음 `aapt dump xmltree <path to your package> AndroidManifest.xml` 명령을 사용할 수 있습니다.

계측 테스트 패키지에서 이 명령을 실행하여 계측 값을 성공적으로 찾을 수 있는지 확인하세요.

다음 예제에서 패키지 이름은 **app-debug-androidTest-unaligned.apk**입니다.
+ 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

  ```
  $ aapt dump xmltree app-debug-androidTest-unaligned.apk AndroidManifest.xml | grep -A5 "instrumentation"
  ```

  올바른 계측 테스트 패키지는 다음과 같은 출력이 생성됩니다.

  ```
  E: instrumentation (line=9)
        A: android:label(0x01010001)="Tests for com.amazon.aws.adf.android.referenceapp" (Raw: "Tests for com.amazon.aws.adf.android.referenceapp")
        A: android:name(0x01010003)="{{android.support.test.runner.AndroidJUnitRunner}}" (Raw: "android.support.test.runner.AndroidJUnitRunner")
        A: android:targetPackage(0x01010021)="com.amazon.aws.adf.android.referenceapp" (Raw: "com.amazon.aws.adf.android.referenceapp")
        A: android:handleProfiling(0x01010022)=(type 0x12)0x0
        A: android:functionalTest(0x01010023)=(type 0x12)0x0
  ```

  자세한 내용은 [Android 및 AWS Device Farm용 계측](test-types-android-instrumentation.md) 단원을 참조하세요.

### INSTRUMENTATION\_TEST\_PACKAGE\_AAPT\_DUMP\_XMLTREE\_FAILED
<a name="INSTRUMENTATION_TEST_PACKAGE_AAPT_DUMP_XMLTREE_FAILED"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

```
We could not find the valid AndroidManifest.xml in your test package. Please
      verify that the test package is valid by running the command "aapt dump xmltree <path to
      your test package> AndroidManifest.xml", and try again after the command does not print any
      error.
```

업로드 검증 프로세스 중에 Device Farm은 다음 명령 `aapt dump xmltree <path to your package> AndroidManifest.xml`을 사용하여 패키지에 포함된 XML 파일의 XML 분석 트리에서 정보를 구문 분석합니다.

계측 테스트 패키지에서 이 명령을 성공적으로 실행할 수 있는지 확인하세요.

다음 예제에서 패키지 이름은 **app-debug-androidTest-unaligned.apk**입니다.
+ 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

  ```
  $ aapt dump xmltree app-debug-androidTest-unaligned.apk AndroidManifest.xml
  ```

  올바른 계측 테스트 패키지는 다음과 같은 출력이 생성됩니다.

  ```
  N: android=http://schemas.android.com/apk/res/android
    E: manifest (line=2)
      A: package="com.amazon.aws.adf.android.referenceapp.test" (Raw: "com.amazon.aws.adf.android.referenceapp.test")
      A: platformBuildVersionCode=(type 0x10)0x16 (Raw: "22")
      A: platformBuildVersionName="5.1.1-1819727" (Raw: "5.1.1-1819727")
      E: uses-sdk (line=5)
        A: android:minSdkVersion(0x0101020c)=(type 0x10)0x9
        A: android:targetSdkVersion(0x01010270)=(type 0x10)0x16
      E: instrumentation (line=9)
        A: android:label(0x01010001)="Tests for com.amazon.aws.adf.android.referenceapp" (Raw: "Tests for com.amazon.aws.adf.android.referenceapp")
        A: android:name(0x01010003)="android.support.test.runner.AndroidJUnitRunner" (Raw: "android.support.test.runner.AndroidJUnitRunner")
        A: android:targetPackage(0x01010021)="com.amazon.aws.adf.android.referenceapp" (Raw: "com.amazon.aws.adf.android.referenceapp")
        A: android:handleProfiling(0x01010022)=(type 0x12)0x0
        A: android:functionalTest(0x01010023)=(type 0x12)0x0
      E: application (line=16)
        A: android:label(0x01010001)=@0x7f020000
        A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
        E: uses-library (line=17)
          A: android:name(0x01010003)="android.test.runner" (Raw: "android.test.runner")
  ```

  자세한 내용은 [Android 및 AWS Device Farm용 계측](test-types-android-instrumentation.md) 단원을 참조하세요.

### INSTRUMENTATION\_TEST\_PACKAGE\_TEST\_PACKAGE\_NAME\_VALUE\_MISSING
<a name="INSTRUMENTATION_TEST_PACKAGE_TEST_PACKAGE_NAME_VALUE_MISSING"></a>

다음 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.

```
We could not find the package name in your test package. Please verify that the
      test package is valid by running the command "aapt debug badging <path to your test
      package>", and try again after finding the package name value behind the keyword "package:
      name."
```

업로드 검증 프로세스 중에 Device Farm은 다음 명령 `aapt debug badging <path to your package>`의 출력에서 패키지 이름 값을 구문 분석합니다.

인스트루먼트 테스트 패키지에서 이 명령을 실행하고 패키지 이름 값을 성공적으로 찾을 수 있는지 확인하세요.

다음 예제에서 패키지 이름은 **app-debug-androidTest-unaligned.apk**입니다.
+ 작업 디렉터리에 테스트 패키지를 복사한 후 다음 명령을 실행하세요.

  ```
  $ aapt debug badging app-debug-androidTest-unaligned.apk | grep "package: name="
  ```

  올바른 계측 테스트 패키지는 다음과 같은 출력이 생성됩니다.

  ```
  package: name='com.amazon.aws.adf.android.referenceapp.test' versionCode='' versionName='' platformBuildVersionName='5.1.1-1819727'
  ```

  자세한 내용은 [Android 및 AWS Device Farm용 계측](test-types-android-instrumentation.md) 단원을 참조하십시오.

## 인사이트 테스트
<a name="troubleshooting-instrumentation-tests-insights"></a>

인사이트를 테스트하도록 옵트인하면 Device Farm은 실행 및 그 아래의 각 작업에 대한 요약 보고서를 생성합니다. 서비스가 보고서를 생성할 수 없는 경우 인사이트 보고서 상태는 `SKIPPED` 또는 이고 보고서 메시지`ERRORED`에 이유가 설명되어 있습니다. 계측 테스트에 대한 인사이트를 생성할 때 다음 메시지가 발생할 수 있습니다.

### 작업이 완료될 때까지 실행되지 않았습니다.
<a name="ti-instrumentation-job-not-complete"></a>

`Unable to generate test insights because the job was {{status}}.`

작업이 성공하지 못한 상태({{상태}}가 `STOPPED`, `ERRORED`또는 `SKIPPED`)로 종료되었으므로 요약할 결과가 없었습니다. 실패한 상태로 끝나는 실행은 여전히 인사이트를 수신합니다.

이 문제를 해결하려면 작업이 완료될 때까지 실행되지 않은 이유를 조사합니다. 대부분의 경우 작업 자체의 `message` 필드는 작업이 완료되지 않은 이유를 설명할 수 있습니다.

### 결과에 테스트 사례가 포함되어 있지 않음
<a name="ti-instrumentation-no-test-cases"></a>

`Test insights could not be generated. The test spec output file was parsed successfully but contained no test cases.`

결과 아티팩트가 성공적으로 구문 분석되었지만 테스트 사례가 0개 포함되어 있습니다.

이 문제를 해결하려면 테스트 제품군에 하나 이상의 테스트 사례가 포함되어 있고 결과가 아래에 올바르게 저장되어 있는지 확인합니다`$DEVICEFARM_LOG_DIR`.

### 테스트 출력이 지원되는 최대 크기를 초과합니다.
<a name="ti-instrumentation-output-too-large"></a>

`Unable to generate test insights: test output "test spec output" exceeds the maximum supported size of 1GB.`

테스트 사양 출력이 1GB보다 큽니다.

이 문제를 해결하려면 테스트 사양 출력에서 많은 수의 줄을 생성하는 명령을 조사합니다. 그런 다음 제거하거나 수정합니다.

### 테스트 사양 출력에서 계측 출력을 찾을 수 없음
<a name="ti-instrumentation-no-instrumentation-output"></a>

`Unable to generate test insights. No instrumentation test output was found in the test spec output file.`

테스트 사양 출력 파일이 있지만 계측 출력 줄이 포함되어 있지 않습니다.

이 문제를 해결하려면 프레임워크가 테스트 사양 파일의 `stdout`에 계측 출력을 내보내야 합니다.