本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定測試執行程式的設定
要運行自定義測試套件,測試運行者必須根據要運行的測試套件配置其設置。設定是根據位於
資料夾中的組態檔案樣板來指定。如果需要,測試運行程序還必須設置 IDT 將用於連接到AWS雲的AWS憑據。<device-tester-extract-location>
/configs/
作為測試編寫者,您將需要配置這些文件來調試您的測試套件。您必須提供測試運行程序的說明,以便他們可以根據需要配置以下設置以運行測試套件。
設定 device.json
該device.json
文件包含有關運行測試的設備的信息(例如,IP 地址,登錄信息,操作系統和 CPU 架構)。
測試運行者可以使用位於該文件
夾中的以下模板<device-tester-extract-location>
/configs/device.json
文件提供此信息。
[ { "id": "
<pool-id>
", "sku": "<pool-sku>
", "features": [ { "name": "<feature-name>
", "value": "<feature-value>
", "configs": [ { "name": "<config-name>
", "value":"<config-value>
" } ], } ], "devices": [ { "id": "<device-id>
", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>
", "port":<port-number>
, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>
", // pki "privKeyPath": "/path/to/private/key
", // password "password": "<password>
", } }, // uart "serialPort": "<serial-port>
", // docker "containerId": "<container-id>
", "containerUser": "<container-user-name>
", } } ] } ]
如下所述,包含值的所有欄位皆為必要:
id
-
使用者定義的英數字元 ID,可唯一識別裝置的集合,稱為「裝置集區」。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件,集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。
sku
-
可唯一識別測試裝置的英數字元值。SKU 用於追蹤合格的裝置。
注意
如果您想要在 AWS Partner 裝置目錄中列出您的電路板,在此處指定的 SKU 必須符合您在列名程序中使用的 SKU。
features
-
選用。包含裝置支援功能的陣列。裝置功能是您在測試套件中設定的使用者定義值。您必須向測試執行者提供有關要包含在
device.json
檔案中的功能名稱和值的資訊。例如,如果您要測試裝置作為其他裝置的 MQTT 伺服器運作,您可以設定測試邏輯,以驗證名為的功能的特定支援層級。MQTT_QOS
測試運行者提供此功能名稱,並將功能值設置為其設備支持的 QOS 級別。您可以使用查詢從 IDT 內容中擷取提供的資訊,或從devicePool.features
查詢的測試協調器內容中擷取提供的資訊。pool.features
features.name
-
特徵的名稱。
features.value
-
支援的特徵值。
features.configs
-
功能的組態設定 (如果需要)。
features.config.name
-
組態設定的名稱。
features.config.value
-
支援的設定值。
devices
-
池中要測試的一系列設備。至少需要一個裝置。
devices.id
-
使用者定義的唯一識別符,用於識別要測試的裝置。
connectivity.protocol
-
用來與此裝置通訊的通訊協定。池中的每個設備都必須使用相同的協議。
目前,唯一支援的值是
ssh
實uart
體裝置和docker
Docker 容器。 connectivity.ip
-
要測試之裝置的 IP 位址。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.port
-
選用。用於 SSH 連線的連接埠號碼。
預設值為 22。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.auth
-
連線的驗證資訊。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。connectivity.auth.method
-
用來透過指定的連線通訊協定存取裝置的驗證方法。
支援的值如下:
-
pki
-
password
-
connectivity.auth.credentials
-
用於驗證的燈入資料。
connectivity.auth.credentials.password
-
用於登入要測試裝置的密碼。
只有當
connectivity.auth.method
設為password
時,才會套用此值。 connectivity.auth.credentials.privKeyPath
-
用來登入待測裝置之私有金鑰的完整路徑。
只有當
connectivity.auth.method
設為pki
時,才會套用此值。 connectivity.auth.credentials.user
-
登入要測試之裝置的使用者名稱。
connectivity.serialPort
-
選用。裝置所連接的序列埠。
只有當
connectivity.protocol
設為uart
時,才會套用此屬性。 connectivity.containerId
-
要測試之 Docker 容器的容器 ID 或名稱。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.containerUser
-
選用。容器內的使用者對使用者的名稱。預設值是 Docker 檔案中提供的使用者。
預設值為 22。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。
注意
要檢查測試運行程序是否為測試配置了不正確的設備連接,您可以
pool.Devices[0].Connectivity.Protocol
從測試 Orchestrator 上下文中檢索並將其與Choice
狀態中的預期值進行比較。如果使用了不正確的協議,則使用LogMessage
狀態和轉換到狀態打印消息。Fail
或者,您可以使用錯誤處理代碼來報告錯誤設備類型的測試失敗。
(選擇性) 設定使用者資料 .json
該userdata.json
文件包含測試套件所需但未在device.json
文件中指定的任何其他信息。這個文件的格式取決於在測試套userdata_scheme.json件中定義的文件。如果您是測試編寫者,請確保將此信息提供給將運行您編寫的測試套件的用戶。
(選擇性) 設定資源 .json
該resource.json
文件包含有關將用作資源設備的任何設備的信息。資源設備是測試被測設備的某些功能所需的設備。例如,若要測試裝置的藍牙功能,您可以使用資源裝置來測試您的裝置是否能成功連線。資源設備是可選的,您可以根據需要任意數量的資源設備。作為測試編寫者,您可以使用 test.json 文件來定義測試所需的資源設備功能。然後,測試運行程序使用該resource.json
文件提供具有所需功能的資源設備池。請務必將此資訊提供給將執行您撰寫之測試套件的使用者。
測試運行者可以使用位於該文件
夾中的以下模板<device-tester-extract-location>
/configs/resource.json
文件提供此信息。
[ { "id": "
<pool-id>
", "features": [ { "name": "<feature-name>
", "version": "<feature-version>
", "jobSlots":<job-slots>
} ], "devices": [ { "id": "<device-id>
", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>
", "port":<port-number>
, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>
", // pki "privKeyPath": "/path/to/private/key
", // password "password": "<password>
", } }, // uart "serialPort": "<serial-port>
", // docker "containerId": "<container-id>
", "containerUser": "<container-user-name>
", } } ] } ]
如下所述,包含值的所有欄位皆為必要:
id
-
使用者定義的英數字元 ID,可唯一識別裝置的集合,稱為「裝置集區」。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件,集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。
features
-
選用。包含裝置支援功能的陣列。此字段中所需的信息在測試套件的 test.json 文件中定義,並確定要運行哪些測試以及如何運行這些測試。如果測試套件不需要任何功能,則不需要此字段。
features.name
-
特徵的名稱。
features.version
-
功能版本。
features.jobSlots
-
設定以指出可同時使用裝置的測試數目。預設值為
1
。
devices
-
池中要測試的一系列設備。至少需要一個裝置。
devices.id
-
使用者定義的唯一識別符,用於識別要測試的裝置。
connectivity.protocol
-
用來與此裝置通訊的通訊協定。池中的每個設備都必須使用相同的協議。
目前,唯一支援的值是
ssh
實uart
體裝置和docker
Docker 容器。 connectivity.ip
-
要測試之裝置的 IP 位址。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.port
-
選用。用於 SSH 連線的連接埠號碼。
預設值為 22。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.auth
-
連線的驗證資訊。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。connectivity.auth.method
-
用來透過指定的連線通訊協定存取裝置的驗證方法。
支援的值如下:
-
pki
-
password
-
connectivity.auth.credentials
-
用於驗證的燈入資料。
connectivity.auth.credentials.password
-
用於登入要測試裝置的密碼。
只有當
connectivity.auth.method
設為password
時,才會套用此值。 connectivity.auth.credentials.privKeyPath
-
用來登入待測裝置之私有金鑰的完整路徑。
只有當
connectivity.auth.method
設為pki
時,才會套用此值。 connectivity.auth.credentials.user
-
登入要測試之裝置的使用者名稱。
connectivity.serialPort
-
選用。裝置所連接的序列埠。
只有當
connectivity.protocol
設為uart
時,才會套用此屬性。 connectivity.containerId
-
要測試之 Docker 容器的容器 ID 或名稱。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.containerUser
-
選用。容器內的使用者對使用者的名稱。預設值是 Docker 檔案中提供的使用者。
預設值為 22。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。
(可選)配置
config.json
檔案包含 IDT 的組態資訊。通常,測試運行者不需要修改此文件,除非為 IDT 提供AWS用戶憑據以及可選AWS地區提供用戶憑據。如果提供具有必要權限的AWS認證,則AWS IoT Device Tester會收集使用狀況測量結果並提交給。AWS這是一項選擇加入功能,用於改善 IDT 功能。如需詳細資訊,請參閱 IDT 使用量測量結果。
測試運行者可以通過以下方式之一配置其AWS憑據:
-
憑證檔案
IDT 會使用與 AWS CLI 相同的登入資料檔案。如需詳細資訊,請參閱組態與登入資料檔案。
登入資料檔案的位置會有所不同,取決於您使用的作業系統:
-
macOS, Linux:
~/.aws/credentials
-
Windows:
C:\Users\
UserName
\.aws\credentials
-
-
環境變數
環境變數是由作業系統維護且由系統命令使用的變數。在 SSH 工作階段關閉後,無法使用在 SSH 工作階段期間定義的變數。IDT 可以使用
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
環境變數來儲存AWS認證若要在 Linux、macOS 或 Unix 上設定這些變數,請使用 export:
export AWS_ACCESS_KEY_ID=
<your_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
若要在 Windows 上設定這些變數,請使用 set:
set AWS_ACCESS_KEY_ID=
<your_access_key_id>
set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
要配置 IDT 的AWS憑據,測試運行程序編輯文件
夾中<device-tester-extract-location>
/configs/config.json
文件中的auth
部分。
{ "log": { "location": "
logs
" }, "configFiles": { "root": "configs
", "device": "configs/device.json
" }, "testPath": "tests
", "reportPath": "results
", "awsRegion": "<region>
", "auth": { "method": "file | environment", "credentials": { "profile": "<profile-name>
" } } } ]
如下所述,包含值的所有欄位皆為必要:
注意
此檔案中的所有路徑都是相對於 < device-tester-extract-location >
來定義的。
log.location
-
< device-tester-extract-location >
中記錄檔資料夾的路徑。 configFiles.root
-
包含組態檔案之資料夾的路徑。
configFiles.device
-
device.json
檔案的路徑。 testPath
-
包含測試套件之資料夾的路徑。
reportPath
-
IDT 執行測試套件後,將包含測試結果的資料夾路徑。
awsRegion
-
選用。測試套件將使用的AWS區域。如果未設置,則測試套件將使用每個測試套件中指定的默認區域。
auth.method
-
IDT 用來擷取AWS認證的方法。支援的值是
file
從認證檔案擷取認證,environment
以及使用環境變數擷取認證。 auth.credentials.profile
-
要從身份證明檔案使用的身份證明設定檔。只有當
auth.method
設為file
時,才會套用此屬性。