教程:使用 Greengrass 測 end-to-end 試框架和 Greengrass 開發工具包運行測試 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教程:使用 Greengrass 測 end-to-end 試框架和 Greengrass 開發工具包運行測試

AWS IoT Greengrass測試框架(GTF)和 Greengrass 開發工具包(GDK)為開發人員提供了運行測試的方法。 end-to-end 您可以完成本教程以初始化 GDK 項目的組件,使用 end-to-end 測試模塊初始化 GDK 項目,並構建自定義測試用例。在構建自定義測試用例後,您可以運行測試。

在此教學課程中,您將執行下列操作:

  1. 使用元件初始化 GDK 專案。

  2. 使用 end-to-end 測試模塊初始化 GDK 項目。

  3. 建立自訂測試案例。

  4. 將標籤添加到新的測試用例。

  5. 建置測試 JAR。

  6. 執行 測試。

必要條件

為了完成本教學,您需要以下項目:

  • GDK 版本 1.3.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:建立自訂測試案例

編寫自定義測試用例大致包括兩個步驟:創建具有測試場景的功能文件並實現步驟定義。如需建立自訂測試案例的範例,請參閱示例:構建自定義測試用例。使用以下步驟來構建自定義測試用例:

  1. 使用測試場景創建功能文件

    功能通常描述正在測試的軟體的特定功能。在黃瓜,每個功能被指定為一個標題,詳細描述,並稱為場景特定情況的一個或多個例子單獨的功能文件。每個案例都包含一個標題、詳細描述,以及定義互動和預期結果的一系列步驟。案例是使用「給定」、「何時」和「then」關鍵字以結構化格式撰寫。

  2. 實作步驟定義

    步驟定義鏈接簡單的語言小黃瓜步驟的編程代碼。當黃瓜標識在場景中的小黃瓜步驟,它會尋找一個匹配的步驟定義運行。

步驟 4:將標籤添加到新的測試用例

  • 您可以將標籤分配給功能和方案以組織測試過程。您可以使用標籤來分類案例的子集,也可以有條件地選取要執行的掛接。功能和案例可以有多個以空格分隔的標籤。

    在這個例子中,我們使用的HelloWorld組件。

    在特徵檔案中,在標籤@HelloWorld旁加入名為的新@Sample標籤。

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

步驟 5:建立測試 JAR

  1. 建置元件。您必須在構建測試模塊之前構建組件。

    gdk component build
  2. 使用以下命令構建測試模塊。此命令將在greengrass-build文件夾中構建測試 JAR。

    gdk test-e2e build

步驟 6:執行測試

當您運行自定義測試用例時,GTF 會自動化測試的生命周期以及管理在測試過程中創建的資源。它首先將被測設備(DUT)佈建為一個AWS IoT東西,並在其上安裝 Greengrass 核心軟件。然後,它將創建一個HelloWorld使用該路徑中指定的配方命名的新組件。然後,HelloWorld元件會透過 Greengrass 物件部署到核心裝置上。然後,如果部署成功,它將被驗證。如果部署成功,部署狀態將變更為 3 分鐘COMPLETED內。

  1. 轉到項目目錄中的gdk-config.json文件以使用HelloWorld標籤定位測試。使用以下命令更新test-e2e密鑰。

    "test-e2e":{ "gtf_options" : { "tags":"HelloWorld" } }
  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-build資料夾中 Greengrass 核的最新版本,並使用它執行測試。此命令也只針對具有HelloWorld標籤的案例,並產生這些案例的報表。您將看到在此測試期間創建的AWS資源在測試結束時被丟棄。

示例:構建自定義測試用例

GDK 項目中下載的測試模塊由示例功能和步驟實現文件組成。

在下面的例子中,我們創建一個功能文件來測試 Greengrass 軟件的物件部署功能。我們使用透過 Greeng AWS 雲端 rass 執行元件部署的案例來部分測試此功能的功能。這是一系列步驟,可協助我們瞭解此使用案例的互動和預期結果。

  1. 建立特徵檔

    導覽至目前目錄中的gg-e2e-tests/src/main/resources/greengrass/features資料夾。您可以找到如下範component.feature例所示的範例。

    在此功能檔案中,您可以測試 Greengrass 軟體的物件部署功能。您可以使用透過 Greengrass 雲端執行元件部署的案例來部分測試此功能的功能。案例是一系列步驟,可協助您瞭解此使用案例的互動和預期結果。

    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

    GTF 包含下列所有步驟的步驟定義,名為:And I call my custom step的步驟除外。

  2. 實作步驟定義

    GTF 獨立 JAR 包含除了一個步驟以外的所有步驟的步驟定義:And I call my custom step。您可以在測試模塊中實現此步驟。

    導航到測試文件的源代碼。您可以使用下列指令,使用步驟定義來連結自訂步驟。

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