本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定IDT測試協調器
從 IDT v4.5.2 開始, IDT包含新的測試協調器元件。Test Orchestrator 是控制測試套件執行流程的IDT元件,會在IDT完成所有測試後產生測試報告。測試協調器會根據使用者定義的規則,決定測試選擇和執行測試的順序。
如果您的測試套件不包含使用者定義的測試協調程式, IDT會為您產生測試協調程式。
預設測試協調器會執行下列函數:
-
讓測試執行器能夠選取和執行特定測試群組,而不是整個測試套件。
-
如果未選取特定測試群組, 會以隨機順序執行測試套件中的每個測試群組。
-
產生報告並列印主控台摘要,顯示每個測試群組和測試案例的測試結果。
測試協調器會取代 IDT 狀態機器。我們強烈建議您使用測試協調器來開發測試套件,而不是IDT狀態機器。測試協調器提供下列改進功能:
-
相較於 IDT 狀態機器使用的強制性格式, 會使用宣告格式。這可讓您指定要執行的測試,以及何時要執行測試。
-
管理特定群組處理、報告產生、錯誤處理和結果追蹤,因此您不需要手動管理這些動作。
-
使用 YAML 格式,預設支援註解。
-
需要比測試協調器少 80% 的磁碟空間,才能定義相同的工作流程。
-
新增測試前驗證,以確認您的工作流程定義不包含不正確的測試IDs或循環相依性。
測試協調器格式
您可以使用下列範本來設定自己的
檔案: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 和一或多個測試案例IDs,來識別要從特定測試群組執行的個別測試。測試描述符使用下列格式:
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,請在測試群組 A、B 和 C 中IDT執行測試。 -
如果
Condition2
為 true,請在測試群組 C 和 D 中IDT執行測試。
Order
-
選用。執行測試的順序。您可以在測試群組層級指定測試順序。如果您未指定本節, 會以隨機順序IDT執行所有適用的測試群組。的值
Order
是群組描述符清單的清單。您在 中未列出的任何測試群組,Order
都可以與任何其他列出的測試群組平行執行。每個群組描述符清單包含其中一個群組描述符,並識別執行每個描述符中指定群組的順序。您可以使用下列格式來定義個別群組描述符:
-
- 現有測試群組的群組 ID。group-id
-
[
- 可以相對於彼此以任何順序執行的測試群組清單。group-id
,group-id
] -
"*"
—Wildcard。這相當於目前群組描述符清單中尚未指定的所有測試群組的清單。
的值
Order
也必須符合下列需求:-
IDs 您在群組描述符中指定的測試群組必須存在於測試套件中。
-
每個群組描述符清單必須至少包含一個測試群組。
-
每個群組描述符清單必須包含唯一的群組 IDs。您無法在個別群組描述符中重複測試群組 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
。如果未指定此值,則not-supported
基於 會根據測試結果將特徵值IDT設定為supported
或 。如果您使用不同的條件測試相同的功能,則可以針對Features
清單中該功能的每個執行個體使用自訂值,並將功能值IDT串連至支援的條件。如需詳細資訊,請參閱 Condition
-
評估為布林值的內容表達式。如果評估的值為 true, 會在測試報告完成執行測試套件後,將功能IDT新增至測試報告。如果評估的值為 false,則測試不會包含在報告中。
Tests
-
選用。測試描述符的清單。此清單中指定的所有測試都必須通過,才能支援此功能。
此清單中的每個測試描述符都會使用測試群組 ID 和一或多個測試案例IDs,來識別要從特定測試群組執行的個別測試。測試描述符使用下列格式:
GroupId:
group-id
CaseIds: [test-id
,test-id
] # optional您必須
OneOfTests
為Features
清單中的每個功能指定Tests
或 。 OneOfTests
-
選用。測試描述符的清單。此清單中指定的至少一個測試必須通過,才能支援此功能。
此清單中的每個測試描述符都會使用測試群組 ID 和一或多個測試案例IDs,來識別要從特定測試群組執行的個別測試。測試描述符使用下列格式:
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內容。