配置 IDT 測試編排器 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

配置 IDT 測試編排器

從 IDT 版本 4.5.1 開始,IDT 包含一個新的測試協調流程元件。測試編排器是一個 IDT 組件,用於控制測試套件執行流程,並在 IDT 完成運行所有測試後生成測試報告。測試編排器確定測試選擇以及基於用户定義的規則運行測試的順序。

如果測試套件不包含用户定義的測試編排器,IDT 將為您生成測試編排器。

默認測試編排器執行以下功能:

  • 為測試運行者提供選擇和運行特定測試組的能力,而不是整個測試套件。

  • 如果未選擇特定測試組,則以隨機順序運行測試套件中的每個測試組。

  • 生成報告並打印顯示每個測試組和測試用例的測試結果的控制台摘要。

測試編排器替換 IDT 測試編排器。強烈建議您使用測試編排器來開發測試套件,而不是 IDT 測試編排器。測試編排器提供了以下改進的功能:

  • 使用聲明格式與 IDT 狀態機使用的命令式格式進行比較。這可讓您指定要運行的測試和何時你想運行它們。

  • 管理特定的組處理、報告生成、錯誤處理和結果跟蹤,以便您不需要手動管理這些操作。

  • 使用 YAML 格式,默認情況下支持註釋。

  • 需要百分之八十比測試編排器更少的磁盤空間來定義相同的工作流。

  • 添加測試前驗證以驗證工作流定義不包含不正確的測試 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

選用。映射到上下文表達式的用户定義字符串。別名允許您生成友好名稱以標識測試編排器配置中的上下文表達式。如果您正在創建複雜的內容表達式或在多個地方使用的表達式,此功能特別有用。

您可以使用上下文表達式來存儲允許您訪問其他 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為 true,則 IDT 在測試組 A、B 和 C 中運行測試。

  • 如果Condition2為 true,則 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.xmlfile. 如果您未指定此部分,IDT 將不會向報告中添加任何商品功能。

產品功能是用户定義的有關設備可能滿足的特定條件的信息。例如,MQTT 產品功能可以指定設備正確發佈 MQTT 消息。Inawsiotdevicetester_report.xml,則產品功能設置為supportednot-supported或自定義的用户定義值,具體取決於是否通過指定的測試。

中的每個項目Features包含下列參數:

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中的每個要素Features清單。

OneOfTests

選用。測試描述符的列表。必須至少通過此列表中指定的測試之一,才能支持該功能。

此列表中的每個測試描述符都使用測試組 ID 和一個或多個測試用例 ID 來標識要從特定測試組運行的單個測試。測試描述符使用下列格式:

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

您必須擇一指定Tests或者OneOfTests中的每個要素Features清單。

IsRequired

用於定義測試報告中是否需要該功能的布爾值。預設值為 false

測試協調流程式內容

測試編排器上下文是一個只讀的 JSON 文檔,其中包含測試編排器在執行過程中可用的數據。測試編排器上下文僅可從測試編排器訪問,幷包含確定測試流程的信息。例如,您可以使用測試運行者在userdata.json文件來確定是否需要運行特定測試。

測試協調流程式內容使用下列格式:

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

有關為測試運行選擇的設備池的信息。對於選定的設備池,此信息將從device.jsonfile.

userData

中的資訊userdata.jsonfile.

config

中的資訊config.jsonfile.

您可以使用 JSONPath 表示法查詢上下文。狀態定義中的 JSONPath 查詢的語法是{{query}}。當您從測試 Orchestrator 上下文訪問數據時,請確保每個值計算為字符串、數字或布林值。

如需使用 JSONPath 符號來訪問內容資料的詳細資訊,請參使用 IDT 上下文