

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan Kerangka AWS IoT Greengrass Pengujian
<a name="gg-testing-framework"></a>

Greengrass Testing Framework (GTF) adalah kumpulan blok bangunan yang mendukung otomatisasi dari perspektif pelanggan. end-to-end GTF menggunakan [Cucumber](https://cucumber.io) sebagai driver fitur. AWS IoT Greengrass menggunakan blok bangunan yang sama untuk memenuhi syarat perubahan perangkat lunak pada berbagai perangkat. Untuk informasi lebih lanjut, lihat [Greengrass](https://github.com/aws-greengrass/aws-greengrass-testing/tree/dev_v1) Testing Framework di Github.

GTF diimplementasikan menggunakan Cucumber, alat yang digunakan untuk menjalankan tes otomatis, untuk mendorong Behavior-Driven Development (BDD) komponen. Di Mentimun, fitur-fitur sistem ini diuraikan dalam jenis file khusus yang disebut`feature`. Setiap fitur dijelaskan dalam format yang dapat dibaca manusia yang disebut skenario yang merupakan spesifikasi yang dapat diubah menjadi pengujian otomatis. Setiap skenario diuraikan sebagai serangkaian langkah yang menentukan interaksi dan hasil dari sistem ini yang diuji menggunakan bahasa khusus domain yang disebut Gherkin. [Langkah Gherkin](https://cucumber.io/docs/gherkin/reference/#steps) ditautkan ke kode pemrograman menggunakan metode yang disebut definisi langkah yang menghubungkan spesifikasi dengan keras ke aliran pengujian. Definisi langkah dalam GTF diimplementasikan dengan Java.

**Topics**
+ [Cara kerjanya](#gg-testing-framework-how-gtf-works)
+ [Changelog](#gtf-changelog)
+ [Opsi konfigurasi Kerangka Pengujian Greengrass](configuration-options-gtf.md)
+ [Tutorial: Jalankan end-to-end tes menggunakan Greengrass Testing Framework dan Greengrass Development Kit](run-e2e-tests-tutorial.md)
+ [Tutorial: Gunakan tes kepercayaan diri dari rangkaian tes kepercayaan](confidence-tests-tutorial.md)

## Cara kerjanya
<a name="gg-testing-framework-how-gtf-works"></a>

AWS IoT Greengrass mendistribusikan GTF sebagai JAR mandiri yang terdiri dari beberapa modul Java. Untuk menggunakan GTF untuk end-to-end pengujian komponen, Anda harus mengimplementasikan pengujian dalam proyek Java. Menambahkan JAR standar pengujian sebagai ketergantungan dalam proyek Java Anda memungkinkan Anda untuk menggunakan fungsionalitas GTF yang ada dan memperluasnya dengan menulis kasus uji kustom Anda sendiri. Untuk menjalankan kasus uji kustom, Anda dapat membangun proyek Java Anda dan menjalankan JAR target dengan opsi konfigurasi yang dijelaskan di[Opsi konfigurasi Kerangka Pengujian Greengrass](configuration-options-gtf.md).

### JAR mandiri GTF
<a name="w2ab1c24c19c25c11b5"></a>

Greengrass menggunakan Cloudfront sebagai repositori Maven untuk meng-host [berbagai](https://maven.apache.org/) versi JAR mandiri GTF. Untuk daftar lengkap versi GTF, lihat rilis [GTF](https://github.com/aws-greengrass/aws-greengrass-testing/releases).

JAR mandiri GTF mencakup modul-modul berikut. Tidak terbatas hanya pada modul-modul ini. Anda dapat memilih dan memilih masing-masing dependensi ini secara terpisah dalam proyek Anda atau menyertakan semuanya sekaligus dengan file JAR [mandiri pengujian](https://github.com/aws-greengrass/aws-greengrass-testing/tree/dev_v1/aws-greengrass-testing-standalone).
+ `aws-greengrass-testing-resources`: Modul ini menyediakan abstraksi untuk mengelola siklus hidup AWS sumber daya selama pengujian. Anda dapat menggunakan ini untuk menentukan AWS sumber daya kustom Anda menggunakan `ResourceSpec` abstraksi sehingga GTF dapat menangani pembuatan dan penghapusan sumber daya tersebut untuk Anda.
+ `aws-greengrass-testing-platform`: Modul ini menyediakan abstraksi tingkat platform untuk perangkat yang diuji selama siklus hidup pengujian. Ini berisi APIs digunakan untuk berinteraksi dengan OS independen dari platform dan dapat digunakan untuk mensimulasikan perintah yang berjalan di shell perangkat.
+ `aws-greengrass-testing-components`: Modul ini terdiri dari komponen sampel yang digunakan untuk menguji fitur inti Greengrass seperti penerapan, IPC, dan fitur lainnya.
+ `aws-greengrass-testing-features`: Modul ini terdiri dari langkah-langkah umum yang dapat digunakan kembali dan definisinya yang digunakan untuk pengujian di dalam lingkungan Greengrass.

**Topics**
+ [Cara kerjanya](#gg-testing-framework-how-gtf-works)
+ [Changelog](#gtf-changelog)
+ [Opsi konfigurasi Kerangka Pengujian Greengrass](configuration-options-gtf.md)
+ [Tutorial: Jalankan end-to-end tes menggunakan Greengrass Testing Framework dan Greengrass Development Kit](run-e2e-tests-tutorial.md)
+ [Tutorial: Gunakan tes kepercayaan diri dari rangkaian tes kepercayaan](confidence-tests-tutorial.md)

## Changelog
<a name="gtf-changelog"></a>

Tabel berikut menjelaskan perubahan di setiap versi GTF. Untuk informasi selengkapnya, lihat [halaman Rilis GTF](https://github.com/aws-greengrass/aws-greengrass-testing/releases) di GitHub.


|  **Versi**  |  **Perubahan**  | 
| --- | --- | 
| 1.2.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v2/developerguide/gg-testing-framework.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v2/developerguide/gg-testing-framework.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/greengrass/v2/developerguide/gg-testing-framework.html)  | 
|  1.0.0  |  Versi awal.  | 

# Opsi konfigurasi Kerangka Pengujian Greengrass
<a name="configuration-options-gtf"></a>

## Opsi konfigurasi GTF
<a name="configuration-options-gtf-options"></a>

Greengrass Testing Framework (GTF) memungkinkan Anda mengonfigurasi parameter tertentu selama peluncuran proses pengujian untuk mengatur alur end-to-end pengujian. Anda dapat menentukan opsi konfigurasi ini sebagai argumen CLI untuk JAR mandiri GTF.

<a name="gtf_options"></a>GTF versi 1.1.0 dan yang lebih baru menyediakan opsi konfigurasi berikut.
+ `additional-plugins`- (Opsional) Plugin Mentimun Tambahan
+ `aws-region`— Menargetkan titik akhir regional tertentu untuk AWS layanan. Default untuk apa yang ditemukan SDK AWS .
+ `credentials-path`— Jalur kredensial AWS profil opsional. Default untuk kredensil yang ditemukan di lingkungan host.
+ `credentials-path-rotation`— Durasi rotasi opsional untuk AWS kredensil. Default hingga 15 menit atau. `PT15M`
+ `csr-path`— Jalur untuk CSR yang menggunakan sertifikat perangkat yang akan dihasilkan.
+ `device-mode`— Perangkat target yang sedang diuji. Default ke perangkat lokal.
+ `env-stage`— Menargetkan lingkungan penyebaran Greengrass. Default untuk produksi.
+ `existing-device-cert-arn`— Arn dari sertifikat yang ada yang ingin Anda gunakan sebagai sertifikat perangkat untuk Greengrass.
+ `feature-path`— File atau direktori yang berisi file fitur tambahan. Default adalah tidak ada file fitur tambahan yang digunakan.
+ `gg-cli-version`— Mengganti versi CLI Greengrass. Default ke nilai yang ditemukan di. `ggc.version`
+ `gg-component-bucket`— Nama ember Amazon S3 yang ada yang menampung komponen Greengrass.
+ `gg-component-overrides`— Daftar penggantian komponen Greengrass.
+ `gg-persist`— Daftar elemen pengujian untuk bertahan setelah uji coba. Perilaku default adalah tidak mempertahankan apa pun. Nilai yang diterima adalah:`aws.resources`,`installed.software`, dan`generated.files`.
+ `gg-runtime`— Daftar nilai untuk mempengaruhi bagaimana tes berinteraksi dengan sumber daya pengujian. Nilai-nilai ini menggantikan parameter. `gg.persist` Jika default kosong, itu mengasumsikan semua sumber daya pengujian diatur oleh kasus uji, termasuk runtime Greengrass yang diinstal. Nilai yang diterima adalah:`aws.resources`,`installed.software`, dan`generated.files`.
+ `ggc-archive`— Jalur menuju komponen inti Greengrass yang diarsipkan.
+ `ggc-install-root`— Direktori untuk menginstal komponen inti Greengrass. Default ke test.temp.path dan test run folder.
+ `ggc-log-level`— Atur level log nukleus Greengrass untuk uji coba. Defaultnya adalah “INFO”.
+ `ggc-tes-rolename`— Peran IAM yang akan diasumsikan AWS IoT Greengrass Core untuk mengakses AWS layanan. Jika peran dengan nama yang diberikan tidak ada maka satu akan dibuat dan kebijakan akses default.
+ `ggc-trusted-plugins`— Daftar koma terpisah dari jalur (pada host) dari plugin tepercaya yang perlu ditambahkan ke Greengrass. Untuk menyediakan jalur pada DUT itu sendiri, awali jalur dengan 'dut: '
+ `ggc-user-name`— Nilai user:group POSIXuser untuk inti Greengrass. Default ke nama pengguna saat ini yang masuk.
+ `ggc-version`— Mengganti versi komponen inti Greengrass yang sedang berjalan. Default ke nilai yang ditemukan di ggc.archive.
+ `log-level`— Tingkat log uji coba. Default ke “INFO”.
+ `parallel-config`— Set indeks batch dan jumlah batch sebagai JSON String. Nilai default indeks batch adalah 0 dan jumlah batch adalah 1.
+ `proxy-url`— Konfigurasikan semua tes untuk merutekan lalu lintas melalui URL ini.
+ `tags`— Hanya jalankan tag fitur. Dapat berpotongan dengan '&'
+ `test-id-prefix`- Awalan umum diterapkan untuk semua sumber daya pengujian tertentu termasuk nama AWS sumber daya dan tag. Default adalah awalan “gg”.
+ `test-log-path`— Direktori yang akan berisi hasil dari seluruh uji coba. Default ke “TestResults”.
+ `test-results-json`— Tandai untuk menentukan apakah laporan Cucumber JSON yang dihasilkan ditulis ke disk. Default ke true.
+ `test-results-log`— Tandai untuk menentukan apakah output konsol dihasilkan ditulis ke disk. Default ke false.
+ `test-results-xml`- Tandai untuk menentukan apakah laporan JUnit XHTML yang dihasilkan dihasilkan ditulis ke disk. Default ke true.
+ `test-temp-path`— Direktori untuk menghasilkan artefak uji lokal. Default ke direktori temp acak diawali dengan gg-testing.
+ `timeout-multiplier`— Pengganda disediakan untuk semua batas waktu pengujian. Defaultnya adalah 1.0.

# Tutorial: Jalankan end-to-end tes menggunakan Greengrass Testing Framework dan Greengrass Development Kit
<a name="run-e2e-tests-tutorial"></a>

AWS IoT Greengrass Testing Framework (GTF) dan Greengrass Development Kit (GDK) menawarkan pengembang cara untuk menjalankan pengujian. end-to-end Anda dapat menyelesaikan tutorial ini untuk menginisialisasi proyek GDK dengan komponen, menginisialisasi proyek GDK dengan modul end-to-end pengujian, dan membangun kasus uji khusus. Setelah Anda membangun kasus uji kustom Anda, Anda kemudian dapat menjalankan pengujian.

Dalam tutorial ini, Anda akan melakukan hal-hal berikut:

1. Inisialisasi proyek GDK dengan komponen.

1. Inisialisasi proyek GDK dengan modul end-to-end uji.

1. Buat kasus uji khusus.

1. Tambahkan tag ke kasus uji baru.

1. Bangun JAR tes.

1. Jalankan tes.

**Topics**
+ [Prasyarat](#run-e2e-tests-tutorial-prerequisites)
+ [Langkah 1: Inisialisasi proyek GDK dengan komponen](#init-gdk-with-component)
+ [Langkah 2: Inisialisasi proyek GDK dengan modul uji end-to-end](#init-gdk-with-e2e-test)
+ [Langkah 3: Bangun kasus uji khusus](#run-e2e-tests-tutorial-instructions)
+ [Langkah 4: Tambahkan tag ke kasus uji baru](#add-tag-to-test-case)
+ [Langkah 5: Bangun JAR tes](#build-test-jar)
+ [Langkah 6: Jalankan tes](#run-test-gtf)
+ [Contoh: Membangun kasus uji khusus](#build-test-case-example)

## Prasyarat
<a name="run-e2e-tests-tutorial-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:
+ GDK versi 1.3.0 atau yang lebih baru
+ Java
+ Maven
+ Git

## Langkah 1: Inisialisasi proyek GDK dengan komponen
<a name="init-gdk-with-component"></a>
+ Inisialisasi folder kosong dengan proyek GDK. Unduh `HelloWorld` komponen yang diimplementasikan dengan Python dengan menjalankan perintah berikut.

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

  Perintah ini membuat direktori baru bernama `HelloWorld` dalam direktori saat ini.

## Langkah 2: Inisialisasi proyek GDK dengan modul uji end-to-end
<a name="init-gdk-with-e2e-test"></a>
+ GDK memungkinkan Anda mengunduh templat modul pengujian yang terdiri dari implementasi fitur dan langkah. Jalankan perintah berikut untuk membuka `HelloWorld` direktori dan menginisialisasi proyek GDK yang ada menggunakan modul pengujian.

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

  Perintah ini membuat direktori baru bernama `gg-e2e-tests` dalam `HelloWorld` direktori. Direktori pengujian ini adalah proyek [Maven](https://maven.apache.org/) yang memiliki ketergantungan pada JAR mandiri pengujian Greengrass.

## Langkah 3: Bangun kasus uji khusus
<a name="run-e2e-tests-tutorial-instructions"></a>

Menulis kasus uji khusus secara luas terdiri dari dua langkah: membuat file fitur dengan skenario pengujian dan menerapkan definisi langkah. Untuk contoh pembuatan kasus uji kustom, lihat[Contoh: Membangun kasus uji khusus](#build-test-case-example). Gunakan langkah-langkah berikut untuk membuat kasus uji kustom Anda:

1. Buat file fitur dengan skenario pengujian

   Sebuah fitur biasanya menggambarkan fungsionalitas spesifik dari perangkat lunak yang sedang diuji. Di Cucumber, setiap fitur ditentukan sebagai file fitur individual dengan judul, deskripsi rinci, dan satu atau lebih contoh kasus tertentu yang disebut skenario. Setiap skenario terdiri dari judul, deskripsi rinci, dan serangkaian langkah yang menentukan interaksi dan hasil yang diharapkan. Skenario ditulis dalam format terstruktur menggunakan kata kunci “diberikan,” “kapan,” dan “lalu”.

1. Menerapkan definisi langkah

   Definisi langkah menghubungkan [langkah Gherkin](https://cucumber.io/docs/gherkin/reference/#steps) dalam bahasa sederhana ke kode program. Ketika Mentimun mengidentifikasi langkah Gherkin dalam skenario, itu akan mencari definisi langkah yang cocok untuk dijalankan.

## Langkah 4: Tambahkan tag ke kasus uji baru
<a name="add-tag-to-test-case"></a>
+ Anda dapat menetapkan tag ke fitur dan skenario untuk mengatur proses pengujian. Anda dapat menggunakan tag untuk mengkategorikan subset skenario dan juga memilih kait secara kondisional untuk dijalankan. Fitur dan skenario dapat memiliki beberapa tag yang dipisahkan oleh spasi.

  Dalam contoh ini, kita menggunakan `HelloWorld` komponen.

  Dalam file fitur, tambahkan tag baru bernama `@HelloWorld` di samping `@Sample` tag.

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

## Langkah 5: Bangun JAR tes
<a name="build-test-jar"></a>

1. Membangun komponen. Anda harus membangun komponen sebelum membangun modul pengujian.

   ```
   gdk component build
   ```

1. Bangun modul pengujian menggunakan perintah berikut. Perintah ini akan membangun JAR pengujian di `greengrass-build` folder.

   ```
   gdk test-e2e build
   ```

## Langkah 6: Jalankan tes
<a name="run-test-gtf"></a>

Saat Anda menjalankan kasus uji khusus, GTF mengotomatiskan siklus hidup pengujian bersama dengan mengelola sumber daya yang dibuat selama pengujian. Ini pertama-tama menyediakan perangkat yang sedang diuji (DUT) sebagai AWS IoT sesuatu dan menginstal perangkat lunak inti Greengrass di atasnya. Kemudian akan membuat komponen baru bernama `HelloWorld` menggunakan resep yang ditentukan di jalur itu. `HelloWorld`Komponen tersebut kemudian dikerahkan ke perangkat inti melalui penerapan hal Greengrass. Ini kemudian akan diverifikasi jika penerapan berhasil. Status penerapan akan berubah menjadi `COMPLETED` dalam waktu 3 menit jika penerapan berhasil.

1. Buka `gdk-config.json` file di direktori proyek untuk menargetkan tes dengan `HelloWorld` tag. Perbarui `test-e2e` kunci menggunakan perintah berikut.

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

1. Sebelum menjalankan pengujian, Anda harus memberikan AWS kredensi ke perangkat host. GTF menggunakan kredensi ini untuk mengelola AWS sumber daya selama proses pengujian. Pastikan peran yang Anda berikan memiliki izin untuk mengotomatiskan operasi yang diperlukan yang disertakan dalam pengujian.

   Jalankan perintah berikut untuk memberikan AWS kredensialnya.

   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. Jalankan tes menggunakan perintah berikut.

   ```
   gdk test-e2e run
   ```

   Perintah ini mengunduh versi terbaru dari inti Greengrass di folder dan menjalankan pengujian `greengrass-build` menggunakannya. Perintah ini juga hanya menargetkan skenario dengan `HelloWorld` tag dan menghasilkan laporan untuk skenario tersebut. Anda akan melihat AWS sumber daya yang dibuat selama tes ini dibuang di akhir tes.

## Contoh: Membangun kasus uji khusus
<a name="build-test-case-example"></a>

**Example**  
Modul pengujian yang diunduh dalam proyek GDK terdiri dari fitur sampel dan file implementasi langkah.  
Dalam contoh berikut, kami membuat file fitur untuk menguji fitur penyebaran hal dari perangkat lunak Greengrass. Kami menguji sebagian fungsionalitas fitur ini dengan skenario yang melakukan penerapan komponen melalui AWS Cloud Greengrass. Ini adalah serangkaian langkah yang membantu kita memahami interaksi dan hasil yang diharapkan dari kasus penggunaan ini.  <a name="build-test-case-example-steps"></a>

1. 

**Buat file fitur**

   Arahkan ke `gg-e2e-tests/src/main/resources/greengrass/features` folder di direktori saat ini. Anda dapat menemukan sampel `component.feature` yang terlihat seperti contoh berikut.

   Dalam file fitur ini, Anda dapat menguji fitur penyebaran benda dari perangkat lunak Greengrass. Anda dapat menguji sebagian fungsionalitas fitur ini dengan skenario yang melakukan penerapan komponen melalui cloud Greengrass. Skenario ini adalah serangkaian langkah yang membantu memahami interaksi dan hasil yang diharapkan dari kasus penggunaan ini.

   ```
   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 berisi definisi langkah dari semua langkah berikut, kecuali untuk langkah bernama:`And I call my custom step`.

1. 

**Menerapkan definisi langkah**

   JAR mandiri GTF berisi definisi langkah dari semua langkah kecuali satu langkah:. `And I call my custom step` Anda dapat menerapkan langkah ini dalam modul pengujian.

   Arahkan ke kode sumber file pengujian. Anda dapat menautkan langkah kustom Anda menggunakan definisi langkah dengan menggunakan perintah berikut.

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

# Tutorial: Gunakan tes kepercayaan diri dari rangkaian tes kepercayaan
<a name="confidence-tests-tutorial"></a>

AWS IoT Greengrass Testing Framework (GTF) dan Greengrass Development Kit (GDK) menawarkan pengembang cara untuk menjalankan pengujian. end-to-end Anda dapat menyelesaikan tutorial ini untuk menginisialisasi proyek GDK dengan komponen, menginisialisasi proyek GDK dengan modul end-to-end pengujian, dan menggunakan tes kepercayaan dari rangkaian pengujian kepercayaan. Setelah Anda membangun kasus uji kustom Anda, Anda kemudian dapat menjalankan pengujian.

Tes kepercayaan adalah tes generik yang disediakan oleh Greengrass yang memvalidasi perilaku komponen mendasar. Tes ini dapat dimodifikasi atau diperluas agar sesuai dengan kebutuhan komponen yang lebih spesifik. 

Untuk tutorial ini kita akan menggunakan HelloWorld komponen. Jika Anda menggunakan komponen lain, ganti HelloWorld komponen dengan komponen Anda.

Dalam tutorial ini, Anda akan melakukan hal-hal berikut:

1. Inisialisasi proyek GDK dengan komponen.

1. Inisialisasi proyek GDK dengan modul end-to-end uji.

1. Gunakan tes dari rangkaian tes kepercayaan.

1. Tambahkan tag ke kasus uji baru.

1. Bangun JAR tes.

1. Jalankan tes.

**Topics**
+ [Prasyarat](#confidence-tests-tutorial-prerequisites)
+ [Langkah 1: Inisialisasi proyek GDK dengan komponen](#init-gdk-with-component)
+ [Langkah 2: Inisialisasi proyek GDK dengan modul uji end-to-end](#init-gdk-with-e2e-test)
+ [Langkah 3: Gunakan tes dari rangkaian pengujian kepercayaan](#confidence-tests-tutorial-instructions)
+ [Langkah 4: Tambahkan tag ke kasus uji baru](#add-tag-to-test-case)
+ [Langkah 5: Bangun JAR tes](#build-test-jar)
+ [Langkah 6: Jalankan tes](#run-test-gtf)
+ [Contoh: Gunakan tes kepercayaan](#build-confidence-test-case-example)

## Prasyarat
<a name="confidence-tests-tutorial-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:
+ GDK versi 1.6.0 atau yang lebih baru
+ Java
+ Maven
+ Git

## Langkah 1: Inisialisasi proyek GDK dengan komponen
<a name="init-gdk-with-component"></a>
+ Inisialisasi folder kosong dengan proyek GDK. Unduh `HelloWorld` komponen yang diimplementasikan dengan Python dengan menjalankan perintah berikut.

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

  Perintah ini membuat direktori baru bernama `HelloWorld` dalam direktori saat ini.

## Langkah 2: Inisialisasi proyek GDK dengan modul uji end-to-end
<a name="init-gdk-with-e2e-test"></a>
+ GDK memungkinkan Anda mengunduh templat modul pengujian yang terdiri dari implementasi fitur dan langkah. Jalankan perintah berikut untuk membuka `HelloWorld` direktori dan menginisialisasi proyek GDK yang ada menggunakan modul pengujian.

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

  Perintah ini membuat direktori baru bernama `gg-e2e-tests` dalam `HelloWorld` direktori. Direktori pengujian ini adalah proyek [Maven](https://maven.apache.org/) yang memiliki ketergantungan pada JAR mandiri pengujian Greengrass.

## Langkah 3: Gunakan tes dari rangkaian pengujian kepercayaan
<a name="confidence-tests-tutorial-instructions"></a>

Menulis kasus uji kepercayaan terdiri dari menggunakan file fitur yang disediakan dan, jika perlu, memodifikasi skenario. Untuk contoh menggunakan tes kepercayaan diri, lihat[Contoh: Membangun kasus uji khusus](run-e2e-tests-tutorial.md#build-test-case-example). Gunakan langkah-langkah berikut untuk menggunakan tes kepercayaan diri:
+ Gunakan file fitur yang disediakan.

  Arahkan ke `gg-e2e-tests/src/main/resources/greengrass/features` folder di direktori saat ini. Buka `confidenceTest.feature` file sampel untuk menggunakan tes kepercayaan.

## Langkah 4: Tambahkan tag ke kasus uji baru
<a name="add-tag-to-test-case"></a>
+ Anda dapat menetapkan tag ke fitur dan skenario untuk mengatur proses pengujian. Anda dapat menggunakan tag untuk mengkategorikan subset skenario dan juga memilih kait secara kondisional untuk dijalankan. Fitur dan skenario dapat memiliki beberapa tag yang dipisahkan oleh spasi.

  Dalam contoh ini, kita menggunakan `HelloWorld` komponen.

  Setiap skenario ditandai dengan`@ConfidenceTest`. Ubah atau tambahkan tag jika Anda hanya ingin menjalankan sebagian dari rangkaian pengujian. Setiap skenario tes dijelaskan di bagian atas setiap tes kepercayaan. Skenario ini adalah serangkaian langkah yang membantu memahami interaksi dan hasil yang diharapkan dari setiap kasus uji. Anda dapat memperpanjang tes ini dengan menambahkan langkah Anda sendiri atau dengan memodifikasi yang sudah ada.

  ```
  @ConfidenceTest
  Scenario: As a Developer, I can deploy GDK_COMPONENT_NAME to my device and see it is working as expected
  ....
  ```

## Langkah 5: Bangun JAR tes
<a name="build-test-jar"></a>

1. Membangun komponen. Anda harus membangun komponen sebelum membangun modul pengujian.

   ```
   gdk component build
   ```

1. Bangun modul pengujian menggunakan perintah berikut. Perintah ini akan membangun JAR pengujian di `greengrass-build` folder.

   ```
   gdk test-e2e build
   ```

## Langkah 6: Jalankan tes
<a name="run-test-gtf"></a>

Saat Anda menjalankan uji kepercayaan diri, GTF mengotomatiskan siklus hidup pengujian bersama dengan mengelola sumber daya yang dibuat selama pengujian. Ini pertama-tama menyediakan perangkat yang sedang diuji (DUT) sebagai AWS IoT sesuatu dan menginstal perangkat lunak inti Greengrass di atasnya. Kemudian akan membuat komponen baru bernama `HelloWorld` menggunakan resep yang ditentukan di jalur itu. `HelloWorld`Komponen tersebut kemudian dikerahkan ke perangkat inti melalui penerapan hal Greengrass. Ini kemudian akan diverifikasi jika penerapan berhasil. Status penerapan akan berubah menjadi `COMPLETED` dalam waktu 3 menit jika penerapan berhasil.

1. Pergi ke `gdk-config.json` file di direktori proyek untuk menargetkan tes dengan `ConfidenceTest` tag atau tag mana pun yo8u yang ditentukan dalam Langkah 4. Perbarui `test-e2e` kunci menggunakan perintah berikut.

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

1. Sebelum menjalankan pengujian, Anda harus memberikan AWS kredensi ke perangkat host. GTF menggunakan kredensi ini untuk mengelola AWS sumber daya selama proses pengujian. Pastikan peran yang Anda berikan memiliki izin untuk mengotomatiskan operasi yang diperlukan yang disertakan dalam pengujian.

   Jalankan perintah berikut untuk memberikan AWS kredensialnya.

   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. Jalankan tes menggunakan perintah berikut.

   ```
   gdk test-e2e run
   ```

   Perintah ini mengunduh versi terbaru dari inti Greengrass di folder dan menjalankan pengujian `greengrass-build` menggunakannya. Perintah ini juga hanya menargetkan skenario dengan `ConfidenceTest` tag dan menghasilkan laporan untuk skenario tersebut. Anda akan melihat AWS sumber daya yang dibuat selama tes ini dibuang di akhir tes.

## Contoh: Gunakan tes kepercayaan
<a name="build-confidence-test-case-example"></a>

**Example**  
Modul pengujian yang diunduh dalam proyek GDK terdiri dari file fitur yang disediakan.  
Dalam contoh berikut, kami menggunakan file fitur untuk menguji fitur penyebaran benda dari perangkat lunak Greengrass. Kami menguji sebagian fungsionalitas fitur ini dengan skenario yang melakukan penerapan komponen melalui AWS Cloud Greengrass. Ini adalah serangkaian langkah yang membantu kita memahami interaksi dan hasil yang diharapkan dari kasus penggunaan ini.  <a name="build-confidence-test-case-example-steps"></a>
+ 

**Gunakan file fitur yang disediakan.**

  Arahkan ke `gg-e2e-tests/src/main/resources/greengrass/features` folder di direktori saat ini. Anda dapat menemukan sampel `confidenceTest.feature` yang terlihat seperti contoh berikut.

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

  Setiap skenario tes dijelaskan di bagian atas setiap tes kepercayaan. Skenario ini adalah serangkaian langkah yang membantu memahami interaksi dan hasil yang diharapkan dari setiap kasus uji. Anda dapat memperpanjang tes ini dengan menambahkan langkah Anda sendiri atau dengan memodifikasi yang sudah ada. Masing-masing skenario mencakup komentar yang membantu Anda melakukan penyesuaian ini.