IDT 테스트 사례 실행 파일 생성 - 무료RTOS

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

IDT 테스트 사례 실행 파일 생성

다음과 같은 방법으로 테스트 제품군 폴더에 테스트 사례 실행 파일을 생성하고 배치할 수 있습니다.

  • test.json 파일의 인수 또는 환경 변수를 사용하여 실행할 테스트를 결정하는 테스트 제품군의 경우, 전체 테스트 제품군에 대해 단일 테스트 사례 실행 파일을 생성하거나 테스트 제품군의 각 테스트 그룹에 대해 테스트 실행 파일을 생성할 수 있습니다.

  • 지정된 명령을 기반으로 특정 테스트를 실행하려는 테스트 세트의 경우, 테스트 세트의 각 테스트 사례에 대해 테스트 사례 실행 파일을 하나씩 만듭니다.

테스트 작성자는 사용 사례에 적합한 접근 방식을 결정하고 그에 따라 테스트 사례 실행 파일을 구성할 수 있습니다. 각 test.json 파일에 올바른 테스트 케이스 실행 파일 경로를 제공하고 지정된 실행 파일이 올바르게 실행되는지 확인합니다.

모든 디바이스가 테스트 사례를 실행할 준비가 되면 는 다음 파일을 IDT 읽습니다.

  • 선택한 테스트 사례에 대한 test.json에 따라 시작할 프로세스와 설정할 환경 변수가 결정됩니다.

  • 테스트 제품군용 suite.json에 따라 설정할 환경 변수가 결정됩니다.

IDT 는 test.json 파일에 지정된 명령 및 인수를 기반으로 필요한 테스트 실행 가능 프로세스를 시작하고 필요한 환경 변수를 프로세스에 전달합니다.

IDT 클라이언트 사용 SDK

IDT 클라이언트를 SDKs 사용하면 상호 작용 IDT 및 테스트 중인 디바이스와 상호 작용할 수 있는 API 명령을 사용하여 테스트 실행 파일에 테스트 로직을 작성하는 방법을 단순화할 수 있습니다. IDT 는 현재 다음 를 제공합니다SDKs.

  • IDT PythonSDK용 클라이언트

  • IDT GoSDK용 클라이언트

  • IDT JavaSDK용 클라이언트

이는 <device-tester-extract-location>/sdks 폴더에 SDKs 있습니다. 새 테스트 사례 실행 파일을 생성할 때는 사용하려는 SDK 를 테스트 사례 실행 파일이 포함된 폴더에 복사하고 코드SDK에서 를 참조해야 합니다. 이 섹션에서는 테스트 사례 실행 파일에서 사용할 수 있는 API 명령에 대한 간략한 설명을 제공합니다.

장치 상호작용

다음 명령을 사용하면 추가 장치 상호 작용 및 연결 관리 기능을 구현하지 않고도 테스트 중인 장치와 통신할 수 있습니다.

ExecuteOnDevice

테스트 제품군이 SSH 또는 Docker 쉘 연결을 지원하는 디바이스에서 쉘 명령을 실행할 수 있도록 허용합니다.

CopyToDevice

테스트 제품군이 SSH 또는 Docker 쉘 연결을 지원하는 디바이스의 지정된 위치로 실행되는 호스트 시스템에서 로컬 파일을 복사IDT할 수 있습니다.

ReadFromDevice

UART 연결을 지원하는 디바이스의 직렬 포트에서 테스트 제품군을 읽을 수 있습니다.

참고

는 컨텍스트의 디바이스 액세스 정보를 사용하여 만든 디바이스에 대한 직접 연결을 관리IDT하지 않으므로 테스트 사례 실행 파일에서 이러한 디바이스 상호 작용 API 명령을 사용하는 것이 좋습니다. 그러나 이러한 명령이 테스트 사례 요구 사항을 충족하지 않는 경우 IDT 컨텍스트에서 디바이스 액세스 정보를 검색하고 이를 사용하여 테스트 제품군에서 디바이스에 직접 연결할 수 있습니다.

직접 연결하려면 테스트 중인 장치와 리소스 장치에 대해 각각 device.connectivityresource.devices.connectivity 필드에서 정보를 검색합니다. IDT 컨텍스트 사용에 대한 자세한 내용은 섹션을 참조하세요IDT 컨텍스트 사용.

IDT 상호 작용

다음 명령을 사용하면 테스트 제품군이 와 통신할 수 있습니다IDT.

PollForNotifications

