튜토리얼: Greengrass end-to-end 테스트 프레임워크 및 Greengrass 개발 키트를 사용하여 테스트 실행 - AWS IoT Greengrass

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

튜토리얼: Greengrass end-to-end 테스트 프레임워크 및 Greengrass 개발 키트를 사용하여 테스트 실행

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

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

  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

    이 명령은 디렉터리 gg-e2e-tests 내에 이름이 지정된 새 디렉터리를 만듭니다. HelloWorld 이 테스트 디렉토리는 Greengrass 테스트 독립형 JAR에 종속되는 Maven 프로젝트입니다.

3단계: 사용자 지정 테스트 케이스 만들기

사용자 지정 테스트 사례 작성은 크게 두 단계로 구성됩니다. 테스트 시나리오가 포함된 기능 파일을 만들고 단계 정의를 구현하는 단계입니다. 사용자 지정 테스트 케이스를 만드는 예제는 을 참조하십시오예: 사용자 지정 테스트 케이스 만들기. 다음 단계를 사용하여 사용자 지정 테스트 케이스를 빌드하세요.

  1. 테스트 시나리오가 포함된 기능 파일 만들기

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

  2. 단계 정의를 구현하십시오.

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

4단계: 새 테스트 케이스에 태그 추가

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

    이 예시에서는 HelloWorld 컴포넌트를 사용하고 있습니다.

    기능 파일에서 태그 @HelloWorld 옆에 이름이 지정된 새 태그를 추가합니다. @Sample

    @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 사용하여 이름이 지정된 새 구성 요소가 생성됩니다. 그런 다음 Greengrass 사물 배포를 통해 HelloWorld 구성 요소를 코어 장치에 배포합니다. 그런 다음 배포가 성공했는지 여부를 확인합니다. 배포가 성공하면 배포 상태가 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 핵의 최신 버전을 다운로드하고 이를 사용하여 테스트를 실행합니다. 또한 이 명령은 HelloWorld 태그가 있는 시나리오만 대상으로 하고 해당 시나리오에 대한 보고서를 생성합니다. 이 테스트 중에 생성된 AWS 리소스는 테스트가 끝나면 삭제되는 것을 확인할 수 있습니다.

예: 사용자 지정 테스트 케이스 만들기

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

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

  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 "); }