View a markdown version of this page

IDT 컨텍스트 사용 - FreeRTOS

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

IDT 컨텍스트 사용

IDT가 테스트 도구 모음을 실행할 때, 테스트 도구 모음은 각 테스트 실행 방식을 결정하는 데 사용할 수 있는 데이터 세트에 액세스할 수 있습니다. 이 데이터를 IDT 컨텍스트라고 합니다. 예를 들어 테스트 러너가 userdata.json 파일로 제공한 사용자 데이터 구성은 IDT 컨텍스트의 테스트 도구 모음에서 사용할 수 있도록 만들어졌습니다.

IDT 컨텍스트는 읽기 전용 JSON 문서로 간주할 수 있습니다. 테스트 도구 모음은 객체, 배열, 숫자 등과 같은 표준 JSON 데이터 유형을 사용하여 컨텍스트에서 데이터를 검색하고, 컨텍스트에 데이터를 쓸 수 있습니다.

컨텍스트 스키마

IDT 컨텍스트는 다음 형식을 사용합니다.

{ "config": { <config-json-content> "timeoutMultiplier": timeout-multiplier, "idtRootPath": <path/to/IDT/root> }, "device": { <device-json-device-element> }, "devicePool": { <device-json-pool-element> }, "resource": { "devices": [ { <resource-json-device-element> "name": "<resource-name>" } ] }, "testData": { "awsCredentials": { "awsAccessKeyId": "<access-key-id>", "awsSecretAccessKey": "<secret-access-key>", "awsSessionToken": "<session-token>" }, "logFilePath": "/path/to/log/file" }, "userData": { <userdata-json-content> } }
config

config.json 파일의 정보입니다. config 필드에는 다음과 같은 추가 필드도 포함됩니다.

config.timeoutMultiplier

테스트 제품군에서 사용하는 모든 시간 제한 값의 승수입니다. 이 값은 IDT CLI에서 테스트 러너에 의해 지정됩니다. 기본값은 1입니다.

config.idRootPath

이 값은 userdata.json 파일을 구성하는 동안 IDT의 절대 경로 값을 나타내는 자리 표시자입니다. 빌드 및 플래시 명령에서 사용됩니다.

device

테스트 실행을 위해 선택한 디바이스에 대한 정보입니다. 이 정보는 선택한 디바이스의 device.json 파일에 있는 devices 배열 요소와 동일합니다.

devicePool

테스트 실행을 위해 선택한 디바이스 풀에 대한 정보. 이 정보는 선택한 디바이스 풀에 대해 device.json 파일에 정의된 최상위 디바이스 풀 배열 요소와 동일합니다.

resource

resource.json 파일의 리소스 디바이스에 대한 정보.

resource.devices

이 정보는 resource.json 파일에 정의된 devices 배열과 동일합니다. 각 devices 요소에는 다음과 같은 추가 필드가 포함됩니다.

resource.device.name

리소스 디바이스의 이름입니다. 이 값은 test.json 파일의 requiredResource.name 값으로 설정됩니다.

testData.awsCredentials

테스트에서 클라우드에 연결하는 데 사용하는 AWS 자격 증명입니다 AWS . 이 정보는 config.json 파일에서 가져옵니다.

testData.logFilePath

테스트 사례가 로그 메시지를 기록하는 로그 파일의 경로입니다. 이 파일이 존재하지 않는 경우 테스트 도구 모음에서 해당 파일을 생성합니다.

userData

테스트 러너가 userdata.json 파일에서 제공한 정보.

컨텍스트에서 데이터 액세스

GetContextValue 및 GetContextString API를 사용하여 구성 파일 및 텍스트 실행 파일에서 JSONPath 표기법을 사용해 컨텍스트를 쿼리할 수 있습니다. IDT 컨텍스트에 액세스하기 위한 JSONPath 문자열의 구문은 다음과 같이 다양합니다.

  • suite.json와(과) test.json에서는 {{query}}을(를) 사용합니다. 즉, 루트 요소 $.을(를) 사용하여 표현식을 시작하지 마십시오.

  • statemachine.json에서는 {{$.query}}을(를) 사용합니다.

  • API 명령에서는 명령에 따라 query 또는 {{$.query}}을(를) 사용합니다. 자세한 내용을 알아보려면 SDK에서 인라인 설명서를 참조하세요.

