教程:使用置信度测试套件中的置信度测试 - AWS IoT Greengrass

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:使用置信度测试套件中的置信度测试

AWS IoT Greengrass测试框架 (GTF) 和 Greengrass 开发套件 (GDK) 为开发人员提供了运行测试的方法。 end-to-end 完成本教程后,您可以使用组件初始化 GDK 项目,使用 end-to-end 测试模块初始化 GDK 项目,以及使用置信度测试套件中的置信度测试。生成自定义测试用例后,就可以运行测试了。

置信度测试是 Greengrass 提供的通用测试,用于验证基本组件行为。可以修改或扩展这些测试以适应更具体的组件需求。

在本教程中,我们将使用一个 HelloWorld 组件。如果您使用的是其他组件,请用您的 HelloWorld 组件替换该组件。

在本教程中,您将执行以下操作:

  1. 使用组件初始化 GDK 项目。

  2. 使用 end-to-end 测试模块初始化 GDK 项目。

  3. 使用置信度测试套件中的测试。

  4. 为新的测试用例添加标签。

  5. 生成测试 JAR。

  6. 运行 测试。

先决条件

要完成本教程,您需要:

  • GDK 版本 1.6.0 或更高版本

  • Java

  • Maven

  • Git

步骤 1:使用组件初始化 GDK 项目

  • 使用 GDK 项目初始化一个空文件夹。运行以下命令下载用 Python 实现的HelloWorld组件。

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

    此命令在当前目录HelloWorld中创建一个名为的新目录。

步骤 2:使用 end-to-end测试模块初始化 GDK 项目

  • GDK 允许您下载由功能和步骤实现组成的测试模块模板。运行以下命令打开HelloWorld目录并使用测试模块初始化现有的 GDK 项目。

    cd HelloWorld gdk test-e2e init

    此命令在目录gg-e2e-tests中创建一个名为的新HelloWorld目录。这个测试目录是一个 Maven 项目,它依赖于 Greengrass 测试独立 JAR。

步骤 3:使用置信度测试套件中的测试

编写置信度测试用例包括使用提供的功能文件,并在需要时修改场景。有关使用置信度测试的示例,请参阅示例:生成自定义测试用例。使用以下步骤使用置信度测试:

  • 使用提供的功能文件。

    导航到当前目录中的gg-e2e-tests/src/main/resources/greengrass/features文件夹。打开示例confidenceTest.feature文件以使用置信度测试。

第 4 步:为新测试用例添加标签

  • 您可以为功能和场景分配标签以组织测试过程。您可以使用标签对场景的子集进行分类,也可以有条件地选择要运行的挂钩。功能和场景可以有多个标签,用空格隔开。

    在这个例子中,我们使用的是组HelloWorld件。

    每个场景都标有@ConfidenceTest。如果您只想运行测试套件的子集,请更改或添加标签。每个测试场景都在每个置信度测试的顶部进行描述。该场景是一系列步骤,有助于了解每个测试用例的交互作用和预期结果。您可以通过添加自己的步骤或修改现有步骤来扩展这些测试。

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

第 5 步:构建测试 JAR

  1. 生成组件。在生成测试模块之前,必须先生成组件。

    gdk component build
  2. 使用以下命令生成测试模块。此命令将在该greengrass-build文件夹中生成测试 JAR。

    gdk test-e2e build

步骤 6:运行测试

当您运行置信度测试时,GTF 会自动执行测试的生命周期并管理测试期间创建的资源。它首先将待测设备 (DUT) 配置为一个AWS IoT东西,然后在其上安装 Greengrass 核心软件。然后,它将HelloWorld使用该路径中指定的配方创建一个名为的新组件。然后,该HelloWorld组件通过 Greengrass 事物部署部署到核心设备上。然后将验证部署是否成功。如果部署成功,部署状态将COMPLETED在 3 分钟内更改为。

  1. 转到项目目录中的gdk-config.json文件,使用ConfidenceTest标签或步骤 4 中指定的任何标签 yo8u 来定位测试。使用以下命令更新test-e2e密钥。

    "test-e2e":{ "gtf_options" : { "tags":"ConfidenceTest" } }
  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 nucleus greengrass-build 并使用它运行测试。此命令还仅针对带有ConfidenceTest标签的场景,并为这些场景生成报告。您将看到在此测试期间创建的AWS资源在测试结束时被丢弃。

示例:使用置信度测试

GDK 项目中下载的测试模块由提供的功能文件组成。

在以下示例中,我们使用功能文件来测试 Greengrass 软件的事物部署功能。我们使用通过 Greengr AWS Cloud ass 部署组件的场景部分测试了此功能的功能。这是一系列步骤,可帮助我们了解此用例的互动和预期结果。

  • 使用提供的功能文件。

    导航到当前目录中的gg-e2e-tests/src/main/resources/greengrass/features文件夹。您可以找到与以下示例类似confidenceTest.feature的示例。

    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

    每个测试场景都在每个置信度测试的顶部进行描述。该场景是一系列步骤,有助于了解每个测试用例的交互作用和预期结果。您可以通过添加自己的步骤或修改现有步骤来扩展这些测试。每个场景都包含可帮助您进行这些调整的注释。