

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

# IDT 테스트 결과 및 로그 검토
<a name="idt-review-results-logs"></a>

이 섹션에서는 IDT가 콘솔 로그와 테스트 보고서를 생성하는 형식을 설명합니다.

## 콘솔 메시지 형식
<a name="idt-console-format"></a>

AWS IoT Device Tester 는 테스트 제품군을 시작할 때 콘솔에 메시지를 인쇄하기 위해 표준 형식을 사용합니다. 다음 발췌문은 IDT에서 생성한 콘솔 메시지의 한 가지 예를 보여줍니다.

```
[INFO] [2000-01-02 03:04:05]: Using suite: MyTestSuite_1.0.0 executionId=9a52f362-1227-11eb-86c9-8c8590419f30
```

대부분의 콘솔 메시지는 다음 필드로 구성되어 있습니다.

**`time`**  
로깅된 이벤트의 전체 ISO 8601 타임스탬프.

**`level`**  
로깅된 이벤트의 메시지 수준. 일반적으로 로깅된 메시지 수준은 `info`, `warn` 또는 `error`중 하나입니다. IDT는 예상 이벤트가 발생하여 이벤트가 일찍 종료되는 경우 `fatal` 또는 `panic` 메시지를 표시합니다.

**`msg`**  
로깅된 메시지.

**`executionId`**  
현재 IDT 프로세스의 고유 ID 문자열입니다. 이 ID는 개별 IDT 실행을 구분하는 데 사용됩니다.

테스트 제품군에서 생성된 콘솔 메시지는 테스트 대상 디바이스와 테스트 제품군, 테스트 그룹 및 IDT가 실행하는 테스트 케이스에 대한 추가 정보를 제공합니다. 다음 발췌문은 테스트 제품군에서 생성한 콘솔 메시지의 한 가지 예를 보여줍니다:

```
[INFO] [2000-01-02 03:04:05]: Hello world! suiteId=MyTestSuitegroupId=myTestGroup testCaseId=myTestCase deviceId=my-deviceexecutionId=9a52f362-1227-11eb-86c9-8c8590419f30
```

콘솔 메시지의 테스트 제품군 관련 부분에는 다음 필드가 포함됩니다.

**`suiteId`**  
현재 실행 중인 테스트 제품군의 이름.

**`groupId`**  
현재 실행 중인 테스트 그룹의 ID.

**`testCaseId`**  
현재 실행 중인 테스트 케이스의 ID.

**`deviceId`**  
현재 테스트 사례에서 사용 중인 테스트 대상 디바이스의 ID입니다.

테스트 요약에는 테스트 제품군, 실행된 각 그룹의 테스트 결과, 생성된 로그 및 보고서 파일의 위치에 대한 정보가 포함됩니다. 다음 예제에서는 테스트 요약 메시지를 보여줍니다.

```
========== Test Summary ==========
Execution Time:     5m00s
Tests Completed:    4
Tests Passed:       3
Tests Failed:       1
Tests Skipped:      0
----------------------------------
Test Groups:
    GroupA:         PASSED
    GroupB:         FAILED
----------------------------------
Failed Tests:
    Group Name: GroupB
        Test Name: TestB1
            Reason: Something bad happened
----------------------------------
Path to AWS IoT Device Tester Report: /path/to/awsiotdevicetester_report.xml
Path to Test Execution Logs: /path/to/logs
Path to Aggregated JUnit Report: /path/to/MyTestSuite_Report.xml
```

## AWS IoT Device Tester 스키마 보고
<a name="idt-report"></a>

 `awsiotdevicetester_report.xml`은 다음 정보가 포함된 서명된 보고서입니다.
+ IDT 버전
+ 테스트 제품군 버전입니다.
+ 보고서에 서명하는 데 사용된 보고서 서명 및 키.
+ `device.json` 파일에 지정된 SKU 및 디바이스 풀 이름.
+ 테스트된 제품 버전 및 디바이스 특성.
+ 테스트 결과의 집계 요약 이 정보는 `suite-name_report.xml` 파일에 포함된 정보와 동일합니다.

```
<apnreport>
    <awsiotdevicetesterversion>idt-version</awsiotdevicetesterversion>
    <testsuiteversion>test-suite-version</testsuiteversion>
    <signature>signature</signature>
    <keyname>keyname</keyname>
    <session>
        <testsession>execution-id</testsession>
        <starttime>start-time</starttime>
        <endtime>end-time</endtime>
    </session>
    <awsproduct>
        <name>product-name</name>
        <version>product-version</version>
        <features>
            <feature name="<feature-name>" value="supported | not-supported | <feature-value>" type="optional | required"/>
        </features>
    </awsproduct>
    <device>
        <sku>device-sku</sku>
        <name>device-name</name>
        <features>
            <feature name="<feature-name>" value="<feature-value>"/>
        </features>
        <executionMethod>ssh | uart | docker</executionMethod>
    </device>
    <devenvironment>
        <os name="<os-name>"/>
    </devenvironment>
    <report>
        <suite-name-report-contents>
    </report>
</apnreport>
```

