配置 IDT 测试管弦乐队 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置 IDT 测试管弦乐队

从 IDT v4.5.1 开始,IDT 包括一个新的测试编排编排组件。测试管弦乐队是一个 IDT 组件,用于控制测试套件执行流程,并在 IDT 完成运行所有测试后生成测试报告。测试管弦乐队根据用户定义的规则确定测试选择和运行测试的顺序。

如果你的测试套件不包含用户定义的测试管弦乐队,IDT 将为你生成测试管弦乐队。

默认的测试管弦乐队执行以下功能:

  • 让测试运行者能够选择和运行特定的测试组,而不是整个测试套件。

  • 如果未选择特定的测试组,则以随机顺序运行测试套件中的每个测试组。

  • 生成报告并打印显示每个测试组和测试用例的测试结果的控制台摘要。

测试管弦乐队取代了 IDT 测试管弦乐队。我们强烈建议您使用测试管弦乐队来开发测试套件,而不是 IDT 测试管弦乐队。测试管弦乐队提供了以下改进的功能:

  • 与 IDT 状态机使用的命令格式相比,使用声明式格式。这使您能够具体说明你想运行哪些测试以及什么时候你想运行它们.

  • 管理特定的组处理、报告生成、错误处理和结果跟踪所以你不是必需的以手动管理这些操作。

  • 使用 YAML 格式,默认情况下支持注释。

  • 需要百分之八十比测试管弦乐队更少的磁盘空间来定义相同的工作流程。

  • 添加测试前验证,以验证您的工作流程定义不包含错误的测试 ID 或循环依赖关系。

测试管弦乐队格式

您可以使用以下模板配置自己的模板。<custom-test-suite-folder>/suite/test_orchestrator.yamlfile:

Aliases: string: context-expression ConditionalTests: - Condition: context-expression Tests: - test-descriptor Order: - - group-descriptor - group-descriptor Features: - Name: feature-name Value: support-description Condition: context-expression Tests: - test-descriptor OneOfTests: - test-descriptor IsRequired: boolean

包含值的所有字段都为必填字段,如下所述:

Aliases

可选。映射到上下文表达式的自定义字符串 别名允许您生成友好名称在测试管弦乐队配置中识别上下文表达式。如果您正在创建复杂的上下文表达式或多个位置使用的表达式,这将特别有用。

您可以使用上下文表达式来存储允许您访问其他 IDT 配置中的数据的上下文查询。有关更多信息,请参阅 在上下文中访问数据

例 示例
Aliases: FizzChosen: "'{{$pool.features[?(@.name == 'Fizz')].value[0]}}' == 'yes'" BuzzChosen: "'{{$pool.features[?(@.name == 'Buzz')].value[0]}}' == 'yes'" FizzBuzzChosen: "'{{$aliases.FizzChosen}}' && '{{$aliases.BuzzChosen}}'"
ConditionalTests

可选。条件列表以及满足每个条件时运行的相应测试用例。每个条件可以有多个测试用例;但是,您只能将给定的测试用例分配给一个条件。

默认情况下,IDT 会运行任何未分配给此列表中条件的测试用例。如果您未指定此部分,IDT 将运行测试套件中的所有测试组。

中的每个项目ConditionalTestslist 包含以下参数:

Condition

一个计算结果为布尔值值。如果评估值为 true,IDT 将运行在Tests参数。

Tests

测试描述符列表。

每个测试描述符使用测试组 ID 和一个或多个测试用例 ID 来标识要从特定测试组运行的单个测试。测试描述符使用以下格式:

GroupId: group-id CaseIds: [test-id, test-id] # optional
例 示例

以下示例使用可以将其定义为的通用上下文表达式Aliases.

ConditionalTests: - Condition: "{{$aliases.Condition1}}" Tests: - GroupId: A - GroupId: B - Condition: "{{$aliases.Condition2}}" Tests: - GroupId: D - Condition: "{{$aliases.Condition1}} || {{$aliases.Condition2}}" Tests: - GroupId: C

根据定义的条件,IDT 选择测试组如下:

  • 如果Condition1是的,IDT 在测试组 A、B 和 C 中运行测试

  • 如果Condition2是的,IDT 在测试组 C 和 D 中运行测试

Order

可选。运行测试的顺序。您可以在测试组级别指定测试顺序。如果您没有指定此部分,IDT 将按随机顺序运行所有适用的测试组。的价值Order是组描述符列表的列表。你没有列出的任何测试组Order,可以与列出的任何其他测试组 parallel 运行。