다음 표에서는 일반적인 foobar JSONPath 표현식의 연산자를 설명합니다.

연산자 설명
$ 루트 요소. IDT의 최상위 컨텍스트 값은 객체이므로 일반적으로 $.를 사용하여 쿼리를 시작합니다.
.childName 객체의 이름 childName을 사용하여 하위 요소에 액세스합니다. 배열에 적용하면 이 연산자가 각 요소에 적용된 새 배열이 생성됩니다. 요소 이름은 대/소문자를 구분합니다. 예를 들어, config 객체의 awsRegion 값에 액세스하기 위한 쿼리는 $.config.awsRegion입니다.
[start:end] 배열에서 요소를 필터링하여 start 인덱스부터 end 인덱스까지의 항목을 검색합니다.
[index1, index2, ... , indexN] 배열에서 요소를 필터링하여 지정된 인덱스에서만 항목을 검색합니다.
[?(expr)] expr 표현식을 사용하여 배열에서 요소를 필터링합니다. 이 표현식은 부울 값으로 평가되어야 합니다.

필터 표현식을 생성하려면 다음 구문을 사용합니다.

<jsonpath> | <value> operator <jsonpath> | <value>

이 구문에서:

  • jsonpath은(는) 표준 JSON 구문을 사용하는 JSONPath입니다.

  • value은(는) 표준 JSON 구문을 사용하는 모든 사용자 지정 값입니다.

  • operator는 다음 작업 중 하나를 호출합니다.

    • < (미만)

    • <= (이하)

    • == (같음)

      표현식의 JSONPath 또는 값이 배열, 부울 또는 객체 값인 경우 이것이 사용할 수 있는 유일하게 지원되는 바이너리 연산자입니다.

    • >= (이상)

    • > (초과)

    • =~(정규 표현식 일치). 필터 표현식에서 이 연산자를 사용하려면 표현식 왼쪽의 JSONPath 또는 값이 문자열로 평가되어야 하고, 오른쪽은 RE2 구문을 따르는 패턴 값이어야 합니다.

{{query}} 형식의 JSONPath 쿼리를 test.json 파일의 args 및 environmentVariables 필드, suite.json 파일의 environmentVariables 필드 내에서 자리 표시자 문자열로 사용할 수 있습니다. IDT는 컨텍스트 조회를 수행하고 쿼리의 평가된 값으로 필드를 채웁니다. 예를 들어 suite.json 파일에서 자리 표시자 문자열을 사용하여 각 테스트 사례에 따라 변경되는 환경 변수 값을 지정할 수 있으며, IDT는 환경 변수를 각 테스트 사례에 맞는 값으로 채웁니다. 하지만 test.json 및 suite.json 파일에서 자리 표시자 문자열을 사용하는 경우 쿼리에 다음 사항을 고려해야 합니다.

  • 쿼리에서 나타나는 devicePool 키는 모두 소문자로 입력해야 합니다. 즉, devicepool을(를) 대신 사용하십시오.

  • 배열의 경우 문자열 배열만 사용할 수 있습니다. 또한 배열은 비표준 item1, item2,...,itemN 형식을 사용합니다. 배열에 요소가 하나만 포함된 경우 이 배열은 item(으)로 직렬화되어 문자열 필드와 구분할 수 없게 됩니다.

  • 자리 표시자를 사용하여 컨텍스트에서 객체를 검색할 수 없습니다.

이러한 고려 사항 때문에 가능하면 test.json 및 suite.json 파일의 자리 표시자 문자열 대신 API를 사용하여 테스트 로직의 컨텍스트에 액세스하는 것이 좋습니다. 하지만 경우에 따라 JSONPath 자리 표시자를 사용하여 단일 문자열을 가져와서 환경 변수로 설정하는 것이 더 편리할 수 있습니다.