`awsiotdevicetester_report.xml` 파일에는 테스트하는 제품에 대한 정보와 테스트 제품군을 실행한 후 확인된 제품 기능에 대한 정보를 포함하는 `<awsproduct>` 태그가 포함되어 있습니다.

**`<awsproduct>` 태그에 사용되는 속성**

**`name`**  
테스트하는 제품의 이름입니다.

**`version`**  
테스트하는 제품의 버전입니다.

**`features`**  
확인된 기능입니다. 필수로 `required` 표시된 특성은 테스트 제품군에서 디바이스를 검증하는 데 필요합니다. 다음 코드 조각은 `awsiotdevicetester_report.xml` 파일에 이 정보가 나타나는 방식을 보여 줍니다.  

```
<feature name="ssh" value="supported" type="required"></feature>
```
`optional` 표시된 특성은 검증에 필요하지 않습니다. 다음 코드 조각은 선택적 기능을 보여 줍니다.  

```
<feature name="hsi" value="supported" type="optional"></feature>
<feature name="mqtt" value="not-supported" type="optional"></feature>
```

## 테스트 제품군 보고서 스키마
<a name="suite-report"></a>

`suite-name_Result.xml` 보고서는 [JUnit XML 형식](https://llg.cubic.org/docs/junit/)입니다. [Jenkins](https://jenkins.io/), [Bamboo](https://www.atlassian.com/software/bamboo) 등과 같은 지속적 통합 및 배포 플랫폼에 이 보고서를 통합할 수 있습니다. 보고서는 테스트 결과의 집계 요약을 포함합니다.

```
<testsuites name="<suite-name> results" time="<run-duration>" tests="<number-of-test>" failures="<number-of-tests>" skipped="<number-of-tests>" errors="<number-of-tests>" disabled="0">
    <testsuite name="<test-group-id>" package="" tests="<number-of-tests>" failures="<number-of-tests>" skipped="<number-of-tests>" errors="<number-of-tests>" disabled="0">
        <!--success-->
        <testcase classname="<classname>" name="<name>" time="<run-duration>"/>
        <!--failure-->
        <testcase classname="<classname>" name="<name>" time="<run-duration>">
            <failure type="<failure-type>">
                reason
            </failure>
        </testcase>
        <!--skipped-->
        <testcase classname="<classname>" name="<name>" time="<run-duration>">
            <skipped>
                reason
            </skipped>
        </testcase>
        <!--error-->
        <testcase classname="<classname>" name="<name>" time="<run-duration>">
            <error>
                reason
            </error>
        </testcase>
    </testsuite>
</testsuites>
```

`awsiotdevicetester_report.xml` 또는 `suite-name_report.xml`의 보고서 섹션에는 실행된 테스트 및 결과가 나열됩니다.

첫 번째 XML 태그 `<testsuites>`에는 테스트 실행의 요약이 포함됩니다. 예제:

```
<testsuites name="MyTestSuite results" time="2299" tests="28" failures="0" errors="0" disabled="0">
```

**`<testsuites>` 태그에 사용되는 속성**

**`name`**  
테스트 제품군의 이름입니다.

**`time`**  
테스트 제품군를 실행하는 데 걸린 시간(초).

**`tests`**  
실행된 테스트의 수입니다.

**`failures`**  
실행되었지만 통과하지 못한 테스트의 수입니다.

**`errors`**  
IDT에서 실행하지 못한 테스트의 수입니다.

**`disabled`**  
이 속성은 사용되지 않으므로 무시해도 좋습니다.

테스트 실패 또는 오류의 경우 `<testsuites>` XML 태그를 검토하여 실패한 테스트를 식별할 수 있습니다. `<testsuites>` 태그 내부의 `<testsuite>` XML 태그는 테스트 그룹에 대한 테스트 결과 요약을 보여 줍니다. 예제:

```
<testsuite name="combination" package="" tests="1" failures="0" time="161" disabled="0" errors="0" skipped="0">
```

형식은 `<testsuites>` 태그와 비슷하지만, 사용되지 않고 무시할 수 있는 `skipped` 속성이 있습니다. 각 `<testsuite>` XML 태그 내부에는 테스트 그룹에 실행된 각 테스트에 대한 `<testcase>` 태그가 있습니다. 예제:

```
<testcase classname="Security Test" name="IP Change Tests" attempts="1"></testcase>
```

**`<testcase>` 태그에 사용되는 속성**

**`name`**  
테스트의 이름입니다.

**`attempts`**  
IDT에서 테스트 사례를 실행한 횟수입니다.

테스트가 실패하거나 오류가 발생하는 경우 문제 해결에 대한 정보와 함께 `<failure>` 또는 `<error>` 태그가 `<testcase>` 태그에 추가됩니다. 예제:

```
<testcase classname="mcu.Full_MQTT" name="MQTT_TestCase" attempts="1">
	<failure type="Failure">Reason for the test failure</failure>
	<error>Reason for the test execution error</error>
</testcase>
```