

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# テストの実行者向けの設定の構成
<a name="set-config-custom"></a>

カスタムテストスイートを実行するには、テストの実行者は、実行するテストスイートに基づいて設定を設定する必要があります。設定は、`{{<device-tester-extract-location>}}/configs/` フォルダにある設定ファイルテンプレートに基づいて指定します。必要に応じて、テストランナーは IDT が AWS クラウドへの接続に使用する AWS 認証情報も設定する必要があります。

テストを作成するユーザーは、[テストスイートをデバッグする](run-tests-custom.md)ために、以下に示すファイルの設定が必要になります。また、テストスイートを実行するために必要な以下の設定を設定できるように、テストの実行者に指示を提供する必要があります。

## device.json の設定
<a name="device-config-custom"></a>

`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 Partner Device Catalog にボードを一覧表示する場合、ここで指定する SKU は、一覧表示プロセスで使用する SKU と一致する必要があります。

**`features`**  
オプション。デバイスでサポートされている機能を含む配列。デバイス機能は、テストスイートに設定するユーザー定義の値です。テストの実行者に、`device.json` ファイルに含める機能名および値に関する情報を提供する必要があります。例えば、他のデバイスの MQTT サーバーとして機能するデバイスをテストする場合は、`MQTT_QoS` という名前の機能に対する特定のサポートレベルを検証するようにテストロジックを設定します。テストの実行者は、この機能名を指定し、デバイスによってサポートされる QoS レベルにその機能値を設定します。指定された情報は、`devicePool.features` クエリを使用して [IDT コンテキスト](idt-context.md)から、または `pool.features` クエリを使用して[ステートマシンコンテキスト](idt-state-machine.md#state-machine-context)から取得できます。    
**`features.name`**  
機能の名前。  
**`features.value`**  
サポートされている機能値。  
**`features.configs`**  
機能の構成設定 (必要な場合)。    
**`features.config.name`**  
構成設定の名前。  
**`features.config.value`**  
サポートされている設定値。

**`devices`**  
テスト対象のプール内のデバイスの配列。少なくとも 1 つのデバイスが必要です。    
**`devices.id`**  
テスト対象のデバイスのユーザー定義の一意の識別子。  
**`devices.pairedResource`**  
リソースデバイスに対してユーザーが定義した一意の識別子。この値は、`no-op` 接続プロトコルを使用してデバイスをテストする場合に必要です。  
**`connectivity.protocol`**  
このデバイスと通信するために使用される通信プロトコル。プール内の各デバイスは、同じプロトコルを使用する必要があります。  
現在、サポートされている値は、物理デバイスの場合は `ssh` と `uart`、Docker コンテナの場合は `docker`、IDT ホストマシンと直接接続されていないが、ホストマシンと通信するための物理ミドルウェアとしてリソースデバイスを必要とするデバイスの場合は `no-op` だけです。  
no-op デバイスの場合は、`devices.pairedResource` でリソースデバイス ID を設定します。この ID も `resource.json` ファイルで指定する必要があります。ペアリングするデバイスは、テスト対象のデバイスと物理的にペアリングされているデバイスである必要があります。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`**  
オプション。コンテナ内のユーザー名。デフォルト値は Dockerfile で指定されたユーザーです。  
デフォルト値は 22 です。  
このプロパティは、`connectivity.protocol` が `docker` に設定されている場合にのみ適用されます。
テストの実行者がテストに対して誤ったデバイス接続を構成しているかどうかを確認するには、ステートマシンコンテキストから `pool.Devices[0].Connectivity.Protocol` を取得し、この値を `Choice` ステート内の予想値と比較します。正しくないプロトコルが使用されている場合は、`LogMessage` ステートを使用してメッセージを出力し、`Fail` ステートに移行します。  
または、エラー処理コードを使用して、誤ったデバイスタイプによるテスト失敗をレポートすることもできます。

## (オプション) userdata.json の設定
<a name="userdata-config-custom"></a>

`userdata.json` ファイルには、`device.json` ファイルには指定されていない、テストスイートに必要とされる追加情報が含まれています。このファイルの形式は、テストスイートに定義されている [`userdata_scheme.json` ファイル](idt-json-config.md#userdata-schema-json)によって異なります。テストを作成するユーザーは、作成したテストスイートを実行するユーザーにこの情報を提供してください。

## (オプション) resource.json の設定
<a name="resource-config-custom"></a>

`resource.json` ファイルには、リソースデバイスとして使用されるすべてのデバイスに関する情報が含まれています。リソースデバイスは、テスト対象のデバイスの特定の機能をテストするために必要なデバイスです。例えば、デバイスの Bluetooth 機能をテストするには、リソースデバイスを使用して、デバイスがリソースデバイスに正常に接続できるかどうかをテストできます。リソースデバイスはオプションで、必要な数だけリソースデバイスを要求できます。テストを作成するユーザーは、[test.json ファイル](idt-json-config.md#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 ファイル](idt-json-config.md#test-json) に定義されています。この情報によって、実行するテストと、テストの実行方法が決まります。テストスイートに機能が必要ない場合は、このフィールドは必須ではありません。    
**`features.name`**  
機能の名前。  
**`features.version`**  
機能バージョン。  
**`features.jobSlots`**  
デバイスを同時に使用できるテストの数を示すための設定。デフォルト値は `1` です。

**`devices`**  <a name="device-array"></a>
テスト対象のプール内のデバイスの配列。少なくとも 1 つのデバイスが必要です。    
**`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`**  
オプション。コンテナ内のユーザー名。デフォルト値は Dockerfile で指定されたユーザーです。  
デフォルト値は 22 です。  
このプロパティは、`connectivity.protocol` が `docker` に設定されている場合にのみ適用されます。

## (オプション) config.json の設定
<a name="config-json-custom"></a>

`config.json` ファイルには、IDT 向けの設定情報が含まれています。通常、テストランナーは、IDT、およびオプションで AWS リージョンの AWS ユーザー認証情報を提供する場合を除き、このファイルを変更する必要はありません。必要なアクセス許可を持つ認証情報が提供されている場合、 AWS は使用状況メトリクスを AWS IoT Device Tester 収集して送信します AWS。これはオプトイン機能で、IDT 機能を改善するために使用されます。詳細については、「[IDT 使用状況メトリクスを送信する](idt-usage-metrics.md)」を参照してください。

テストランナーは、次のいずれかの方法で AWS 認証情報を設定できます。
+ **認証情報ファイル**

  IDT では、 AWS CLIと同じ認証情報ファイルが使用されます。詳細については、「[設定ファイルと認証情報ファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html)」を参照してください。

  認証情報ファイルの場所は、使用しているオペレーティングシステムによって異なります。
  + 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` に設定されている場合にのみ適用されます。