테스트 제품군에서 의 알림을 확인할 수 있습니다IDT.

GetContextValue GetContextString

테스트 제품군이 IDT 컨텍스트에서 값을 검색할 수 있도록 허용합니다. 자세한 내용은 IDT 컨텍스트 사용 단원을 참조하십시오.

SendResult

테스트 제품군이 테스트 사례 결과를 에 보고할 수 있도록 허용합니다IDT. 이 명령은 테스트 세트의 각 테스트 케이스 끝에서 직접적으로 호출해야 합니다.

호스트 상호작용

다음 명령을 사용하면 테스트 세트가 호스트 머신과 통신할 수 있습니다.

PollForNotifications

테스트 제품군에서 의 알림을 확인할 수 있습니다IDT.

GetContextValueGetContextString

테스트 제품군이 IDT 컨텍스트에서 값을 검색할 수 있도록 허용합니다. 자세한 내용은 IDT 컨텍스트 사용 단원을 참조하십시오.

ExecuteOnHost

테스트 제품군이 로컬 시스템에서 명령을 실행하고 테스트 사례 실행 수명 주기를 IDT 관리할 수 있습니다.

IDT CLI 명령 활성화

run-suite 명령은 테스트 러너가 테스트 실행을 사용자 지정할 수 있는 여러 옵션을 IDT CLI 제공합니다. 테스트 러너가 이러한 옵션을 사용하여 사용자 지정 테스트 제품군을 실행할 수 있도록 하려면 IDT 에 대한 지원을 구현합니다CLI. 지원을 구현하지 않으면 테스트 러너는 여전히 테스트를 실행할 수 있지만 일부 CLI 옵션은 제대로 작동하지 않습니다. 이상적인 고객 경험을 제공하려면 IDT 에서 run-suite 명령에 대한 다음 인수에 대한 지원을 구현하는 것이 좋습니다CLI.

timeout-multiplier

테스트를 실행하는 동안 모든 제한 시간에 적용할 1.0보다 큰 값을 지정합니다.

테스트 실행기는 이 인수를 사용하여 실행하려는 테스트 사례의 제한 시간을 늘릴 수 있습니다. 테스트 러너가 run-suite 명령에서 이 인수를 지정하면 는 이 인수를 IDT 사용하여 IDT_TEST_TIMEOUT 환경 변수의 값을 계산하고 IDT 컨텍스트에서 config.timeoutMultiplier 필드를 설정합니다. 이 인수를 뒷받침하려면 다음을 수행하여야 합니다.

  • test.json 파일의 제한 시간 값을 직접 사용하는 대신 IDT_TEST_TIMEOUT 환경 변수를 읽고 올바르게 계산된 제한 시간 값을 얻습니다.

  • IDT 컨텍스트에서 config.timeoutMultiplier 값을 검색하여 장기 실행 제한 시간에 적용합니다.

제한 시간 이벤트로 인한 조기 종료에 대한 자세한 내용은 종료 동작을 지정합니다.을(를) 참조하세요.

stop-on-first-failure

오류가 발생하면 모든 테스트 실행을 중지IDT해야 할 을 지정합니다.

테스트 러너가 run-suite 명령에 이 인수를 지정하면 IDT는 실패가 발생하는 즉시 테스트 실행을 중지합니다. 그러나 테스트 케이스가 병렬로 실행되는 경우, 예상치 못한 결과가 발생할 수 있습니다. 지원을 구현하려면 이 이벤트가 IDT 발생하면 테스트 로직이 실행 중인 모든 테스트 사례를 중지하고 임시 리소스를 정리하고 테스트 결과를 에 보고하도록 지시해야 합니다IDT. 실패 시 조기 종료에 대한 자세한 내용은 종료 동작을 지정합니다. 섹션을 참조하세요.

group-idtest-id

선택한 테스트 그룹 또는 테스트 사례만 실행IDT해야 하는 을 지정합니다.

테스트 실행기는 run-suite 명령과 함께 이러한 인수를 사용하여 다음과 같은 테스트 실행 동작을 지정할 수 있습니다.

  • 지정된 테스트 제품군에 있는 모든 테스트 그룹을 실행합니다.

  • 지정된 테스트 그룹 내에서 엄선된 테스트를 실행합니다.

