查看IDT测试结果和日志 - 免费 RTOS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查看IDT测试结果和日志

本节介绍IDT生成控制台日志和测试报告的格式。

控制台消息格式

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

所记录事件的消息级别。通常,记录的消息级别为 infowarnerror。IDT如果遇到导致其提前退出的预期事件,则panic发出fatal或消息。

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 报告架构

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>

测试套件报告架构

suite-name_Result.xml报告是JUnitXML格式化的。您可以将它集成到持续集成和开发平台,例如 JenkinsBamboo 等。报告包含测试结果的摘要汇总。

<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.xmlsuite-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>XML标签内的<testsuites>标签显示测试组的测试结果摘要。例如:

<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执行测试用例的次数。

当测试失败或出现错误时,将会在 <testcase> 标签中添加包含用于故障排除的信息的 <failure><error> 标签。例如:

<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>