本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
查看 IDT 測試結果和日誌
本節介紹 IDT 生成控制台日誌和測試報告的格式。
控制台訊息格式
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 完成測試運行時將測試摘要打印到控制台,您必須包含Reportstate在您的測試編輯器中。測試摘要包含有關測試套件的信息、所運行的每個組的測試結果以及生成的日誌和報告文件的位置。測試摘要訊息如下列範例所示。
========== 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報告架構
awsiotdevicetester_report.xml
是包含下列資訊的簽名報告:
-
IDT 版本。
-
測試套件版本。
-
報告簽名和用於簽名報告的密鑰。
-
指定的設備 SKU 和
device.json
file. -
已測試的產品版本和設備功能。
-
測試結果的彙總摘要。此信息與
file.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>
測試套件報告架構
報告採用 JUnit XML 格式suite-name
_Result.xml
<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>