

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# IDT テストの結果とログを確認する
<a name="idt-review-results-logs"></a>

このセクションでは、IDT がコンソールログとテストレポートを生成する形式について説明します。

## コンソールメッセージの形式
<a name="idt-console-format"></a>

AWS IoT Device Tester は、テストスイートを起動するときに、標準形式を使用してコンソールにメッセージを出力します。以下の抜粋は、IDT によって生成されるコンソールメッセージの例を示しています。

```
time="2000-01-02T03:04:05-07:00" level=info msg=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 が実行するテストケースに関する追加情報を提供します。次の抜粋は、テストスイートから生成されたコンソールメッセージの例を示しています。

```
time="2000-01-02T03:04:05-07:00" level=info msg=Hello world! suiteId=MyTestSuite
groupId=myTestGroup testCaseId=myTestCase deviceId=my-device
executionId=9a52f362-1227-11eb-86c9-8c8590419f30
```

コンソールメッセージのテストスイート固有の部分には、次のフィールドが含まれています。

`suiteId`  
現在実行中のテストスイートの名前。

`groupId`  
現在実行中のテストグループの ID。

`testCaseId`  
現在実行中のテストケースの ID。

`deviceId`  
現在のテストケースが使用しているテスト対象デバイスの ID。

IDT のテスト実行完了時にテストサマリーをコンソールに出力するには、テストオーケストレーターに [`Report` ステート](idt-state-machine.md#state-report)を含める必要があります。テストサマリーには、テストスイート、実行された各グループのテスト結果、生成されたログファイルとレポートファイルの場所に関する情報が含まれています。次の例は、テストサマリーメッセージを示しています。

```
========== 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 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) などのように継続的な統合 (CI) と継続的なデプロイ (CD) のプラットフォームに統合することができます。このレポートには、テスト結果の概要の集計が含まれています。

```
<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 タグを確認することで、障害の生じたテストを特定できます。`<testsuite>` タグ内の `<testsuites>` 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>
```