调试和运行自定义测试套件 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 Amazon IoT Greengrass V1 维护策略。在此日期之后,将 Amazon IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 Amazon IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 Amazon IoT Greengrass Version 2,这样可以添加重要的新功能支持其他平台

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

调试和运行自定义测试套件

设置所需的配置后,IDT 就可以运行您的测试套件了。完整测试套件的运行时取决于硬件和测试套件的组成。作为参考,在 Raspberry Pi 3B 上完成整套 Amazon IoT Greengrass 资格测试大约需要 30 分钟。

在编写测试套件时,您可以使用 IDT 在调试模式下运行测试套件,以便在运行代码之前检查代码或将其提供给测试运行者。

在调试模式下运行 IDT

由于测试套件依赖于 IDT 来与设备交互、提供上下文和接收结果,因此如果没有任何 IDT 交互,您就无法在 IDE 中简单地调试测试套件。为此,IDT CLI 提供了 debug-test-suite 命令,供您用于在调试模式下运行 IDT。运行以下命令查看以下 debug-test-suite 的可用选项:

devicetester_[linux | mac | win_x86-64] debug-test-suite -h

当您在调试模式下运行 IDT 时,IDT 实际上并不启动测试套件或运行状态机;相反,它会与您的 IDE 交互以响应从 IDE 中运行的测试套件所发出的请求,并将日志打印到控制台。IDT 不会超时,而会等待退出,直到手动中断。在调试模式下,IDT 也不运行状态机,并且不会生成任何报告文件。要调试测试套件,您必须使用 IDE 来提供 IDT 通常从配置 JSON 文件中获得的一些信息。务必提供以下信息:

  • 每个测试的环境变量和参数。IDT 不会从 test.jsonsuite.json 中读取此信息。

  • 用于选择资源设备的参数。IDT 不会从 test.json 中读取此信息。

要调试您的测试套件,请完成以下步骤:

  1. 创建运行测试套件所需的设置配置文件。例如,如果您的测试套件需要 device.jsonresource.jsonuser data.json,请确保根据需要来配置所有测试套件。

  2. 运行以下命令将 IDT 置于调试模式,然后选择运行测试需要的所有设备。

    devicetester_[linux | mac | win_x86-64] debug-test-suite [options]

    运行此命令后,IDT 会等待来自测试套件的请求,然后响应这些请求。IDT 还会生成 IDT 客户端软件开发工具包案例处理所需的环境变量。

  3. 在您的 IDE 中,使用 rundebug 配置来执行以下操作:

    1. 设置 IDT 生成的环境变量的值。

    2. 设置您在 test.jsonsuite.json 文件中指定的任何环境变量或参数的值。

    3. 根据需要设置断点。

  4. 在 IDE 中运行测试套件。

    您可以根据需要多次调试和重新运行测试套件。IDT 在调试模式下不会超时。

  5. 完成调试后,请中断 IDT 以退出调试模式。

用于运行测试的 IDT CLI 命令

以下小节介绍了 IDT CLI 命令。

IDT v4.0.0
help

列出有关指定命令的信息。

list-groups

列出给定测试套件中的组。

list-suites

列出可用的测试套件。

list-supported-products

列出您的 IDT 版本支持的产品(本例中为 Amazon IoT Greengrass 版本),以及当前 IDT 版本适用的 Amazon IoT Greengrass 资格测试套件版本。

list-test-cases

列出给定测试组中的测试用例。支持以下选项:

  • group-id。要搜索的测试组。此选项是必需的,必须指定单个组。

run-suite

对某个设备池运行一组测试。以下是一些常用的选项:

  • suite-id。要运行的测试套件版本。如果未指定,IDT 将使用 tests 文件夹中的最新版本。

  • group-id。要以逗号分隔的列表形式运行的测试组。如果未指定,IDT 将运行测试套件中的所有测试组。

  • test-id。要以逗号分隔的列表形式运行的测试用例。指定后,group-id 必须指定单个组。

  • pool-id。要测试的设备池。如果您在 device.json 文件中定义了多个设备池,则测试运行者必须指定一个池。

  • timeout-multiplier。将 IDT 配置为使用用户定义的乘数来修改 test.json 文件中为测试指定的测试执行超时。

  • stop-on-first-failure。将 IDT 配置为在第一次失败时停止执行。应将此选项与 group-id 结合使用来调试指定的测试组。

  • userdata。设置包含运行测试套件所需用户数据信息的文件。只有在测试套件的 suite.json 文件中 userdataRequired 被设置为 true 时,才需要这样做。

有关 run-suite 选项的更多信息,请使用 help 选项:

devicetester_[linux | mac | win_x86-64] run-suite -h
debug-test-suite

在调试模式下运行测试套件。有关更多信息,请参阅在调试模式下运行 IDT