使用 AWS IoT Greengrass 测试框架 - AWS IoT Greengrass

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

使用 AWS IoT Greengrass 测试框架

Greengrass 测试框架 (GTF) 是一系列从客户角度支持自动化的构建模块。 end-to-endGTF 使用 Cuc u mber 作为功能驱动程序。 AWS IoT Greengrass 使用相同的构造块来验证不同设备上的软件更改。有关更多信息,请参阅 Github 上的 Greengrass 测试框架

GTF 是通过 Cucumber(一种用于运行自动测试的工具)来实施的,鼓励组件的行为驱动开发(BDD)。在 Cucumber 中,一个名为 feature 的特殊类型文件对该系统功能进行了概述。每个功能都以一种便于阅读的格式描述,这种格式称为“场景”,是可转换为自动测试的规范。将每个场景概述为一系列步骤,这些步骤使用一种名为 Gherkin 的特定于域的语言来定义被测系统的交互和结果。Gherkin 步骤通过一种称为步骤定义的方法与编程代码相连,这种方法将规范与测试流程进行硬连接。GTF 中的步骤定义是通过 Java 实施的。

工作方式

AWS IoT Greengrass 将 GTF 作为由多个 Java 模块组成的独立 JAR 分发。要使用 GTF end-to-end 测试组件,必须在 Java 项目中实现测试。将可测试的独立 JAR 作为依赖关系添加到您的 Java 项目后,您就可以使用 GTF 的现有功能,并通过编写自己的自定义测试用例对其进行扩展。要运行自定义测试用例,您可以构建 Java 项目并使用 Greengrass 测试框架配置选项 中所述的配置选项运行目标 JAR。

GTF 独立 JAR

Greengrass 使用 Cloudfront 作为 Maven 存储库来托管不同版本的 GTF 独立 JAR。有关 GTF 版本的完整列表,请参阅 GTF 版本

GTF 独立 JAR 包括以下模块。它不仅限于这些模块。您可以在项目中单独选择每个依赖关系,也可以将所有这些依赖关系同时包含在测试独立 JAR 文件中。

  • aws-greengrass-testing-resources:此模块为在测试过程中管理 AWS 资源的生命周期提供了抽象。你可以用它来使用ResourceSpec抽象来定义你的自定义 AWS 资源,这样 GTF 就可以为你创建和删除这些资源。

  • aws-greengrass-testing-platform:此模块测试生命周期内为被测设备提供平台级抽象。它包含 APIs 用于与独立于平台的操作系统进行交互,并可用于模拟在设备外壳中运行的命令。

  • aws-greengrass-testing-components:此模块包含用于测试 Greengrass 核心功能(例如部署、IPC 和其它功能)的示例组件。

  • aws-greengrass-testing-features:此模块由可重复使用的常用步骤及其定义组成,用于在 Greengrass 环境中进行测试。

更改日志

下表介绍每个版本 GTF 的更改。如需了解更多信息,请参阅上的 GTF 发布页面。 GitHub

版本

更改

1.2.0
新特征
  • 添加了与网络相关的步骤,以在测试期间配置 MQTT 和互联网网络连接。

  • 添加了系统指标步骤,以监控设备 RAM 和 CPU 使用情况。

错误修复和改进
  • Greengrass CLI 本地部署步骤会重试,直到成功为止。

  • 测试妥善地阻止 Greengrass Nucleus,而不是终止它。

  • 增加了改进,即 GTF 轮询 AWS IoT 凭证端点,直到可以检索事物和角色别名的凭证。

  • 修复了缺失的工件和配方目录。此版本还修复了缺失的组件版本。

  • 修复了在 Docker 映像清理期间,如果 docker 镜像不存在 GTF 会失败的问题。

  • 将 CURRENT 关键字添加为组件版本。

1.1.0

新特征
  • 添加了通过配置安装自定义组件的功能。这需要为自定义组件提供一个配方。

  • 添加了使用自定义配置更新本地部署的功能。

错误修复和改进
  • 修复了日志上下文 GTF 版本不一致的问题。

1.0.0

初始版本。