本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:使用置信度测试套件中的置信度测试
Amazon IoT Greengrass 测试框架 (GTF) 和 Greengrass 开发套件 GDK () 为开发人员提供了运行测试的方法。 end-to-end完成本教程后,您可以使用组件初始化GDK项目,使用 end-to-end测试模块初始化GDK项目,以及使用置信度测试套件中的置信度测试。生成自定义测试用例后,就可以运行测试了。
置信度测试是 Greengrass 提供的通用测试,用于验证基本组件行为。可以修改或扩展这些测试以适应更具体的组件需求。
在本教程中,我们将使用一个 HelloWorld 组件。如果您使用的是其他组件,请用您的 HelloWorld 组件替换该组件。
在本教程中,您将执行以下操作:
-
使用组件初始化GDK项目。
-
使用 end-to-end测试模块初始化GDK项目。
-
使用置信度测试套件中的测试。
-
向新测试用例中添加标签。
-
生成测试JAR。
-
运行测试。
主题
先决条件
要完成本教程,您需要:
-
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
此命令将在
HelloWorld
目录中创建一个名为gg-e2e-tests
的新目录。这个测试目录是一个 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
-
生成组件。在生成测试模块之前,必须先生成组件。
gdk component build
-
使用以下命令生成该测试模块。此命令将在该
greengrass-build
文件夹JAR中生成测试。gdk test-e2e build
步骤 6:运行测试
当您运行置信度测试时,GTF会自动执行测试的生命周期并管理测试期间创建的资源。它首先将正在测试的设备 (DUT) 配置为一个 Amazon IoT 东西,然后在上面安装 Greengrass 核心软件。然后使用该路径中指定的配方创建一个名为 HelloWorld
的新组件。然后通过 Greengrass 事物部署将该 HelloWorld
组件部署至核心设备上。然后验证部署是否成功。如果部署成功,部署状态将在 3 分钟内更改为 COMPLETED
。
-
转至项目目录中的
gdk-config.json
文件,使用ConfidenceTest
标签或步骤 4 中指定的任何标签来定位测试。使用以下命令更新test-e2e
密钥:"test-e2e":{ "gtf_options" : { "tags":"ConfidenceTest" } }
-
在运行测试之前,必须向主机设备提供 Amazon 凭据。 GTF在测试过程中使用这些凭证来管理 Amazon 资源。确保您提供的角色有权自动执行测试中包含的必要操作。
运行以下命令以提供 Amazon 凭据。
-
-
使用以下命令运行测试。
gdk test-e2e run
该命令下载
greengrass-build
文件夹中最新版本的 Greengrass Nucleus,并使用它运行测试。该命令也仅针对带有ConfidenceTest
标签的场景,并为这些场景生成报告。您将看到在此测试期间创建的 Amazon 资源在测试结束时被丢弃。
示例:使用置信度测试
GDK项目中下载的测试模块由提供的功能文件组成。
在以下示例中,我们使用功能文件来测试 Greengrass 软件的事物部署功能。我们使用一个通过 Greengrass Amazon Web Services 云执行组件部署的场景对该功能进行了部分测试。这一系列步骤有助于我们了解每个测试用例的交互作用和预期结果。
-
使用提供的功能文件。
导航至当前目录中的
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每个测试场景的描述均可见于每个置信度测试顶部。该场景包含一系列步骤,有助于了解每个测试用例的交互作用和预期结果。您可以通过添加自己的步骤或修改现有步骤来扩展这些测试。每个场景都包含可帮助您进行这些调整的注释。