本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 IDT 测试编排器
从 IDT v4.5.2 开始,IDT 包括一个新的测试编排器组件。测试协调器是一个 IDT 组件,用于控制测试套件执行流程,并在 IDT 完成所有测试运行后生成测试报告。测试协调器根据用户定义的规则确定测试选择和测试的运行顺序。
如果您的测试套件不包含用户定义的测试编排器,IDT 将为您生成测试编排器。
默认的测试编排器执行以下功能:
-
让测试运行者能够选择和运行特定的测试组,而不是整个测试套件。
-
如果未选择特定的测试组,则按随机顺序运行测试套件中的每个测试组。
-
生成报告并打印控制台摘要,显示每个测试组和测试用例的测试结果。
测试编排器取代了 IDT 状态机。我们强烈建议您使用测试编排器来开发测试套件,而不是 IDT 状态机。测试编排器提供了以下改进的功能:
-
与 IDT 状态机使用的命令式格式相比,使用声明格式。这允许您指定要运行哪些测试以及何时运行它们。
-
管理特定的群组处理、报告生成、错误处理和结果跟踪,因此您无需手动管理这些操作。
-
使用 YAML 格式,默认情况下支持注释。
-
定义相同的工作流程所需的磁盘空间比测试编排器少 80%。
-
添加测试前验证,以验证您的工作流程定义不包含错误的测试 ID 或循环依赖关系。
测试编排器格式
您可以使用以下模板配置自己的
文件:custom-test-suite-folder
/suite/test_orchestrator.yaml
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
-
可选。映射到上下文表达式的用户定义字符串。别名允许您生成友好名称来识别测试 Orchestrator 配置中的上下文表达式。如果您要创建复杂的上下文表达式或在多个地方使用的表达式,这尤其有用。
您可以使用上下文表达式存储上下文查询,这些查询允许您访问来自其他 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 将运行测试套件中的所有测试组。
ConditionalTests
列表中的每个项目都包含以下参数: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
是组描述符列表的列表。您未列出的任何测试组都可以与列出的任何其他测试组parallel 运行。Order
每个组描述符列表都包含一个或多个组描述符,并标识每个描述符中指定的组的运行顺序。您可以使用以下格式定义各个组描述符:
-
—现有测试组的群组 ID。group-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 消息。在中
awsiotdevicetester_report.xml
,根据指定的测试是否通过supported
not-supported
,将产品功能设置为、或自定义的用户定义值。Features
列表中的每个项目由以下参数组成:Name
-
功能的名称。
Value
-
可选。您要在报告中使用的自定义值,而不是在报告中使用
supported
。如果未指定此值,则 based IDT 将特征值设置为supported
或not-supported
基于测试结果。如果您在不同的条件下测试同一功能,则可以为Features
列表中该功能的每个实例使用自定义值,IDT 会将支持条件的功能值连接起来。有关更多信息,请参阅 Condition
-
计算结果为布尔值的上下文表达式。如果评估值为 true,IDT 将在完成测试套件运行后将该功能添加到测试报告中。如果评估值为假,则测试不包括在报告中。
Tests
-
可选。测试描述符列表。必须通过此列表中指定的所有测试才能支持该功能。
此列表中的每个测试描述符都使用测试组 ID 和一个或多个测试用例 ID 来标识要从特定测试组运行的各个测试。测试描述符采用以下格式:
GroupId:
group-id
CaseIds: [test-id
,test-id
] # optional必须
OneOfTests
为Features
列表中的每个功能指定Tests
或。 OneOfTests
-
可选。测试描述符列表。必须通过此列表中指定的至少一项测试才能支持该功能。
此列表中的每个测试描述符都使用测试组 ID 和一个或多个测试用例 ID 来标识要从特定测试组运行的各个测试。测试描述符采用以下格式:
GroupId:
group-id
CaseIds: [test-id
,test-id
] # optional必须
OneOfTests
为Features
列表中的每个功能指定Tests
或。 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 上下文。