자습서: Greengrass 테스트 프레임워크 및 Greengrass 개발 키트를 사용하여 테스트 실행 end-to-end - AWS IoT Greengrass

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

자습서: Greengrass 테스트 프레임워크 및 Greengrass 개발 키트를 사용하여 테스트 실행 end-to-end

AWS IoT Greengrass 테스트 프레임워크(GTF) 및 Greengrass 개발 키트(GDK)는 개발자에게 테스트를 실행하는 end-to-end 방법을 제공합니다. 이 자습서를 완료하여 구성 요소로 GDK 프로젝트를 초기화하고, 테스트 모듈로 GDK end-to-end 프로젝트를 초기화하고, 사용자 지정 테스트 사례를 빌드할 수 있습니다. 사용자 지정 테스트 사례를 빌드하면 테스트를 실행할 수 있습니다.

이 자습서에서는 다음을 수행합니다.

  1. 구성 요소로 GDK 프로젝트를 초기화합니다.

  2. 테스트 모듈로 GDK 프로젝트를 초기화합니다 end-to-end.

  3. 사용자 지정 테스트 사례를 빌드합니다.

  4. 새 테스트 사례에 태그를 추가합니다.

  5. 테스트를 빌드합니다JAR.

  6. 테스트를 실행합니다.

사전 조건

이 자습서를 완료하려면 다음이 필요합니다.

  • GDK 버전 1.3.0 이상

  • Java

  • Maven

  • Git

1단계: 구성 요소로 GDK 프로젝트 초기화

  • GDK 프로젝트로 빈 폴더를 초기화합니다. 다음 명령을 실행하여 Python에서 구현된 HelloWorld 구성 요소를 다운로드합니다.

    gdk component init -t HelloWorld -l python -n HelloWorld

    이 명령은 현재 디렉터리에 HelloWorld라는 이름의 디렉터리를 생성합니다.

2단계: 테스트 모듈로 GDK end-to-end 프로젝트 초기화

  • GDK를 사용하면 기능 및 단계 구현으로 구성된 테스트 모듈 템플릿을 다운로드할 수 있습니다. 다음 명령을 실행하여 HelloWorld 디렉터리를 열고 테스트 모듈을 사용하여 기존 GDK 프로젝트를 초기화합니다.

    cd HelloWorld gdk test-e2e init

    이 명령은 HelloWorld 디렉터리 내에 gg-e2e-tests라는 이름의 디렉터리를 생성합니다. 이 테스트 디렉터리는 Greengrass 테스트 독립 실행형에 의존하는 Maven 프로젝트입니다JAR.

3단계: 사용자 지정 테스트 사례 빌드

사용자 지정 테스트 사례 작성은 크게 테스트 시나리오가 포함된 기능 파일을 생성하고 단계 정의를 구현하는 두 단계로 구성됩니다. 사용자 지정 테스트 사례를 빌드하는 예제는 예: 사용자 지정 테스트 사례 빌드 섹션을 참조하세요. 다음 단계에 따라 사용자 지정 테스트 사례를 빌드합니다.

  1. 테스트 시나리오를 사용하여 기능 파일 생성

    기능은 일반적으로 테스트 중인 소프트웨어의 특정 기능을 설명합니다. Cucumber에서 각 기능은 제목, 자세한 설명, 시나리오라고 하는 특정 사례의 하나 이상의 예제를 포함하는 개별 기능 파일로 지정됩니다. 각 시나리오는 제목, 자세한 설명, 상호 작용, 예상 결과를 정의하는 일련의 단계로 구성됩니다. 시나리오는 “given”, “when”, “then” 키워드를 사용하여 구조화된 형식으로 작성됩니다.

  2. 단계 정의 구현

    단계 정의는 일반적인 언어로 작성된 Gherkin 단계를 프로그래밍 코드에 연결합니다. Cucumber가 시나리오에서 Gherkin 단계를 식별하면 실행할 일치하는 단계 정의를 찾습니다.

4단계: 새 테스트 사례에 태그 추가

  • 기능 및 시나리오에 태그를 할당하여 테스트 프로세스를 구성할 수 있습니다. 태그를 사용하여 시나리오의 하위 세트를 분류하며 실행할 후크를 조건부로 선택할 수도 있습니다. 특성과 시나리오에는 공백으로 구분된 여러 태그가 있을 수 있습니다.

    이 예제에서는 HelloWorld 구성 요소를 사용합니다.

    기능 파일에서 @Sample 태그 옆에 @HelloWorld라는 이름의 새 태그를 추가합니다.

    @Sample @HelloWorld Scenario: As a developer, I can create a component and deploy it on my device ....

