Tutorial: Execute end-to-end testes usando o Greengrass Testing Framework e o Greengrass Development Kit - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: Execute end-to-end testes usando o Greengrass Testing Framework e o Greengrass Development Kit

AWS IoT GreengrassO Testing Framework (GTF) e o Greengrass Development Kit (GDK) oferecem aos desenvolvedores maneiras de executar testes. end-to-end Você pode concluir este tutorial para inicializar um projeto do GDK com um componente, inicializar um projeto do GDK com um módulo de end-to-end teste e criar um caso de teste personalizado. Depois de criar seu caso de teste personalizado, você poderá executar o teste.

Neste tutorial, você faz o seguinte:

  1. Inicialize um projeto do GDK com um componente.

  2. Inicialize um projeto GDK com um módulo de end-to-end teste.

  3. Crie um caso de teste personalizado.

  4. Adicione uma tag ao novo caso de teste.

  5. Crie o JAR de teste.

  6. Execute o teste do .

Pré-requisitos

Para concluir este tutorial, você precisará do seguinte:

  • GDK versão 1.3.0 ou posterior

  • Java

  • Maven

  • Git

Etapa 1: inicializar um projeto do GDK com um componente

  • Inicialize uma pasta vazia com um projeto do GDK. Faça o download do HelloWorld componente implementado em Python executando o comando a seguir.

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

    Esse comando cria um novo diretório nomeado HelloWorld no diretório atual.

Etapa 2: inicializar um projeto do GDK com um end-to-end módulo de teste

  • O GDK permite que você baixe o modelo do módulo de teste que consiste em uma implementação de recursos e etapas. Execute o comando a seguir para abrir o HelloWorld diretório e inicializar o projeto GDK existente usando um módulo de teste.

    cd HelloWorld gdk test-e2e init

    Esse comando cria um novo diretório chamado gg-e2e-tests dentro do HelloWorld diretório. Esse diretório de teste é um projeto Maven que depende do JAR independente de testes do Greengrass.

Etapa 3: criar um caso de teste personalizado

Escrever um caso de teste personalizado consiste basicamente em duas etapas: criar um arquivo de recurso com um cenário de teste e implementar as definições das etapas. Para ver um exemplo de criação de um caso de teste personalizado, consulteExemplo: criar um caso de teste personalizado. Use as etapas a seguir para criar seu caso de teste personalizado:

  1. Crie um arquivo de recurso com um cenário de teste

    Um recurso geralmente descreve uma funcionalidade específica do software que está sendo testado. No Cucumber, cada recurso é especificado como um arquivo de recurso individual com um título, uma descrição detalhada e um ou mais exemplos de casos específicos chamados cenários. Cada cenário consiste em um título, uma descrição detalhada e uma série de etapas que definem as interações e os resultados esperados. Os cenários são escritos em um formato estruturado usando as palavras-chave “determinado”, “quando” e “então”.

  2. Implementar definições de etapas

    Uma definição de etapa vincula a etapa Gherkin em linguagem simples ao código programático. Quando o Cucumber identifica uma etapa do Gherkin em um cenário, ele procura uma definição de etapa correspondente para ser executada.

Etapa 4: adicionar uma tag ao novo caso de teste

  • Você pode atribuir tags aos recursos e cenários para organizar o processo de teste. Você pode usar tags para categorizar os subconjuntos de cenários e também selecionar ganchos condicionalmente para execução. Os recursos e cenários podem ter várias tags separadas por um espaço.

    Neste exemplo, estamos usando o HelloWorld componente.

    No arquivo de recurso, adicione uma nova tag chamada @HelloWorld ao lado da @Sample tag.

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

Etapa 5: criar o JAR de teste

  1. Crie o componente. Você deve criar o componente antes de criar o módulo de teste.

    gdk component build
  2. Crie o módulo de teste usando o comando a seguir. Esse comando criará o JAR de teste na greengrass-build pasta.

    gdk test-e2e build

Etapa 6: executar o teste

Quando você executa um caso de teste personalizado, o GTF automatiza o ciclo de vida do teste junto com o gerenciamento de recursos que foram criados durante o teste. Primeiro, ele provisiona um dispositivo em teste (DUT) como uma AWS IoT coisa e instala o software principal do Greengrass nele. Em seguida, ele criará um novo componente chamado HelloWorld usando a receita especificada nesse caminho. O HelloWorld componente é então implantado no dispositivo principal por meio de uma implantação do Greengrass Thing. Em seguida, será verificado se a implantação foi bem-sucedida. O status da implantação será alterado para COMPLETED dentro de 3 minutos se a implantação for bem-sucedida.

  1. Acesse o gdk-config.json arquivo no diretório do projeto para direcionar os testes com a HelloWorld tag. Atualize a test-e2e chave usando o comando a seguir.

    "test-e2e":{ "gtf_options" : { "tags":"HelloWorld" } }
  2. Antes de executar os testes, você deve fornecer AWS credenciais para o dispositivo host. O GTF usa essas credenciais para gerenciar os AWS recursos durante o processo de teste. Certifique-se de que a função fornecida tenha permissões para automatizar as operações necessárias incluídas no teste.

    Execute os comandos a seguir para fornecer as AWS credenciais.

    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. Execute o teste usando o comando a seguir.

    gdk test-e2e run

    Esse comando baixa a versão mais recente do núcleo do Greengrass na greengrass-build pasta e executa testes usando-a. Esse comando também visa somente os cenários com a HelloWorld tag e gera um relatório para esses cenários. Você verá que os AWS recursos criados durante esse teste serão descartados no final do teste.

Exemplo: criar um caso de teste personalizado

O módulo de teste baixado no projeto GDK consiste em um recurso de amostra e um arquivo de implementação de etapas.

No exemplo a seguir, criamos um arquivo de recurso para testar o recurso de implantação do software Greengrass. Testamos parcialmente a funcionalidade desse recurso com um cenário que executa a implantação de um componente por meio do GreengrassNuvem AWS. Essa é uma série de etapas que nos ajudam a entender as interações e os resultados esperados desse caso de uso.

  1. Criar um arquivo de recurso

    Navegue até a gg-e2e-tests/src/main/resources/greengrass/features pasta no diretório atual. Você pode encontrar a amostra component.feature que se parece com o exemplo a seguir.

    Nesse arquivo de recurso, você pode testar o recurso de implantação do software Greengrass. Você pode testar parcialmente a funcionalidade desse recurso com um cenário que executa a implantação de um componente por meio da nuvem Greengrass. O cenário é uma série de etapas que ajudam a entender as interações e os resultados esperados desse caso de uso.

    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

    O GTF contém as definições de etapas de todas as etapas a seguir, exceto a etapa chamada:And I call my custom step.

  2. Implementar definições de etapas

    O JAR autônomo do GTF contém as definições de etapas de todas as etapas, exceto de uma etapa:. And I call my custom step Você pode implementar essa etapa no módulo de teste.

    Navegue até o código-fonte do arquivo de teste. Você pode vincular sua etapa personalizada usando uma definição de etapa usando o comando a seguir.

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