

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

# 使用 AWS IoT Greengrass 測試架構
<a name="gg-testing-framework"></a>

Greengrass 測試架構 (GTF) 是支援從客戶角度end-to-end自動化的建置區塊集合。GTF 使用 [Cucumber](https://cucumber.io) 做為功能驅動程式。 AWS IoT Greengrass 會使用相同的建置區塊來驗證各種裝置上的軟體變更。如需詳細資訊，請參閱 [Github 上的 Greengrass 測試架構](https://github.com/aws-greengrass/aws-greengrass-testing/tree/dev_v1)。

GTF 使用 Cucumber 實作，這是用來執行自動化測試的工具，可鼓勵元件的行為驅動開發 (BDD)。在 Cucumber 中，此系統的功能概述於稱為 的特殊檔案類型中`feature`。每個功能都以稱為案例的人類可讀格式描述，這些案例是可轉換為自動化測試的規格。每個案例都概述為一系列步驟，使用稱為 Gherkin 的網域特定語言來定義此系統的互動和結果。[Gherkin 步驟](https://cucumber.io/docs/gherkin/reference/#steps)會使用稱為步驟定義的方法連結至程式設計程式碼，該方法將規格硬式路由至測試流程。GTF 中的步驟定義是使用 Java 實作。

**Topics**
+ [運作方式](#gg-testing-framework-how-gtf-works)
+ [變更記錄](#gtf-changelog)
+ [Greengrass 測試架構組態選項](configuration-options-gtf.md)
+ [教學課程：使用 Greengrass 測試架構和 Greengrass 開發套件執行end-to-end測試](run-e2e-tests-tutorial.md)
+ [教學課程：使用可信度測試套件中的可信度測試](confidence-tests-tutorial.md)

## 運作方式
<a name="gg-testing-framework-how-gtf-works"></a>

AWS IoT Greengrass 會將 GTF 分發為由數個 Java 模組組成的獨立 JAR。若要使用 GTF end-to-end測試，您必須在 Java 專案中實作測試。在 Java 專案中新增測試可站立的 JAR 做為相依性，可讓您使用 GTF 的現有功能，並透過撰寫自己的自訂測試案例來擴展它。若要執行自訂測試案例，您可以建置 Java 專案，並使用中所述的組態選項執行目標 JAR[Greengrass 測試架構組態選項](configuration-options-gtf.md)。

### GTF 獨立 JAR
<a name="w2ab1c24c19c25c11b5"></a>

Greengrass 使用 Cloudfront 做為 [Maven](https://maven.apache.org/) 儲存庫來託管不同版本的 GTF 獨立 JAR。如需 GTF 版本的完整清單，請參閱 [GTF 版本](https://github.com/aws-greengrass/aws-greengrass-testing/releases)。

GTF 獨立 JAR 包含下列模組。這不限於這些模組。您可以分別在專案中挑選和選擇每個相依性，或使用[測試獨立 JAR 檔案](https://github.com/aws-greengrass/aws-greengrass-testing/tree/dev_v1/aws-greengrass-testing-standalone)同時包含所有相依性。
+ `aws-greengrass-testing-resources`：本單元提供在測試過程中管理 AWS 資源生命週期的抽象概念。您可以使用此參數來定義自訂 AWS 資源，以便 GTF `ResourceSpec` 為您建立和移除這些資源。
+ `aws-greengrass-testing-platform`：此模組會在測試生命週期期間為待測裝置提供平台層級抽象。它包含 API， APIs 用於與獨立於 平台的作業系統互動，並可用於模擬在裝置 shell 中執行的命令。
+ `aws-greengrass-testing-components`：此模組包含用於測試 Greengrass 核心功能的範例元件，例如部署、IPC 和其他功能。
+ `aws-greengrass-testing-features`：此模組包含可重複使用的常見步驟及其定義，用於在 Greengrass 環境中測試 內的 。

**Topics**
+ [運作方式](#gg-testing-framework-how-gtf-works)
+ [變更記錄](#gtf-changelog)
+ [Greengrass 測試架構組態選項](configuration-options-gtf.md)
+ [教學課程：使用 Greengrass 測試架構和 Greengrass 開發套件執行end-to-end測試](run-e2e-tests-tutorial.md)
+ [教學課程：使用可信度測試套件中的可信度測試](confidence-tests-tutorial.md)

## 變更記錄
<a name="gtf-changelog"></a>

下表說明 GTF 每個版本中的變更。如需詳細資訊，請參閱 GitHub 上的 [GTF 版本頁面](https://github.com/aws-greengrass/aws-greengrass-testing/releases)。


|  **版本**  |  **變更**  | 
| --- | --- | 
| 1.2.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/gg-testing-framework.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/gg-testing-framework.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/gg-testing-framework.html)  | 
|  1.0.0  |  初始版本。  | 

# Greengrass 測試架構組態選項
<a name="configuration-options-gtf"></a>

## GTF 組態選項
<a name="configuration-options-gtf-options"></a>

Greengrass 測試架構 (GTF) 可讓您在end-to-end測試程序啟動期間設定特定參數，以協調測試流程。您可以將這些組態選項指定為 GTF 獨立 JAR 的 CLI 引數。

<a name="gtf_options"></a>GTF 1.1.0 版及更新版本提供下列組態選項。
+ `additional-plugins` – （選用） 其他小黃瓜外掛程式
+ `aws-region` – 以服務的特定區域端點為 AWS 目標。預設為 AWS SDK 探索的內容。
+ `credentials-path` – 選用 AWS 的設定檔登入資料路徑。預設為主機環境上探索的登入資料。
+ `credentials-path-rotation` – 登入資料的 AWS 選用輪換持續時間。預設為 15 分鐘或 `PT15M`。
+ `csr-path` – 產生裝置憑證的 CSR 路徑。
+ `device-mode` – 正在測試的目標裝置。預設為本機裝置。
+ `env-stage` – 以 Greengrass 的部署環境為目標。預設為生產。
+ `existing-device-cert-arn` – 您要用來做為 Greengrass 裝置憑證的現有憑證。
+ `feature-path` – 包含其他特徵檔案的檔案或目錄。預設為不使用其他功能檔案。
+ `gg-cli-version` – 覆寫 Greengrass CLI 的版本。預設為 中找到的值`ggc.version`。
+ `gg-component-bucket` – 存放 Greengrass 元件的現有 Amazon S3 儲存貯體的名稱。
+ `gg-component-overrides` – Greengrass 元件覆寫的清單。
+ `gg-persist` – 測試執行後要保留的測試元素清單。預設行為是不保留任何內容。接受的值為：`aws.resources`、 `installed.software`和 `generated.files`。
+ `gg-runtime` – 影響測試如何與測試資源互動的值清單。這些值會取代 `gg.persist` 參數。如果預設值為空，則假設所有測試資源都由測試案例管理，包括安裝的 Greengrass 執行期。接受的值為：`aws.resources`、 `installed.software`和 `generated.files`。
+ `ggc-archive` – 封存 Greengrass 核元件的路徑。
+ `ggc-install-root` – 安裝 Greengrass 核元件的目錄。預設為 test.temp.path 和 test run 資料夾。
+ `ggc-log-level` – 設定測試執行的 Greengrass 核日誌層級。預設為「INFO」。
+ `ggc-tes-rolename` – Core AWS IoT Greengrass 將擔任以存取 AWS 服務的 IAM 角色。如果指定名稱的角色不存在，則會建立一個角色和預設存取政策。
+ `ggc-trusted-plugins` – 需要新增至 Greengrass 的信任外掛程式路徑 （主機上） 的逗號分隔清單。若要提供 DUT 本身的路徑，請在路徑前面加上 'dut：'
+ `ggc-user-name` – Greengrass 核的 user：group posixUser 值。預設為目前登入的使用者名稱。
+ `ggc-version` – 覆寫執行中 Greengrass 核元件的版本。預設為 ggc.archive 中的值。
+ `log-level` – 測試執行的日誌層級。預設為「INFO」。
+ `parallel-config` – 批次索引和批次數量的集合，做為 JSON 字串。批次索引的預設值為 0，批次數量為 1。
+ `proxy-url` – 設定所有測試以透過此 URL 路由流量。
+ `tags` – 僅執行功能標籤。可與 '&' 交集
+ `test-id-prefix` – 套用至所有測試特定資源的通用字首，包括 AWS 資源名稱和標籤。預設為「gg」字首。
+ `test-log-path` – 將包含整個測試執行結果的目錄。預設為「testResults」。
+ `test-results-json` – 標記以判斷是否產生寫入磁碟的 Cucumber JSON 報告。預設為 true。
+ `test-results-log` – 用來判斷主控台輸出是否寫入磁碟的旗標。預設為 false。
+ `test-results-xml` – 標記以判斷是否產生寫入磁碟的 JUnit XML 報告。預設為 true。
+ `test-temp-path` – 產生本機測試成品的目錄。預設為字首為 gg 測試的隨機暫存目錄。
+ `timeout-multiplier` – 提供給所有測試逾時的乘數。預設值為 1.0。

# 教學課程：使用 Greengrass 測試架構和 Greengrass 開發套件執行end-to-end測試
<a name="run-e2e-tests-tutorial"></a>

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

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

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

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

1. 建置自訂測試案例。

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

1. 建置測試 JAR。

1. 執行 測試。

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

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

為了完成本教學，您需要以下項目：
+ GDK 1.3.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="run-e2e-tests-tutorial-instructions"></a>

撰寫自訂測試案例廣泛包含兩個步驟：使用測試案例建立特徵檔案並實作步驟定義。如需建置自訂測試案例的範例，請參閱 [範例：建置自訂測試案例](#build-test-case-example)。使用下列步驟來建置您的自訂測試案例：

1. 使用測試案例建立特徵檔案

   功能通常會描述正在測試之軟體的特定功能。在 Cucumber 中，每個功能都會指定為個別功能檔案，其中包含標題、詳細說明，以及一或多個稱為案例的特定案例範例。每個案例都包含標題、詳細說明，以及定義互動和預期結果的一系列步驟。使用 "given"、"when" 和 "then" 關鍵字以結構化格式撰寫案例。

1. 實作步驟定義

   步驟定義以純語言將 [Gherkin 步驟](https://cucumber.io/docs/gherkin/reference/#steps)連結至程式設計程式碼。當 Cucumber 在案例中識別 Gherkin 步驟時，它會尋找要執行的相符步驟定義。

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

  在此範例中，我們使用 `HelloWorld`元件。

  在特徵檔案中，在標籤`@HelloWorld`旁新增名為 的新`@Sample`標籤。

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

## 步驟 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` 檔案，以 `HelloWorld`標籤鎖定測試目標。使用下列命令更新`test-e2e`金鑰。

   ```
     "test-e2e":{
       "gtf_options" : { 
            "tags":"HelloWorld"
        }
     }
   ```

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 核，並使用它執行測試。此命令也會僅以具有 `HelloWorld`標籤的案例為目標，並產生這些案例的報告。您會在測試結束時看到在此測試期間建立 AWS 的資源遭到捨棄。

## 範例：建置自訂測試案例
<a name="build-test-case-example"></a>

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

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`。

1. 

**實作步驟定義**

   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 ");
   }
   ```

# 教學課程：使用可信度測試套件中的可信度測試
<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
  ```

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