이러한 인수를 지원하려면 테스트 세트의 상태 머신이 상태 머신의 특정 RunTaskChoice 상태 세트를 포함해야 합니다. 사용자 지정 상태 시스템을 사용하지 않는 경우 기본 IDT 상태 시스템에 필요한 상태가 포함되어 있으므로 추가 작업을 수행할 필요가 없습니다. 하지만 사용자 지정 상태 머신을 사용하는 경우에는 상태 머신 예제: 사용자가 선택한 테스트 그룹 실행을(를) 샘플로 사용하여 상태 머신에 필요한 상태를 추가합니다.

IDT CLI 명령에 대한 자세한 내용은 섹션을 참조하세요사용자 지정 테스트 제품군 디버그 및 실행.

이벤트 로그 작성

테스트가 실행되는 동안 stdoutstderr에 데이터를 보내 콘솔에 이벤트 로그와 오류 메시지를 기록합니다. 콘솔 메시지의 형식에 대한 자세한 정보는 콘솔 메시지 형식에서 확인하세요.

가 테스트 제품군 실행을 IDT 완료하면 <devicetester-extract-location>/results/<execution-id>/logs 폴더에 있는 test_manager.log 파일에서도 이 정보를 사용할 수 있습니다.

테스트 대상 장치의 로그를 포함하여 테스트 실행의 로그를 <device-tester-extract-location>/results/execution-id/logs 폴더에 있는 <group-id>_<test-id> 파일에 기록하도록 각 테스트 사례를 구성할 수 있습니다. 이렇게 하려면 testData.logFilePath 쿼리를 사용하여 IDT 컨텍스트에서 로그 파일의 경로를 검색하고, 해당 경로에서 파일을 생성하고, 원하는 콘텐츠를 작성합니다. IDT 는 실행 중인 테스트 사례를 기반으로 경로를 자동으로 업데이트합니다. 테스트 사례에 대한 로그 파일을 만들지 않기로 선택하면 해당 테스트 사례에 대한 파일이 생성되지 않습니다.

필요에 따라 <device-tester-extract-location>/logs 폴더에 추가 로그 파일을 생성하도록 텍스트 실행 파일을 설정할 수도 있습니다. 파일을 덮어쓰지 않도록 로그 파일 이름에 고유한 접두사를 지정하는 것이 좋습니다.

에 결과 보고 IDT

IDT 는 awsiotdevicetester_report.xmlsuite-name_report.xml 파일에 테스트 결과를 기록합니다. 이 보고서 파일은 <device-tester-extract-location>/results/<execution-id>/에 위치합니다. 두 보고서 모두 테스트 세트의 실행 결과를 캡처합니다. 가 이러한 보고서에 IDT 사용하는 스키마에 대한 자세한 내용은 섹션을 참조하세요. IDT 테스트 결과 및 로그 검토

suite-name_report.xml 파일의 내용을 채우려면 테스트 실행이 완료되기 IDT 전에 SendResult 명령을 사용하여 테스트 결과를 에 보고해야 합니다. 가 테스트 결과를 찾을 IDT 수 없는 경우 테스트 사례에 오류가 발생합니다. 다음 Python 발췌문은 테스트 결과를 로 보내는 명령을 보여줍니다. IDT

request-variable = SendResultRequest(TestResult(result)) client.send_result(request-variable)

를 통해 결과를 보고하지 않으면 는 테스트 아티팩트 폴더에서 테스트 결과를 API IDT 찾습니다. 이 폴더의 경로는 IDT 컨텍스트에 testData.testArtifactsPath 저장된 에 저장됩니다. 이 폴더에서 는 테스트 결과로 찾은 첫 번째 알파벳순으로 정렬된 XML 파일을 IDT 사용합니다.

테스트 로직이 JUnit XML 결과를 생성하는 경우 결과를 구문 분석한 다음 를 사용하여 에 제출하는 IDT 대신 아티팩트 폴더의 XML 파일에 테스트 결과를 작성하여 API에 직접 결과를 제공할 수 있습니다IDT.

이 방법을 사용하는 경우, 테스트 로직이 테스트 결과를 정확하게 요약하고 결과 파일의 형식을 suite-name_report.xml 파일과 동일한 형식으로 지정해야 합니다. IDT 는 다음과 같은 경우를 제외하고 사용자가 제공하는 데이터의 검증을 수행하지 않습니다.

  • IDT 는 testsuites 태그의 모든 속성을 무시합니다. 대신 보고된 다른 테스트 그룹 결과에서 태그 속성을 계산합니다.

  • 하나 이상의 testsuite 태그가 testsuites 내에 있어야 합니다.

