AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用适用于 AWS IoT Greengrass 的 AWS IoT Device Tester。

您可以使用适用于 AWS IoT Greengrass 的 AWS IoT Device Tester (IDT) 来验证 AWS IoT Greengrass 核心软件是否能在您的硬件上运行并与 AWS IoT 云进行通信。它还使用 AWS IoT 核心执行端到端测试。例如,它验证您的设备是否能够发送和接收 MQTT 消息并正确处理它们。适用于 AWS IoT Greengrass 的 IDT 会生成测试报告,可将这些报告提交到 AWS IoT 以向 AWS Partner Device Catalog 添加硬件。有关更多信息,请参阅 AWS 设备资格认证计划

适用于 AWS IoT Greengrass 的 IDT 在连接到要测试的设备的主机(Windows、macOS 或 Linux)上运行。它运行测试并聚合结果。它还提供命令行界面来管理测试过程。

除了测试设备之外,适用于 AWS IoT Greengrass 的 IDT 还创建资源(例如,AWS IoT 事物、AWS IoT Greengrass 组、Lambda 函数等)来以促进资格认证过程。

为了创建这些资源,适用于 AWS IoT Greengrass 的 IDT 使用在 config.json 中配置的 AWS 凭证来代表您发出 API 调用。这些资源将在测试过程的不同时间进行预配置。

当您在主机上运行适用于 AWS IoT Greengrass 的 IDT 时,它将执行以下步骤:

  1. 加载和验证您的设备和凭证配置。

  2. 使用所需的本地资源和云资源执行选定测试。

  3. 清除本地资源和云资源。

  4. 生成测试报告,指明您的主板是否已通过资格认证所需的测试。

适用于 AWS IoT Greengrass 的 IDT 使用测试套件 和测试组的概念来组织测试。

测试套件是所有测试组的集合,这些测试组用于验证设备是否与 AWS IoT Greengrass 兼容。

测试组包含所有与正在测试的功能相关的单独测试。有关更多信息,请参阅 测试组描述

了解结果和日志

本节介绍如何查看和解释 IDT 结果报告和日志。

查看结果

在运行时,IDT 会将错误写入控制台、日志文件和测试报告中。IDT 在完成资格测试套件后,会生成两个测试报告。可在 <devicetester-extract-location> /results/<execution-id>/ 中找到这些报告。两个报告都捕获资格测试套件执行的结果。

awsiotdevicetester_report.xml 是您提交给 AWS 的资格测试报告,用于在 AWS 合作伙伴设备目录中列出您的设备。该报告包含以下元素:

  • IDT 版本。

  • 所测试的 AWS IoT Greengrass 版本。

  • device.json 文件中指定的 SKU 和设备池名称。

  • device.json 文件中指定的设备池的功能。

  • 测试结果的摘要汇总。

  • 按照基于设备功能(例如,本地资源访问、影子、MQTT 等)测试的库细分的测试结果。

GGQ_Result.xml 报告采用 JUnit XML 格式。您可以将它集成到持续集成/开发平台,例如 JenkinsBamboo 等。该报告包含以下元素:

  • 测试结果的摘要汇总。

  • 按照已测试的 AWS IoT Greengrass 功能细分的测试结果。

解释 AWS IoT Device Tester 结果

awsiotdevicetester_report.xmlawsiotdevicetester_report.xml 中的报告部分列出了运行的测试以及结果。

第一个 XML 标签 <testsuites> 包含测试执行情况的摘要。例如:

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

<testsuites> 标签中使用的属性

name

测试套件的名称。

time

运行资格套件所用的时间(以秒为单位)。

tests

执行的测试数。

failures

已运行但未通过的测试数。

errors

IDT 无法执行的测试数。

disabled

此属性未使用,可以忽略。

awsiotdevicetester_report.xml 文件包含一个 <awsproduct> 标签,其中包含有关正测试的产品以及在运行测试套件后验证的产品功能的信息。

<awsproduct> 标签中使用的属性

name

所测试的产品的名称。

version

所测试的产品的版本。

features

验证的功能。标记为 required 的功能需要提交您的主板信息以供资格审核。以下代码段演示了此信息在 awsiotdevicetester_report.xml 文件中的显示方式。

<feature name="aws-iot-greengrass-no-container" value="supported" type="required">< /feature>

标记为 optional 的功能不是资格认证所必需的。以下代码段显示了可选功能。

<feature name="aws-iot-greengrass-container" value="supported" type="optional"></feature>
 <feature name="aws-iot-greengrass-hsi" value="not-supported" type="optional"></feature>

如果没有针对所需功能的测试失败或错误,则设备满足运行 AWS IoT Greengrass 的技术要求并可以与 AWS IoT 服务互操作。如果您想要在 AWS 合作伙伴设备目录中列出您的设备,则可以使用此报告作为资格证明。

如果出现测试失败或错误,则可以通过检查 <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 Combination (IPD + DCM) Test Context" name="Security Combination IP Change Tests sec4_test_1: Should rotate server cert when IPD disabled and following changes are made:Add CIS conn info and Add another CIS conn info" attempts="1"></testcase>>

<testcase> 标签中使用的属性

name

测试的名称。

attempts

IDT 执行测试用例的次数。

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

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

查看日志

IDT 从测试执行生成的日志位于 <devicetester-extract-location>/results/<execution-id>/logs 中。它会生成两组日志:

test_manager.log

从 AWS IoT Device Tester 的 Test Manager 组件生成的日志(例如,与配置、测试序列和报告生成相关的日志)。

<test_case_id>.log (for example, ota.log)

测试组的日志,包括来自所测试设备的日志。当测试失败时,将创建一个 tar.gz 文件,其中包含关于该测试的所测试设备日志(例如,ota_prod_test_1_ggc_logs.tar.gz)。

有关更多信息,请参阅 适用于 AWS IoT Greengrass 的 IDT 故障排除

本页内容: