のドキュメントを表示していますAWS IoT Greengrass Version 1。AWS IoT Greengrass Version 2の最新のメジャーバージョンです。AWS IoT Greengrass。の使用方法の詳細については、「」を参照してください。AWS IoT Greengrass V2の詳細については、AWS IoT Greengrass Version 2開発者ガイド。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: シンプルなIDTテストスイートの開発
テストスイートは、次のものを組み合わせます。
-
テストロジックを含むテスト実行ファイル
-
テストスイートを記述する JSON 設定ファイル
このチュートリアルでは、IDT をAWS IoT Greengrassを使用して、単一のテストケースを含む Python テストスイートを開発します。このチュートリアルでは、次の手順を実行します。
Prerequisites
このチュートリアルを完了するには、以下が必要です。
-
ホストコンピュータの要件
-
の最新バージョンAWS IoTDevice Tester
-
Python
3.7 以降 コンピュータにインストールされているPythonのバージョンを確認するには、次のコマンドを実行します。
python3 --version
Windowsでは、このコマンドを使用してエラーが返された場合は、
python --version
代わりに、とします。返されたバージョン番号が 3.7 以上の場合は、Powershell 端末で次のコマンドを実行してpython3
のエイリアスを指定します。python
コマンド。Set-Alias -Name "python3" -Value "python"
バージョン情報が返されない場合、またはバージョン番号が 3.7 未満の場合は、Python をダウンロードしています。
Python 3.7 以降をインストールするには。詳細については、「」を参照してください。Python のドキュメント 。 -
ことを確認するには
urllib3
が正しくインストールされていることを確認するには、次のコマンドを実行します。python3 -c 'import urllib3'
もし
urllib3
がインストールされていない場合は、次のコマンドを実行してインストールします。python3 -m pip install urllib3
-
-
デバイスの要件
-
Linux オペレーティングシステムと、ホストコンピュータと同じネットワークへのネットワーク接続を持つデバイス。
を使用することをお勧めします。Raspberry π
ラズベリーパイのOSと. 必ず設定してください。SSH リモートで接続して、Raspberry Pi にリモートで接続します。
-
テストスイートディレクトリの作成
IDT は、テストケースを各テストスイート内のテストグループに論理的に分離します。各テストケースは、テストグループ内に存在する必要があります。このチュートリアルでは、MyTestSuite_1.0.0
をクリックし、このフォルダ内に次のディレクトリツリーを作成します。
MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase
JSON 設定ファイルを作成する
テストスイートには、以下の必須のJSON 設定ファイル:
必要な JSON ファイル
suite.json
-
テストスイートの情報が含まれています。「」を参照してくださいSuite.json を設定する
group.json
-
テストグループに関する情報が格納されます。を作成する必要があります。
group.json
ファイルをテストスイートの各テストグループに追加します。「」を参照してくださいgroup.json を設定する test.json
-
テストケースについての情報が含まれています。を作成する必要があります。
test.json
ファイルをテストスイート内の各テストケース用に作成します。「」を参照してくださいtest.json を設定する
-
左
MyTestSuite_1.0.0/suite
フォルダを作成するには、suite.json
ファイルで、次の構造の例を示します。{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
-
左
MyTestSuite_1.0.0/myTestGroup
フォルダを作成するには、group.json
ファイルで、次の構造の例を示します。{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
-
左
MyTestSuite_1.0.0/myTestGroup/myTestCase
フォルダを作成するには、test.json
ファイルで、次の構造の例を示します。{ "id": "MyTestCase", "title": "My Test Case", "details": "This is my test case.", "execution": { "timeout": 300000, "linux": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "mac": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "win": { "cmd": "python3", "args": [ "myTestCase.py" ] } } }
ディレクトリツリーMyTestSuite_1.0.0
フォルダは以下のようになります。
MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json
IDT クライアント SDK の取得
「」を使用します。IDT クライアント SDKを使用して、IDT がテスト対象のデバイスと対話し、テスト結果を報告できるようにします。このチュートリアルでは、Python バージョンの SDK を使用します。
」
フォルダーで、<device-tester-extract-location>
/sdks/python/idt_client
フォルダをMyTestSuite_1.0.0/suite/myTestGroup/myTestCase
folder
SDK が正常にコピーされたことを確認するには、次のコマンドを実行します。
cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'
テストケースの実行可能ファイルを作成する
テストケース実行可能ファイルには、実行するテストロジックが含まれています。テストスイートには、複数のテストケース実行可能ファイルを含めることができます。このチュートリアルでは、テストケースの実行可能ファイルを 1 つだけ作成します。
-
テストスイートファイルを作成します。
左
MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
フォルダを作成するには、myTestCase.py
ファイルを以下の内容で変更します。from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
-
クライアント SDK 関数を使用して、次のテストロジックを
myTestCase.py
file:-
テスト対象のデバイスで SSH コマンドを実行します。
from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client()
# Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout)
if __name__ == "__main__": main() -
テスト結果を IDT に送信します。
from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() # Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout)
# Create a send result request sr_req = SendResultRequest(TestResult(passed=True)) # Send the result client.send_result(sr_req)
if __name__ == "__main__": main()
-
IDT のデバイス情報の構成
IDT でテストを実行するためのデバイス情報を設定します。更新する必要があります。device.json
テンプレートにある
フォルダーに以下の情報を入力します。<device-tester-extract-location>
/configs
[ { "id": "pool", "sku": "N/A", "devices": [ { "id": "
<device-id>
", "connectivity": { "protocol": "ssh", "ip": "<ip-address>
", "port": "<port>
", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>
", "privKeyPath": "/path/to/private/key
", "password": "<password>
" } } } } ] } ]
左devices
オブジェクトには、次の情報を入力します。
id
-
デバイスのユーザー定義の一意の識別子。
connectivity.ip
-
デバイスの IP アドレス。
connectivity.port
-
オプション。デバイスへの SSH 接続に使用するポート番号。
connectivity.auth
-
接続の認証情報。
このプロパティは、
connectivity.protocol
がssh
に設定されている場合にのみ適用されます。connectivity.auth.method
-
指定された接続プロトコルを介してデバイスにアクセスするために使用される認証方法。
サポートされている値は以下のとおりです。
-
pki
-
password
-
connectivity.auth.credentials
-
認証に使用される認証情報。
connectivity.auth.credentials.user
-
デバイスへのサインインに使用するユーザー名。
connectivity.auth.credentials.privKeyPath
-
デバイスにサインインするためのプライベートキーへの完全パス。
この値は、
connectivity.auth.method
がpki
に設定されている場合にのみ適用されます。 devices.connectivity.auth.credentials.password
-
デバイスにサインインするためのパスワード。
この値は、
connectivity.auth.method
がpassword
に設定されている場合にのみ適用されます。
method
が pki
に設定されている場合のみ privKeyPath
を指定します。
method
が password
に設定されている場合のみ password
を指定します。
テストスイートの実行
テストスイートを作成したら、それが期待どおりに機能することを確認する必要があります。既存のデバイスプールでテストスイートを実行するには、以下の手順に従います。
-
コピーする
MyTestSuite_1.0.0
folder
。<device-tester-extract-location>
/tests -
以下のコマンドを実行します。
cd
<device-tester-extract-location>
/bin ./devicetester_[linux | mac | win_x86-64]
run-suite --suite-id MyTestSuite
IDT はテストスイートを実行し、結果をコンソールにストリーミングします。テストの実行が完了すると、次の情報が表示されます。
time="2020-10-19T09:24:47-07:00" level=info msg=Using pool: pool time="2020-10-19T09:24:47-07:00" level=info msg=Using test suite "MyTestSuite_1.0.0" for execution time="2020-10-19T09:24:47-07:00" level=info msg=b'hello world\n' suiteId=MyTestSuite groupId=myTestGroup testCaseId=myTestCase deviceId=my-device executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:47-07:00" level=info msg=All tests finished. executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:48-07:00" level=info msg= ========== Test Summary ========== Execution Time: 1s Tests Completed: 1 Tests Passed: 1 Tests Failed: 0 Tests Skipped: 0 ---------------------------------- Test Groups: myTestGroup: PASSED ---------------------------------- Path to IoT Device Tester Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/awsiotdevicetester_report.xml Path to Test Execution Logs: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/logs Path to Aggregated JUnit Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/MyTestSuite_Report.xml
Troubleshooting
チュートリアルを完了する際の問題を解決するには、以下の情報が役立ちます。
テストケースが正常に実行されない
テストが正常に実行されない場合、IDT は、テスト実行のトラブルシューティングに役立つエラーログをコンソールにストリーミングします。エラーログを確認する前に、次の点を確認してください。
テスト対象のデバイスに接続できません。
以下について確認してください。
-
あなたの
device.json
ファイルには、正しい IP アドレス、ポート、および認証情報が含まれています。 -
ホストコンピュータから SSH 経由でデバイスに接続できます。