

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

# 教學課程：使用可信度測試套件中的可信度測試
<a name="confidence-tests-tutorial"></a>

AWS IoT Greengrass 測試架構 (GTF) 和 Greengrass 開發套件 (GDK) 為開發人員提供執行end-to-end測試的方法。您可以完成此教學課程，以使用元件初始化 GDK 專案、使用end-to-end測試模組初始化 GDK 專案，以及使用可信度測試套件中的可信度測試。建置自訂測試案例之後，您就可以執行測試。

可信度測試是由 Greengrass 提供的一般測試，可驗證基本元件行為。這些測試可以修改或擴展，以滿足更具體的元件需求。

在本教學課程中，我們將使用 HelloWorld 元件。如果您使用的是其他元件，請將 HelloWorld 元件取代為您的元件。

在此教學課程中，您將執行下列操作：

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

1. 使用end-to-end測試模組初始化 GDK 專案。

1. 使用可信度測試套件中的測試。

1. 將標籤新增至新的測試案例。

1. 建置測試 JAR。

1. 執行 測試。

**Topics**
+ [先決條件](#confidence-tests-tutorial-prerequisites)
+ [步驟 1：使用元件初始化 GDK 專案](#init-gdk-with-component)
+ [步驟 2：使用end-to-end測試模組初始化 GDK 專案](#init-gdk-with-e2e-test)
+ [步驟 3：使用可信度測試套件中的測試](#confidence-tests-tutorial-instructions)
+ [步驟 4：將標籤新增至新的測試案例](#add-tag-to-test-case)
+ [步驟 5：建置測試 JAR](#build-test-jar)
+ [步驟 6：執行測試](#run-test-gtf)
+ [範例：使用可信度測試](#build-confidence-test-case-example)

## 先決條件
<a name="confidence-tests-tutorial-prerequisites"></a>

為了完成本教學，您需要以下項目：
+ GDK 1.6.0 版或更新版本
+ Java
+ Maven
+ Git

## 步驟 1：使用元件初始化 GDK 專案
<a name="init-gdk-with-component"></a>
+ 使用 GDK 專案初始化空資料夾。執行下列命令，下載在 Python 中實作的`HelloWorld`元件。

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

  此命令`HelloWorld`會在目前目錄中建立名為 的新目錄。

## 步驟 2：使用end-to-end測試模組初始化 GDK 專案
<a name="init-gdk-with-e2e-test"></a>
+ GDK 可讓您下載由功能和步驟實作組成的測試模組範本。執行下列命令以開啟 `HelloWorld` 目錄，並使用測試模組初始化現有的 GDK 專案。

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

  此命令會在 目錄中建立新的名為 `gg-e2e-tests`的`HelloWorld`目錄。此測試目錄是 [Maven](https://maven.apache.org/) 專案，其相依於 Greengrass 測試獨立 JAR。

## 步驟 3：使用可信度測試套件中的測試
<a name="confidence-tests-tutorial-instructions"></a>

撰寫可信度測試案例包含使用提供的特徵檔案，並視需要修改案例。如需使用可信度測試的範例，請參閱 [範例：建置自訂測試案例](run-e2e-tests-tutorial.md#build-test-case-example)。使用下列步驟來使用可信度測試：
+ 使用提供的功能檔案。

  導覽至目前目錄中的`gg-e2e-tests/src/main/resources/greengrass/features`資料夾。開啟範例`confidenceTest.feature`檔案以使用可信度測試。

## 步驟 4：將標籤新增至新的測試案例
<a name="add-tag-to-test-case"></a>
+ 您可以將標籤指派給功能和案例，以組織測試程序。您可以使用標籤來分類案例子集，也可以依條件選取要執行的勾點。功能和案例可以有多個以空格分隔的標籤。

  在此範例中，我們使用 `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
<a name="build-test-jar"></a>

1. 建置 元件。您必須先建置元件，才能建置測試模組。

   ```
   gdk component build
   ```

1. 使用以下命令建置測試模組。此命令將在 `greengrass-build` 資料夾中建置測試 JAR。

   ```
   gdk test-e2e build
   ```

## 步驟 6：執行測試
<a name="run-test-gtf"></a>

當您執行可信度測試時，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"
        }
     }
   ```

1. 執行測試之前，您必須提供 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"
     ```

------

1. 使用以下命令執行測試。

   ```
   gdk test-e2e run
   ```

   此命令會在 `greengrass-build` 資料夾中下載最新版本的 Greengrass 核，並使用它執行測試。此命令也會僅以具有 `ConfidenceTest`標籤的案例為目標，並產生這些案例的報告。您會在測試結束時看到在此測試期間建立 AWS 的資源遭到捨棄。

## 範例：使用可信度測試
<a name="build-confidence-test-case-example"></a>

**Example**  
GDK 專案中下載的測試模組包含提供的功能檔案。  
在下列範例中，我們使用功能檔案來測試 Greengrass 軟體的物件部署功能。我們透過 Greengrass 執行元件部署的案例，部分測試此功能的功能 AWS 雲端。這是一系列步驟，可協助我們了解此使用案例的互動和預期結果。  <a name="build-confidence-test-case-example-steps"></a>
+ 

**使用提供的功能檔案。**

  導覽至目前目錄中的 `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
  ```

  每個測試案例都描述在每個可信度測試的頂端。該案例是一系列步驟，有助於了解每個測試案例的互動和預期結果。您可以透過新增自己的步驟或修改現有的步驟來擴展這些測試。每個案例都包含可協助您進行這些調整的註解。