는 모든 테스트 사례에 동일한 아티팩트 폴더를 IDT 사용하고 테스트 실행 간에 결과 파일을 삭제하지 않으므로 가 잘못된 파일을 IDT 읽으면 잘못된 보고가 발생할 수도 있습니다. 모든 테스트 사례에서 생성된 XML 결과 파일에 동일한 이름을 사용하여 각 테스트 사례에 대한 결과를 덮어쓰고 올바른 결과를 IDT 사용할 수 있는지 확인하는 것이 좋습니다. 테스트 제품군에서 보고에 혼합 접근 방식을 사용할 수 있지만, 즉 일부 테스트 사례에는 XML 결과 파일을 사용하고 다른 사례에API는 를 통해 결과를 제출할 수 있지만 이 접근 방식은 권장하지 않습니다.

종료 동작을 지정합니다.

테스트 케이스에서 실패 또는 오류 결과가 보고되더라도 텍스트 실행 파일이 항상 종료 코드 0으로 종료되도록 구성합니다. 0이 아닌 종료 코드만 사용하여 테스트 사례가 실행되지 않았거나 테스트 사례 실행 파일이 결과를 에 전달할 수 없음을 나타냅니다IDT. 가 0이 아닌 종료 코드를 IDT 수신하면 테스트 사례에서 실행을 방해하는 오류가 발생했음을 나타냅니다.

IDT 는 다음 이벤트에서 테스트 사례가 완료되기 전에 테스트 사례 실행을 중지하도록 요청하거나 예상할 수 있습니다. 이 정보를 사용하여 테스트 케이스에서 이러한 각 이벤트를 감지하도록 테스트 케이스 실행 파일을 구성합니다.

제한 시간

테스트 케이스가 test.json 파일에 지정된 제한 시간 값보다 오래 실행될 때 발생합니다. 테스트 러너가 timeout-multiplier 인수를 사용하여 제한 시간 승수를 지정한 경우 는 승수를 사용하여 제한 시간 값을 IDT 계산합니다.

이 이벤트를 감지하려면 IDT_TEST_TIMEOUT 환경 변수를 사용합니다. 테스트 러너가 테스트를 시작하면 IDT_TEST_TIMEOUT 환경 변수의 값을 계산된 제한 시간 값(초)으로 IDT 설정하고 변수를 테스트 사례 실행 파일에 전달합니다. 변수 값을 읽어 적절한 타이머를 설정할 수 있습니다.

인터럽트

테스트 러너가 를 중단하면 발생합니다IDT. 예를 들어, Ctrl+C 키를 누르면 됩니다.

터미널은 신호를 모든 하위 프로세스에 전파하므로 인터럽트 신호를 감지하도록 테스트 케이스에 신호 처리기를 구성하기만 하면 됩니다.

또는 주기적으로 CancellationRequested 폴링API하여 PollForNotifications API 응답에서 부울 값을 확인할 수 있습니다. 가 인터럽트 신호를 IDT 수신하면 CancellationRequested 부울 값을 로 설정합니다true.

첫 번째 실패 시 중지

현재 테스트 사례와 병렬로 실행 중인 테스트 사례가 실패하고 테스트 러너가 stop-on-first-failure 인수를 사용하여 장애가 발생할 때 가 중지IDT해야 할 를 지정하는 경우에 발생합니다.

이 이벤트를 감지하려면 주기적으로 CancellationRequested 폴링API하여 PollForNotifications API 응답에서 부울 값을 확인할 수 있습니다. 에 장애가 IDT 발생하고 가 첫 번째 장애 시 중지하도록 구성된 경우 CancellationRequested 부울 값을 로 설정합니다true.

이러한 이벤트가 발생하면 는 현재 실행 중인 테스트 사례의 실행이 완료될 때까지 5분 동안 IDT 기다립니다. 실행 중인 모든 테스트 사례가 5분 이내에 종료되지 않으면 IDT는 각 프로세스를 강제로 중지합니다. 프로세스가 종료되기 전에 IDT 가 테스트 결과를 수신하지 못하면 테스트 사례가 시간 초과된 것으로 표시됩니다. 가장 좋은 방법은 테스트 케이스에서 이벤트 중 하나가 발생할 때 다음 작업을 수행하도록 하는 것입니다.

  1. 일반 테스트 로직 실행을 중단합니다.

  2. 테스트 대상 장치의 테스트 아티팩트와 같은 임시 리소스를 모두 정리합니다.

  3. 테스트 실패 또는 오류IDT와 같은 테스트 결과를 에 보고합니다.

  4. 종료합니다.