本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要執行自訂測試套件,測試執行器必須根據他們想要執行的測試套件來設定其設定。根據位於
資料夾中的組態檔案範本來指定設定。如有需要,測試執行器也必須設定 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 Device Catalog 中列出您的電路板,您在此處指定的 SKU 必須符合您在列出程序中使用的 SKU。
features
-
選用。包含裝置支援功能的陣列。裝置功能是您在測試套件中設定的使用者定義值。您必須提供測試執行器有關要包含在
device.json
檔案中的功能名稱和值的資訊。例如,如果您想要測試可做為其他裝置的 MQTT 伺服器運作的裝置,則可以設定測試邏輯來驗證名為 之功能的特定支援層級MQTT_QOS
。測試執行器提供此功能名稱,並將功能值設定為其裝置支援的 QOS 層級。您可以從具有devicePool.features
查詢的 IDT 內容,或從具有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
-
選用。容器內使用者的名稱。預設值是 Dockerfile 中提供的使用者。
預設值為 22。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。
注意
若要檢查測試執行器是否設定不正確的測試裝置連線,您可以從測試協調器內容
pool.Devices[0].Connectivity.Protocol
擷取,並將其與Choice
狀態中的預期值進行比較。如果使用不正確的通訊協定,則使用LogMessage
狀態列印訊息並轉換為Fail
狀態。或者,您可以使用錯誤處理程式碼來報告不正確裝置類型的測試失敗。
(選用) 設定 userdata.json
userdata.json
檔案包含測試套件所需的任何其他資訊,但未在device.json
檔案中指定。此檔案的格式取決於測試套件中定義的userdata_scheme.json檔案。如果您是測試寫入器,請務必將此資訊提供給將執行您所寫入測試套件的使用者。
(選用) 設定 resource.json
resource.json
檔案包含將用作資源裝置的任何裝置的相關資訊。資源裝置是測試待測裝置的特定功能所需的裝置。例如,若要測試裝置的 Bluetooth 功能,您可以使用資源裝置來測試您的裝置是否能夠成功連線。資源裝置是選用的,您可以視需要要求任意數量的資源裝置。身為測試寫入器,您可以使用 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
-
選用。容器內使用者的名稱。預設值是 Dockerfile 中提供的使用者。
預設值為 22。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。
(選用) 設定 config.json
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 工作階段期間定義的變數在該工作階段關閉後無法使用。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
時,才會套用此屬性。