5단계: 테스트 빌드 JAR

  1. 구성 요소를 빌드합니다. 테스트 모듈을 빌드하기 전에 구성 요소를 빌드해야 합니다.

    gdk component build
  2. 다음 명령을 사용하여 테스트 모듈을 빌드합니다. 이 명령은 greengrass-build 폴더에 테스트를 빌드JAR합니다.

    gdk test-e2e build

6단계: 테스트 실행

사용자 지정 테스트 사례를 실행하면는 테스트 중에 생성된 리소스 관리와 함께 테스트 수명 주기를 GTF 자동화합니다. 먼저 테스트 중인 디바이스(DUT)를 AWS IoT 사물로 프로비저닝하고 Greengrass 코어 소프트웨어를 설치합니다. 그러면 해당 경로에 지정된 레시피를 사용하여 HelloWorld라는 새 구성 요소가 생성됩니다. 그런 다음에 HelloWorld 구성 요소가 Greengrass 사물 배포를 통해 코어 디바이스에 배포됩니다. 그러면 배포되었는지 확인됩니다. 배포되면 3분 이내에 배포 상태가 COMPLETED로 변경됩니다.

  1. 프로젝트 디렉터리의 gdk-config.json 파일로 이동하여 HelloWorld 태그로 테스트를 대상으로 지정합니다. 다음 명령을 사용하여 test-e2e 키를 업데이트합니다.

    "test-e2e":{ "gtf_options" : { "tags":"HelloWorld" } }
  2. 테스트를 실행하기 전에 호스트 디바이스에 AWS 자격 증명을 제공해야 합니다. GTF는 이러한 자격 증명을 사용하여 테스트 프로세스 중에 AWS 리소스를 관리합니다. 테스트에 포함된 필수 작업을 자동화할 수 있는 권한이 제공한 역할에 있는지 확인합니다.

    다음 명령을 실행하여 AWS 자격 증명을 제공합니다.

    1. Linux or Unix
      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      Windows Command Prompt (CMD)
      set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      PowerShell
      $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
  3. 다음 명령을 사용하여 테스트를 실행합니다.

    gdk test-e2e run

    이 명령은 greengrass-build 폴더에 최신 버전의 Greengrass nucleus를 다운로드하고 이를 사용하여 테스트를 실행합니다. 또한 이 명령에서는 HelloWorld 태그가 있는 시나리오만 대상이 되고 해당 시나리오에 대한 보고서가 생성됩니다. 이 테스트 중에 생성된 AWS 리소스는 테스트가 끝날 때 삭제됩니다.

예: 사용자 지정 테스트 사례 빌드

GDK 프로젝트에서 다운로드한 테스트 모듈은 샘플 기능과 단계 구현 파일로 구성됩니다.

다음 예제에서는 Greengrass 소프트웨어의 사물 배포 기능을 테스트하기 위한 기능 파일을 생성합니다. Greengrass AWS 클라우드를 통해 구성 요소를 배포하는 시나리오를 사용하여 이 특성의 기능을 부분적으로 테스트합니다. 이는 해당 사용 사례의 상호 작용과 예상 결과를 이해하는 데 도움이 되는 일련의 단계입니다.

  1. 기능 파일 생성

    현재 디렉터리의 gg-e2e-tests/src/main/resources/greengrass/features 폴더로 이동합니다. 다음 예제처럼 보이는 component.feature 샘플을 찾을 수 있습니다.

    이 기능 파일에서 Greengrass 소프트웨어의 사물 배포 기능을 테스트할 수 있습니다. Greengrass 클라우드를 통해 구성 요소를 배포하는 시나리오를 사용하여 이 특성의 기능을 부분적으로 테스트할 수 있습니다. 시나리오는 이 사용 사례의 상호 작용과 예상 결과를 이해하는 데 도움이 되는 일련의 단계입니다.

    Feature: Testing features of Greengrassv2 component Background: Given my device is registered as a Thing And my device is running Greengrass @Sample Scenario: As a developer, I can create a component and deploy it on my device When I create a Greengrass deployment with components HelloWorld | /path/to/recipe/file And I deploy the Greengrass deployment configuration Then the Greengrass deployment is COMPLETED on the device after 180 seconds And I call my custom step

    GTF 에는 라는 단계를 제외하고 다음 모든 단계의 단계 정의가 포함되어 있습니다And I call my custom step.

  2. 단계 정의 구현

    GTF 독립 실행형 에는 한 단계인를 제외한 모든 단계의 단계 정의가 JAR 포함되어 있습니다And I call my custom step. 이 단계는 테스트 모듈에서 구현할 수 있습니다.

    테스트 파일의 소스 코드로 이동합니다. 다음 명령으로 단계 정의를 사용하여 사용자 지정 단계를 연결할 수 있습니다.

    @And("I call my custom step") public void customStep() { System.out.println("My custom step was called "); }