每个组描述符列表都包含一个或多个组描述符,并标识每个描述符中指定的组的运行顺序。您可以使用以下格式定义单个组描述符:

  • group-id— 现有测试组的组 ID。

  • [group-id, group-id]— 可以按相对于彼此的任意顺序运行的测试组列表。

  • "*"— 通配符。这相当于当前组描述符列表中尚未指定的所有测试组的列表。

的值Order此外,还必须满足以下要求:

  • 您在组描述符中指定的测试组 ID 必须存在于测试套件中。

  • 每个组描述符列表必须包含至少一个测试组。

  • 每个组描述符列表必须包含唯一的组 ID。您不能在单个组描述符中重复测试组 ID。

  • 一个组描述符列表最多可以包含一个通配符组描述符。通配符组描述符必须是列表中的第一个或最后一个项目。

例 示例

对于包含测试组 A、B、C、D 和 E 的测试套件,以下示例列表显示了指定 IDT 应首先运行测试组 A,然后运行测试组 B,然后按任意顺序运行测试组 C、D 和 E 的不同方法。

  • Order: - - A - B - [C, D, E]
  • Order: - - A - B - "*"
  • Order: - - A - B - - B - C - - B - D - - B - E
Features

可选。您希望 IDT 添加到awsiotdevicetester_report.xml文件。如果您没有指定此部分,IDT 将不会向报告中添加任何商品功能。

产品功能是关于设备可能满足的特定标准的用户定义信息。例如,MQTT 产品功能可以指定设备正确发布 MQTT 消息。Inawsiotdevicetester_report.xml,产品功能设置为supportednot-supported,或者根据指定的测试是否通过了自定义的用户定义值。

中的每个项目Featureslist 包含以下参数:

Name

功能的名称。

Value

可选。您想在报告中使用的自定义值,而不是supported. 如果未指定此值,则基于 IDT 将功能值设置为supported要么not-supported根据测试结果。如果您在不同的条件下测试同一功能,则可以在Features列表,IDT 连接受支持的条件的功能值。有关更多信息,请参阅 。

Condition

一个计算结果为布尔值值。如果评估值为 true,IDT 会在测试套件运行完成后将该功能添加到测试报告中。如果评估值为 false,则报告中不包括测试。

Tests

可选。测试描述符列表。此列表中指定的所有测试都必须通过,才能支持该功能。

此列表中的每个测试描述符使用测试组 ID 和一个或多个测试用例 ID 来标识要从特定测试组运行的单个测试。测试描述符使用以下格式:

GroupId: group-id CaseIds: [test-id, test-id] # optional

您必须指定Tests要么OneOfTests对于中的每个功能Featureslist。

OneOfTests

可选。测试描述符列表。必须通过此列表中指定的至少一项测试才能支持该功能。

此列表中的每个测试描述符使用测试组 ID 和一个或多个测试用例 ID 来标识要从特定测试组运行的单个测试。测试描述符使用以下格式:

GroupId: group-id CaseIds: [test-id, test-id] # optional

您必须指定Tests要么OneOfTests对于中的每个功能Featureslist。

IsRequired

用于定义测试报告中是否需要该功能的布尔值。原设定值为 false

测试编排编排编排上下文

测试管弦乐队上下文是只读 JSON 文档,其中包含测试管弦乐队在执行期间可用的数据。测试管弦乐队上下文只能从测试管弦乐队访问,其中包含确定测试流程的信息。例如,您可以使用测试运行者在userdata.json文件来确定是否需要运行特定测试。

测试编排编排程序上下文使用以下格式:

{ "pool": { <device-json-pool-element> }, "userData": { <userdata-json-content> }, "config": { <config-json-content> } }
pool

有关为测试运行选择的设备池的信息。对于选定的设备池,此信息将从中定义的相应顶级设备池阵列元素中检索device.json文件。

userData

中的信息userdata.json文件。

config

中的信息config.json文件。

您可以使用 jsonPath 表示法查询上下文。状态定义中 jsonPath 查询的语法为{{query}}. 当您从测试管弦乐队上下文访问数据时,请确保每个值的计算结果为字符串、数字或布尔值.

有关使用 JSONPath 表示法访问上下文中的数据的更多信息,请参阅使用 IDT 上下文.