本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定測試執行程式的設定
要運行自定義測試套件,測試運行者必須根據要運行的測試套件配置其設置。根據
資料夾中的規劃檔案樣板來指定設定。如果需要,測試運行程序還必須設置 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>
", "pairedResource": "<device-id>
", //used for no-op protocol "connectivity": { "protocol": "ssh | uart | docker | no-op", // ssh "ip": "<ip-address>
", "port":<port-number>
, "publicKeyPath": "<public-key-path>
", "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 合作夥伴裝置目錄中刊登您的主機板,您在此指定的 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
-
使用者定義的唯一識別符,用於識別要測試的裝置。
devices.pairedResource
-
資源裝置的使用者定義唯一識別碼。使用
no-op
連線通訊協定測試裝置時,需要此值。 connectivity.protocol
-
用來與此裝置通訊的通訊協定。池中的每個設備都必須使用相同的協議。
目前,唯一支援的值是
ssh
實體裝置、docker
Docker 容器,以及no-op
與 IDT 主機沒有直接連線但需要資源裝置做為實體中介軟體才能與主機通訊的裝置。uart
對於無作業裝置,您可以在
devices.pairedResource
中配置資源裝置 ID。您也必須在resource.json
檔案中指定此 ID。配對的設備必須是與被測設備實際配對的設備。IDT 識別並連接到配對的資源裝置後,IDT 將不會根據檔案中描述的功能連線到其他資源裝置。test.json
connectivity.ip
-
要測試之裝置的 IP 位址。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.port
-
選用。用於 SSH 連線的連接埠號碼。
預設值為 22。
只有當
connectivity.protocol
設為ssh
時,才會套用此屬性。 connectivity.publicKeyPath
-
選用。用於驗證與被測設備的連接的公鑰的完整路徑。當您指定時
publicKeyPath
,IDT 會在設備與被測設備建立 SSH 連接時驗證設備的公鑰。如果未指定此值,IDT 會建立 SSH 連線,但不會驗證裝置的公開金鑰。強烈建議您指定公開金鑰的路徑,並使用安全方法來擷取此公開金鑰。對於基於命令行的標準 SSH 客戶端,公鑰在
known_hosts
文件中提供。如果您指定個別的公開金鑰檔案,則此檔案必須使用與known_hosts
檔案相同的格式,也就是ip-address key-type public-key
。 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
設為docker
時,才會套用此屬性。 connectivity.containerUser
-
選用。容器內的使用者對使用者的名稱。預設值是 Docker 檔案中提供的使用者。
預設值為 22。
只有當
connectivity.protocol
設為docker
時,才會套用此屬性。
注意
要檢查測試運行程序是否為測試配置了不正確的設備連接,您可以
pool.Devices[0].Connectivity.Protocol
從狀態機上下文中檢索並將其與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-value>
", "jobSlots":<job-slots>
} ], "devices": [ { "id": "<device-id>
", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>
", "port":<port-number>
, "publicKeyPath": "<public-key-path>
", "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.publicKeyPath
-
選用。用於驗證與被測設備的連接的公鑰的完整路徑。當您指定時
publicKeyPath
,IDT 會在設備與被測設備建立 SSH 連接時驗證設備的公鑰。如果未指定此值,IDT 會建立 SSH 連線,但不會驗證裝置的公開金鑰。強烈建議您指定公開金鑰的路徑,並使用安全方法來擷取此公開金鑰。對於基於命令行的標準 SSH 客戶端,公鑰在
known_hosts
文件中提供。如果您指定個別的公開金鑰檔案,則此檔案必須使用與known_hosts
檔案相同的格式,也就是ip-address key-type public-key
。 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
設為docker
時,才會套用此屬性。 connectivity.containerUser
-
選用。容器內的使用者對使用者的名稱。預設值是 Docker 檔案中提供的使用者。
預設值為 22。
只有當
connectivity.protocol
設為docker
時,才會套用此屬性。
(可選)配置配置。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 工作階段關閉後,無法使用在 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
時,才會套用此屬性。