

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Utilice el marco AWS IoT Greengrass de pruebas
<a name="gg-testing-framework"></a>

Greengrass Testing Framework (GTF) es un conjunto de componentes básicos que respaldan la end-to-end automatización desde la perspectiva del cliente. GTF utiliza [Cucumber como motor](https://cucumber.io) de funciones. AWS IoT Greengrass utiliza los mismos componentes básicos para calificar los cambios de software en varios dispositivos. Para obtener más información, consulte [Greengrass Testing Framework en Github](https://github.com/aws-greengrass/aws-greengrass-testing/tree/dev_v1).

El GTF se implementa con Cucumber, una herramienta que se utiliza para ejecutar pruebas automatizadas, a fin de fomentar un desarrollo impulsado por el comportamiento (BDD) de los componentes. En Cucumber, las características de este sistema se describen en un tipo especial de archivo llamado `feature`. Cada característica se describe en un formato legible por humanos llamado escenarios, que son especificaciones que se pueden convertir en pruebas automatizadas. Cada escenario se describe como una serie de pasos que definen las interacciones y los resultados del sistema que se está probando con un lenguaje de dominio específico llamado Gherkin. Un [paso de Gherkin](https://cucumber.io/docs/gherkin/reference/#steps) se vincula al código de programación mediante un método llamado definición de pasos que conecta la especificación al flujo de prueba. Las definiciones de pasos en GTF se implementan con Java.

**Topics**
+ [Funcionamiento](#gg-testing-framework-how-gtf-works)
+ [Registros de cambios](#gtf-changelog)
+ [Opciones de configuración de Greengrass Testing Framework](configuration-options-gtf.md)
+ [Tutorial: Ejecute end-to-end pruebas con Greengrass Testing Framework y Greengrass Development Kit](run-e2e-tests-tutorial.md)
+ [Tutorial: Uso de una prueba de confianza del conjunto de pruebas de confianza](confidence-tests-tutorial.md)

## Funcionamiento
<a name="gg-testing-framework-how-gtf-works"></a>

AWS IoT Greengrass distribuye el GTF como un JAR independiente que consta de varios módulos de Java. Para utilizar el GTF para end-to-end probar componentes, debe implementar las pruebas en un proyecto de Java. Agregar el JAR compatible con las pruebas como dependencia en el proyecto de Java le permite utilizar la funcionalidad existente del GTF y ampliarla mediante la escritura de sus propios casos de prueba personalizados. Para ejecutar los casos de prueba personalizados, puede crear el proyecto Java y ejecutar el JAR de destino con las opciones de configuración que se describen en [Opciones de configuración de Greengrass Testing Framework](configuration-options-gtf.md).

### JAR independiente del GTF
<a name="w2ab1c24c19c25c11b5"></a>

Greengrass utiliza Cloudfront como repositorio de [Maven](https://maven.apache.org/) para alojar diferentes versiones del JAR independiente del GTF. Para obtener una lista completa de las versiones del GTF, consulte los [lanzamientos de GTF](https://github.com/aws-greengrass/aws-greengrass-testing/releases).

El JAR independiente del GTF incluye los siguientes módulos. No se limita solo a estos módulos. Puede seleccionar cada una de estas dependencias por separado en su proyecto o incluirlas todas a la vez en el [archivo JAR independiente de prueba](https://github.com/aws-greengrass/aws-greengrass-testing/tree/dev_v1/aws-greengrass-testing-standalone).
+ `aws-greengrass-testing-resources`: Este módulo proporciona una abstracción para gestionar el ciclo de vida de un AWS recurso durante el transcurso de una prueba. Puedes usarlo para definir tus AWS recursos personalizados mediante la `ResourceSpec` abstracción, de modo que GTF pueda encargarse de crear y eliminar esos recursos por ti.
+ `aws-greengrass-testing-platform`: este módulo proporciona una abstracción en la plataforma para el dispositivo que se prueba durante el ciclo de vida de la prueba. Contiene una herramienta APIs para interactuar con el sistema operativo independientemente de la plataforma y se puede utilizar para simular los comandos que se ejecutan en la consola del dispositivo.
+ `aws-greengrass-testing-components`: este módulo consta de componentes de muestra que se utilizan para probar las características principales de Greengrass, como las implementaciones, el IPC y otras características.
+ `aws-greengrass-testing-features`: este módulo consta de pasos comunes reutilizables y las definiciones que se utilizan para realizar pruebas en el entorno de Greengrass.

**Topics**
+ [Funcionamiento](#gg-testing-framework-how-gtf-works)
+ [Registros de cambios](#gtf-changelog)
+ [Opciones de configuración de Greengrass Testing Framework](configuration-options-gtf.md)
+ [Tutorial: Ejecute end-to-end pruebas con Greengrass Testing Framework y Greengrass Development Kit](run-e2e-tests-tutorial.md)
+ [Tutorial: Uso de una prueba de confianza del conjunto de pruebas de confianza](confidence-tests-tutorial.md)

## Registros de cambios
<a name="gtf-changelog"></a>

En la siguiente tabla, se describen los cambios en cada versión del GTF. Para obtener más información, consulte la [página de versiones de GTF](https://github.com/aws-greengrass/aws-greengrass-testing/releases) en GitHub.


|  **Versión**  |  **Cambios**  | 
| --- | --- | 
| 1.2.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v2/developerguide/gg-testing-framework.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v2/developerguide/gg-testing-framework.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v2/developerguide/gg-testing-framework.html)  | 
|  1.0.0  |  Versión inicial.  | 

# Opciones de configuración de Greengrass Testing Framework
<a name="configuration-options-gtf"></a>

## Opciones de configuración de GTF
<a name="configuration-options-gtf-options"></a>

Greengrass Testing Framework (GTF) le permite configurar ciertos parámetros durante el inicio del proceso de prueba integral para orquestrar el flujo de pruebas. Puede especificar estas opciones de configuración como argumentos de la CLI para el JAR independiente de GTF.

<a name="gtf_options"></a>La versión 1.1.0 y posteriores de GTF ofrecen las siguientes opciones de configuración.
+ `additional-plugins`: (opcional) complementos de Cucumber adicionales
+ `aws-region`: apunta a puntos de conexión regionales específicos para los servicios de AWS. El valor predeterminado es lo que detecta el SDK de AWS.
+ `credentials-path`: ruta de credenciales de perfil de AWS opcional. El valor predeterminado son las credenciales detectadas en el entorno host.
+ `credentials-path-rotation`: duración de rotación opcional para las credenciales de AWS. El valor predeterminado es de 15 minutos o `PT15M`.
+ `csr-path`: la ruta de la CSR mediante la cual se generará el certificado del dispositivo.
+ `device-mode`: el dispositivo objetivo que se está probando. El valor predeterminado es el dispositivo local.
+ `env-stage`: apunta al entorno de implementación de Greengrass. El valor predeterminado es de producción.
+ `existing-device-cert-arn`: el ARN de un certificado existente que desee usar como certificado de dispositivo para Greengrass.
+ `feature-path`: archivo o directorio que contiene archivos de características adicionales. El valor predeterminado es que no se usan archivos de características adicionales.
+ `gg-cli-version`: anula la versión de la CLI de Greengrass. El valor predeterminado es el que se encuentra en `ggc.version`.
+ `gg-component-bucket`: el nombre de un bucket de Amazon S3 existente que aloja los componentes de Greengrass.
+ `gg-component-overrides`: una lista de anulaciones de componentes de Greengrass.
+ `gg-persist`: una lista de elementos de prueba que persisten tras una ejecución de la prueba. El comportamiento predeterminado es no conservar nada. Los valores aceptados son: `aws.resources`, `installed.software` y `generated.files`.
+ `gg-runtime`: una lista de valores para influir en la forma en que la prueba interactúa con los recursos de la prueba. Estos valores sustituyen al parámetro `gg.persist`. Si el valor predeterminado está vacío, se asume que todos los recursos de prueba se administran por caso de prueba, incluido el tiempo de ejecución de Greengrass instalado. Los valores aceptados son: `aws.resources`, `installed.software` y `generated.files`.
+ `ggc-archive`: la ruta hacia el componente del núcleo de Greengrass archivado.
+ `ggc-install-root`: directorio para instalar el componente núcleo de Greengrass. Los valores predeterminados son test.temp.path y la carpeta de ejecución de la prueba.
+ `ggc-log-level`: establece el nivel de registro del núcleo de Greengrass para la ejecución de la prueba. El valor predeterminado es “INFO”.
+ `ggc-tes-rolename`: el rol de IAM que asumirá AWS IoT Greengrass Core para acceder a los servicios de AWS. Si no existe un rol con un nombre dado, se creará uno con una política de acceso predeterminada.
+ `ggc-trusted-plugins`: la lista separada por comas de las rutas (en el host) de los complementos de confianza que deben agregarse a Greengrass. Para indicar la ruta en el propio DUT, agregue el prefijo “dut:” a la ruta
+ `ggc-user-name`: el valor user:group posixUser para el núcleo de Greengrass. El valor predeterminado es el nombre de usuario actual con el que se ha iniciado sesión.
+ `ggc-version`: anula la versión del componente núcleo de Greengrass en ejecución. El valor predeterminado es el que se encuentra en ggc.archive.
+ `log-level`: nivel de registro de la ejecución de la prueba. El valor predeterminado es “INFO”.
+ `parallel-config`: conjunto de índices de lotes y número de lotes como cadena JSON. El valor predeterminado del índice de lotes es 0 y el número de lotes es 1.
+ `proxy-url`: configura todas las pruebas para enrutar el tráfico a través de esta URL.
+ `tags`: ejecuta únicamente etiquetas de características. Se puede intersecar con “&”
+ `test-id-prefix`: un prefijo común que se aplica a todos los recursos específicos de la prueba, incluidos los nombres y las etiquetas de los recursos de AWS. El prefijo predeterminado es “gg”.
+ `test-log-path`: directorio que contendrá los resultados de toda la ejecución de la prueba. El valor predeterminado es “testResults”.
+ `test-results-json`: marcador para determinar si se genera un informe JSON de Cucumber resultante escrito en el disco. El valor predeterminado es true (verdadero).
+ `test-results-log`: marcador para determinar si la salida de la consola se genera escrita en el disco. El valor predeterminado es falso.
+ `test-results-xml`: marcador para determinar si se genera un informe XML de JUnit resultante escrito en el disco. El valor predeterminado es true (verdadero).
+ `test-temp-path`: directorio para generar artefactos de prueba locales. El valor predeterminado es un directorio temporal aleatorio con el prefijo gg-testing.
+ `timeout-multiplier`: multiplicador proporcionado para todos los tiempos de espera de las pruebas. El valor predeterminado es 1.0.

# Tutorial: Ejecute end-to-end pruebas con Greengrass Testing Framework y Greengrass Development Kit
<a name="run-e2e-tests-tutorial"></a>

AWS IoT Greengrass Testing Framework (GTF) y Greengrass Development Kit (GDK) ofrecen a los desarrolladores formas de ejecutar pruebas. end-to-end Puede completar este tutorial para inicializar un proyecto de GDK con un componente, inicializar un proyecto de GDK con un módulo de prueba y crear un caso de end-to-end prueba personalizado. Una vez que haya compilado su caso de prueba personalizado, podrá ejecutar la prueba.

En este tutorial, aprenderá a hacer lo siguiente:

1. Inicialice un proyecto de GDK con un componente.

1. Inicialice un proyecto de GDK con un módulo de prueba. end-to-end

1. Cree un caso de prueba personalizado.

1. Agregue una etiqueta al nuevo caso de prueba.

1. Compile el JAR de prueba.

1. Ejecute la prueba .

**Topics**
+ [Requisitos previos](#run-e2e-tests-tutorial-prerequisites)
+ [Paso 1: Inicializar un proyecto de GDK con un componente](#init-gdk-with-component)
+ [Paso 2: inicializar un proyecto de GDK con un módulo de prueba end-to-end](#init-gdk-with-e2e-test)
+ [Paso 3: Crear un caso de prueba personalizado](#run-e2e-tests-tutorial-instructions)
+ [Paso 4: Agregar una etiqueta al nuevo caso de prueba](#add-tag-to-test-case)
+ [Paso 5: Compilar el JAR de prueba](#build-test-jar)
+ [Paso 6: Ejecutar la prueba](#run-test-gtf)
+ [Ejemplo: crear un caso de prueba personalizado](#build-test-case-example)

## Requisitos previos
<a name="run-e2e-tests-tutorial-prerequisites"></a>

Necesitará lo siguiente para completar este tutorial:
+ GDK versión 1.3.0 o posterior
+ Java
+ Maven
+ Git

## Paso 1: Inicializar un proyecto de GDK con un componente
<a name="init-gdk-with-component"></a>
+ Inicialice una carpeta vacía con un proyecto de GDK. Para descargar el componente `HelloWorld` implementado en Python, ejecute el siguiente comando.

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

  Este comando crea un directorio denominado `HelloWorld` en el directorio actual.

## Paso 2: inicializar un proyecto de GDK con un módulo de prueba end-to-end
<a name="init-gdk-with-e2e-test"></a>
+ GDK le permite descargar la plantilla del módulo de pruebas que consta de una característica y una implementación escalonada. Ejecute el siguiente comando para abrir el directorio `HelloWorld` e inicializar el proyecto GDK existente mediante un módulo de pruebas.

  ```
  cd HelloWorld
  gdk test-e2e init
  ```

  Este comando crea un directorio denominado `gg-e2e-tests` dentro del directorio `HelloWorld`. Este directorio de pruebas es un proyecto de [Maven](https://maven.apache.org/) que depende del JAR independiente de pruebas de Greengrass.

## Paso 3: Crear un caso de prueba personalizado
<a name="run-e2e-tests-tutorial-instructions"></a>

La redacción de un caso de prueba personalizado consta, en líneas generales, de dos pasos: crear un archivo de características con un escenario de prueba e implementar las definiciones de los pasos. Para ver un ejemplo de cómo crear un caso de prueba personalizado, consulte [Ejemplo: crear un caso de prueba personalizado](#build-test-case-example). Siga los pasos que se describen a continuación para crear un caso de prueba personalizado:

1. Cree un archivo de características con un escenario de prueba

   Por lo general, una característica describe una funcionalidad específica del software que se está probando. En Cucumber, cada característica se especifica como un archivo de características individual con un título, una descripción detallada y uno o más ejemplos de casos específicos denominados escenarios. Cada escenario consta de un título, una descripción detallada y una serie de pasos que definen las interacciones y los resultados esperados. Los escenarios se escriben en un formato estructurado con las palabras clave “dado”, “cuándo” y “entonces”.

1. Implementación de definiciones de pasos

   Una definición de paso vincula el [paso de Gherkin](https://cucumber.io/docs/gherkin/reference/#steps) en lenguaje sencillo con el código programático. Cuando Cucumber identifique un paso de Gherkin en un escenario, buscará una definición de paso coincidente para ejecutarlo.

## Paso 4: Agregar una etiqueta al nuevo caso de prueba
<a name="add-tag-to-test-case"></a>
+ Puede asignar etiquetas a las características y escenarios para organizar el proceso de prueba. Puede usar etiquetas para categorizar los subconjuntos de escenarios y también seleccionar los enlaces de forma condicional para que se ejecuten. Las características y los escenarios pueden tener varias etiquetas separadas por un espacio.

  En este ejemplo, estamos usando el componente `HelloWorld`.

  En el archivo de características, agrega una nueva etiqueta con un nombre `@HelloWorld` junto a la etiqueta `@Sample`.

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

## Paso 5: Compilar el JAR de prueba
<a name="build-test-jar"></a>

1. Compile el componente. Debe compilar el componente antes de crear el módulo de prueba.

   ```
   gdk component build
   ```

1. Compile el módulo de prueba con el siguiente comando. Este comando compilará el JAR de prueba en la carpeta `greengrass-build`.

   ```
   gdk test-e2e build
   ```

## Paso 6: Ejecutar la prueba
<a name="run-test-gtf"></a>

Cuando realiza una prueba de confianza, el GTF automatiza el ciclo de vida de la prueba y administra los recursos que se crearon durante la prueba. Primero aprovisiona un dispositivo bajo prueba (DUT) como una AWS IoT cosa e instala el software principal de Greengrass en él. A continuación, creará un nuevo componente denominado `HelloWorld` con la receta especificada en esa ruta. A continuación, el componente `HelloWorld` se implementa en el dispositivo principal mediante una implementación de objeto de Greengrass. A continuación, se verificará si la implementación se realiza correctamente. El estado de la implementación cambiará a `COMPLETED` dentro de 3 minutos si la implementación se realiza correctamente.

1. Vaya al archivo `gdk-config.json` en el directorio del proyecto para apuntar a las pruebas con la etiqueta `HelloWorld`. Actualice la clave `test-e2e` mediante el siguiente comando.

   ```
     "test-e2e":{
       "gtf_options" : { 
            "tags":"HelloWorld"
        }
     }
   ```

1. Antes de ejecutar las pruebas, debe proporcionar AWS las credenciales al dispositivo anfitrión. El GTF usa estas credenciales para administrar los AWS recursos durante el proceso de prueba. Asegúrese de que el rol que proporcione tenga los permisos para automatizar las operaciones necesarias que se incluyen en la prueba.

   Ejecute los siguientes comandos para proporcionar las AWS credenciales.

   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"
     ```

------

1. Ejecute la prueba con el siguiente comando.

   ```
   gdk test-e2e run
   ```

   Este comando descarga la última versión del núcleo de Greengrass de la carpeta `greengrass-build` y ejecuta pruebas con ella. Este comando también se dirige solo a los escenarios con la etiqueta `HelloWorld` y genera un informe para esos escenarios. Verá que los AWS recursos que se crearon durante esta prueba se descartan al final de la prueba.

## Ejemplo: crear un caso de prueba personalizado
<a name="build-test-case-example"></a>

**Example**  
El módulo de pruebas descargado en el proyecto GDK consta de un archivo de características proporcionado.  
En el siguiente ejemplo, utilizamos un archivo de características para probar la característica de implementación del objeto del software Greengrass. Probamos parcialmente la funcionalidad de esta característica con un escenario que realiza la implementación de un componente a través de la Nube de AWS de Greengrass. Se trata de una serie de pasos que nos ayudan a entender las interacciones y los resultados esperados de este caso de uso.  <a name="build-test-case-example-steps"></a>

1. 

**Creación de un archivo de características**

   Navegue hasta la carpeta `gg-e2e-tests/src/main/resources/greengrass/features` del directorio actual. Puede encontrar el ejemplo `component.feature` con el aspecto del siguiente ejemplo.

   En este archivo de características, puede probar la característica de implementación de objetos del software Greengrass. Puede probar parcialmente la funcionalidad de esta característica con un escenario que realice la implementación de un componente a través de la nube de Greengrass. El escenario consiste en una serie de pasos que ayudan a comprender las interacciones y los resultados esperados de cada caso de prueba.

   ```
   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
   ```

   El GTF contiene las definiciones de todos los pasos siguientes, excepto el paso denominado: `And I call my custom step`.

1. 

**Implementación de definiciones de pasos**

   El JAR independiente de GTF contiene las definiciones de todos los pasos excepto uno: `And I call my custom step`. Puede implementar este paso en el módulo de pruebas.

   Navegue hasta el código de origen del archivo de prueba. Puede vincular su paso personalizado mediante una definición de paso utilizando el siguiente comando.

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

# Tutorial: Uso de una prueba de confianza del conjunto de pruebas de confianza
<a name="confidence-tests-tutorial"></a>

AWS IoT Greengrass Testing Framework (GTF) y Greengrass Development Kit (GDK) ofrecen a los desarrolladores formas de ejecutar pruebas. end-to-end Puede completar este tutorial para inicializar un proyecto de GDK con un componente, inicializar un proyecto de GDK con un módulo de prueba y utilizar una end-to-end prueba de confianza del conjunto de pruebas de confianza. Una vez que haya compilado su caso de prueba personalizado, podrá ejecutar la prueba.

Una prueba de confianza es una prueba genérica proporcionada por Greengrass que valida los comportamientos de los componentes fundamentales. Estas pruebas se pueden modificar o ampliar para adaptarlas a necesidades de componentes más específicas. 

Para este tutorial utilizaremos un componente. HelloWorld Si está utilizando otro componente, sustituya el HelloWorld componente por el suyo.

En este tutorial, aprenderá a hacer lo siguiente:

1. Inicialice un proyecto de GDK con un componente.

1. Inicialice un proyecto de GDK con un módulo de end-to-end prueba.

1. Use una prueba del conjunto de pruebas de confianza.

1. Agregue una etiqueta al nuevo caso de prueba.

1. Compile el JAR de prueba.

1. Ejecute la prueba .

**Topics**
+ [Requisitos previos](#confidence-tests-tutorial-prerequisites)
+ [Paso 1: Inicializar un proyecto de GDK con un componente](#init-gdk-with-component)
+ [Paso 2: inicializar un proyecto de GDK con un módulo de prueba end-to-end](#init-gdk-with-e2e-test)
+ [Paso 3: Usar una prueba del conjunto de pruebas de confianza](#confidence-tests-tutorial-instructions)
+ [Paso 4: Agregar una etiqueta al nuevo caso de prueba](#add-tag-to-test-case)
+ [Paso 5: Compilar el JAR de prueba](#build-test-jar)
+ [Paso 6: Ejecutar la prueba](#run-test-gtf)
+ [Ejemplo: uso de una prueba de confianza](#build-confidence-test-case-example)

## Requisitos previos
<a name="confidence-tests-tutorial-prerequisites"></a>

Necesitará lo siguiente para completar este tutorial:
+ GDK versión 1.6.0 o posterior
+ Java
+ Maven
+ Git

## Paso 1: Inicializar un proyecto de GDK con un componente
<a name="init-gdk-with-component"></a>
+ Inicialice una carpeta vacía con un proyecto de GDK. Para descargar el componente `HelloWorld` implementado en Python, ejecute el siguiente comando.

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

  Este comando crea un directorio denominado `HelloWorld` en el directorio actual.

## Paso 2: inicializar un proyecto de GDK con un módulo de prueba end-to-end
<a name="init-gdk-with-e2e-test"></a>
+ GDK le permite descargar la plantilla del módulo de pruebas que consta de una característica y una implementación escalonada. Ejecute el siguiente comando para abrir el directorio `HelloWorld` e inicializar el proyecto GDK existente mediante un módulo de pruebas.

  ```
  cd HelloWorld
  gdk test-e2e init
  ```

  Este comando crea un directorio denominado `gg-e2e-tests` dentro del directorio `HelloWorld`. Este directorio de pruebas es un proyecto de [Maven](https://maven.apache.org/) que depende del JAR independiente de pruebas de Greengrass.

## Paso 3: Usar una prueba del conjunto de pruebas de confianza
<a name="confidence-tests-tutorial-instructions"></a>

La redacción de un caso de prueba de confianza consiste en usar el archivo de características proporcionado y, si es necesario, modificar los escenarios. Para ver un ejemplo de uso de una prueba de confianza, consulte [Ejemplo: crear un caso de prueba personalizado](run-e2e-tests-tutorial.md#build-test-case-example). Siga los pasos a continuación para usar una prueba de confianza:
+ Use el archivo de características proporcionado.

  Navegue hasta la carpeta `gg-e2e-tests/src/main/resources/greengrass/features` del directorio actual. Abra el archivo de muestra `confidenceTest.feature` para usar la prueba de confianza.

## Paso 4: Agregar una etiqueta al nuevo caso de prueba
<a name="add-tag-to-test-case"></a>
+ Puede asignar etiquetas a las características y escenarios para organizar el proceso de prueba. Puede usar etiquetas para categorizar los subconjuntos de escenarios y también seleccionar los enlaces de forma condicional para que se ejecuten. Las características y los escenarios pueden tener varias etiquetas separadas por un espacio.

  En este ejemplo, estamos usando el componente `HelloWorld`.

  Cada escenario está etiquetado con `@ConfidenceTest`. Cambie o agregue etiquetas si desea ejecutar solo un subconjunto del conjunto de pruebas. Cada escenario de prueba se describe en la parte superior de cada prueba de confianza. El escenario consiste en una serie de pasos que ayudan a comprender las interacciones y los resultados esperados de cada caso de prueba. Puede ampliar estas pruebas al agregar sus propios pasos o modificar los existentes.

  ```
  @ConfidenceTest
  Scenario: As a Developer, I can deploy GDK_COMPONENT_NAME to my device and see it is working as expected
  ....
  ```

## Paso 5: Compilar el JAR de prueba
<a name="build-test-jar"></a>

1. Compile el componente. Debe compilar el componente antes de crear el módulo de prueba.

   ```
   gdk component build
   ```

1. Compile el módulo de prueba con el siguiente comando. Este comando compilará el JAR de prueba en la carpeta `greengrass-build`.

   ```
   gdk test-e2e build
   ```

## Paso 6: Ejecutar la prueba
<a name="run-test-gtf"></a>

Cuando realiza una prueba de confianza, el GTF automatiza el ciclo de vida de la prueba y administra los recursos que se crearon durante la prueba. Primero aprovisiona un dispositivo bajo prueba (DUT) como una AWS IoT cosa e instala el software principal de Greengrass en él. A continuación, creará un nuevo componente denominado `HelloWorld` con la receta especificada en esa ruta. A continuación, el componente `HelloWorld` se implementa en el dispositivo principal mediante una implementación de objeto de Greengrass. A continuación, se verificará si la implementación se realiza correctamente. El estado de la implementación cambiará a `COMPLETED` dentro de 3 minutos si la implementación se realiza correctamente.

1. Vaya al archivo `gdk-config.json` del directorio del proyecto para seleccionar las pruebas con la etiqueta `ConfidenceTest` o cualquier etiqueta que haya especificado en el Paso 4. Actualice la clave `test-e2e` mediante el siguiente comando.

   ```
     "test-e2e":{
       "gtf_options" : { 
            "tags":"ConfidenceTest"
        }
     }
   ```

1. Antes de ejecutar las pruebas, debe proporcionar AWS las credenciales al dispositivo anfitrión. El GTF usa estas credenciales para administrar los AWS recursos durante el proceso de prueba. Asegúrese de que el rol que proporcione tenga los permisos para automatizar las operaciones necesarias que se incluyen en la prueba.

   Ejecute los siguientes comandos para proporcionar las AWS credenciales.

   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"
     ```

------

1. Ejecute la prueba con el siguiente comando.

   ```
   gdk test-e2e run
   ```

   Este comando descarga la última versión del núcleo de Greengrass de la carpeta `greengrass-build` y ejecuta pruebas con ella. Este comando también se dirige solo a los escenarios con la etiqueta `ConfidenceTest` y genera un informe para esos escenarios. Verá que los AWS recursos que se crearon durante esta prueba se descartan al final de la prueba.

## Ejemplo: uso de una prueba de confianza
<a name="build-confidence-test-case-example"></a>

**Example**  
El módulo de pruebas descargado en el proyecto del GDK consta de un archivo de características proporcionado.  
En el siguiente ejemplo, usamos un archivo de características para probar la característica de implementación del objeto del software Greengrass. Probamos parcialmente la funcionalidad de esta característica con un escenario que realiza la implementación de un componente a través de la Nube de AWS de Greengrass. Se trata de una serie de pasos que nos ayudan a entender las interacciones y los resultados esperados de este caso de uso.  <a name="build-confidence-test-case-example-steps"></a>
+ 

**Use el archivo de características proporcionado.**

  Navegue hasta la carpeta `gg-e2e-tests/src/main/resources/greengrass/features` del directorio actual. Puede encontrar el ejemplo `confidenceTest.feature` con el aspecto del siguiente ejemplo.

  ```
  Feature: Confidence Test Suite
  
  Background:
      Given my device is registered as a Thing
      And my device is running Greengrass
  
  @ConfidenceTest
  Scenario: As a Developer, I can deploy GDK_COMPONENT_NAME to my device and see it is working as expected
      When I create a Greengrass deployment with components
        | GDK_COMPONENT_NAME | GDK_COMPONENT_RECIPE_FILE |
        | aws.greengrass.Cli | LATEST                    |
      And I deploy the Greengrass deployment configuration
      Then the Greengrass deployment is COMPLETED on the device after 180 seconds
      # Update component state accordingly. Possible states: {RUNNING, FINISHED, BROKEN, STOPPING}
      And I verify the GDK_COMPONENT_NAME component is RUNNING using the greengrass-cli
  ```

  Cada escenario de prueba se describe en la parte superior de cada prueba de confianza. El escenario consiste en una serie de pasos que ayudan a comprender las interacciones y los resultados esperados de cada caso de prueba. Puede ampliar estas pruebas al agregar sus propios pasos o modificar los existentes. Cada uno de los escenarios incluye comentarios que lo ayudan a realizar estos ajustes.