

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 테스트 실행기 설정 구성
<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`뿐입니다.  
비운영 디바이스의 경우 `devices.pairedResource`에서 리소스 디바이스 ID를 구성합니다. 또한 `resource.json` 파일에도 이 ID를 지정해야 합니다. 페어링된 디바이스는 테스트 대상 디바이스와 물리적으로 페어링된 디바이스여야 합니다. IDT가 페어링된 리소스 디바이스를 식별하여 연결한 후에는 `test.json` 파일에 설명된 기능에 따라 IDT가 다른 리소스 디바이스에 연결하지 않습니다.  
**`connectivity.ip`**  
테스트 대상 디바이스의 IP 입니다.  
이 속성은 `connectivity.protocol`이 `ssh`로 설정된 경우에만 적용됩니다.  
**`connectivity.port`**  
선택 사항. SSH 연결하는 데 사용하는 포트 번호입니다.  
기본값은 4입니다.  
이 속성은 `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에 제공된 사용자입니다.  
기본값은 4입니다.  
이 속성은 `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`**  
이러한 디바이스와 통신하는 데 사용되는 통신 프로토콜입니다. 풀의 각 디바이스는 동일한 프로토콜을 사용해야 합니다.  
현재 지원되는 값은 `uart` 물리적 디바이스의 경우 및, `docker` Docker 컨테이너의 경우 `ssh` 입니다.  
**`connectivity.ip`**  
테스트 대상 디바이스의 IP 입니다.  
이 속성은 `connectivity.protocol`이 `ssh`로 설정된 경우에만 적용됩니다.  
**`connectivity.port`**  
선택 사항. SSH 연결하는 데 사용하는 포트 번호입니다.  
기본값은 4입니다.  
이 속성은 `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에 제공된 사용자입니다.  
기본값은 4입니다.  
이 속성은 `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`로 설정된 경우에만 적용됩니다.