

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

# Konfigurasikan orkestrator uji IDT
<a name="idt-test-orchestrator"></a>

Mulai dari IDT v4.5.2, IDT menyertakan komponen orkestrator uji baru*. * Orkestrator pengujian adalah komponen IDT yang mengontrol alur eksekusi rangkaian pengujian, dan menghasilkan laporan pengujian setelah IDT selesai menjalankan semua pengujian. Orkestrator pengujian menentukan pemilihan pengujian dan urutan dijalankan pengujian berdasarkan aturan yang ditentukan pengguna.

Jika rangkaian pengujian Anda tidak menyertakan orkestrator pengujian yang ditentukan pengguna, IDT akan menghasilkan orkestrator pengujian untuk Anda. 

Orkestrator uji default melakukan fungsi-fungsi berikut:
+ Menyediakan test runner dengan kemampuan untuk memilih dan menjalankan grup uji tertentu, dan bukan seluruh rangkaian uji.
+ Jika grup uji tertentu tidak dipilih, ia menjalankan setiap grup uji di rangkaian uji dengan urutan acak. 
+ Membuat laporan dan mencetak ringkasan konsol yang menunjukkan hasil tes untuk setiap grup uji dan uji kasus.

Orkestrator uji menggantikan mesin status IDT. Kami sangat menyarankan Anda menggunakan orkestrator pengujian untuk mengembangkan rangkaian pengujian Anda alih-alih mesin status IDT. Orkestrator uji menyediakan fitur perbaikan berikut: 
+ Menggunakan format deklaratif dibandingkan dengan format imperatif yang digunakan mesin status IDT. Ini memungkinkan Anda untuk menentukan tes mana yang ingin Anda jalankan dan kapan Anda ingin menjalankannya. 
+ Mengelola penanganan grup tertentu, pembuatan laporan, penanganan kesalahan, dan pelacakan hasil sehingga Anda tidak perlu mengelola tindakan ini secara manual. 
+ Menggunakan format YAML, yang mendukung komentar secara default.
+ Membutuhkan ruang disk 80 persen lebih sedikit daripada orkestrator pengujian untuk menentukan alur kerja yang sama.
+ Menambahkan validasi pra-pengujian untuk memverifikasi bahwa definisi alur kerja Anda tidak berisi ID pengujian yang salah atau dependensi melingkar.

## Uji format orkestrator
<a name="idt-test-orchestrator-format"></a>

Anda dapat menggunakan templat berikut untuk mengonfigurasi file `{{custom-test-suite-folder}}/suite/test_orchestrator.yaml` Anda: 

```
Aliases:
  {{string}}: {{context-expression}}

ConditionalTests:
  - Condition: {{context-expression}}
    Tests:
      - {{test-descriptor}}

Order:
  - - {{group-descriptor}}
    - {{group-descriptor}}

Features:
  - Name: {{feature-name}}
    Value: {{support-description}}
    Condition: {{context-expression}}
    Tests:
        - {{test-descriptor}}
    OneOfTests:
        - {{test-descriptor}}
    IsRequired: {{boolean}}
```

Semua kolom yang berisi nilai wajib diisi seperti yang dijelaskan di sini:

`Aliases`  
Opsional. User-defined string yang dipetakan ke ekspresi konteks. Alias memungkinkan Anda menghasilkan nama ramah untuk mengidentifikasi ekspresi konteks dalam konfigurasi orkestrator pengujian Anda. Ini sangat berguna jika Anda membuat ekspresi konteks kompleks atau ekspresi yang Anda gunakan di beberapa tempat.  
Anda dapat menggunakan ekspresi konteks untuk menyimpan kueri konteks yang memungkinkan Anda mengakses data dari konfigurasi IDT lainnya. Untuk informasi selengkapnya, lihat [Akses data dalam konteks](idt-context.md#accessing-context-data).  

**Example**  
**Contoh**  

```
Aliases:
    FizzChosen: "'{{$pool.features[?(@.name == 'Fizz')].value[0]}}' == 'yes'"    
    BuzzChosen: "'{{$pool.features[?(@.name == 'Buzz')].value[0]}}' == 'yes'"    
    FizzBuzzChosen: "'{{$aliases.FizzChosen}}' && '{{$aliases.BuzzChosen}}'"
```

`ConditionalTests`  
Tidak wajib. Daftar kondisi, dan kasus uji terkait yang dijalankan ketika setiap kondisi terpenuhi. Setiap kondisi dapat memiliki beberapa kasus uji; Namun, Anda dapat menetapkan kasus uji yang diberikan hanya untuk satu kondisi.  
Secara default, IDT menjalankan kasus uji apa pun yang tidak ditetapkan ke kondisi dalam daftar ini. Jika Anda tidak menentukan bagian ini, IDT menjalankan semua grup pengujian di rangkaian pengujian.  
Setiap item dalam `ConditionalTests` daftar mencakup parameter berikut:    
`Condition`  
Ekspresi konteks yang mengevaluasi nilai Boolean. Jika nilai yang dievaluasi benar, IDT menjalankan kasus uji yang ditentukan dalam `Tests` parameter.  
`Tests`  
Daftar deskriptor tes.   
Setiap deskriptor pengujian menggunakan ID grup pengujian dan satu atau lebih ID kasus uji untuk mengidentifikasi pengujian individual yang akan dijalankan dari kelompok pengujian tertentu. Deskriptor tes menggunakan format berikut:  

```
GroupId: {{group-id}}
CaseIds: [{{test-id}}, {{test-id}}] # optional
```

**Example**  
**Contoh**  
Contoh berikut menggunakan ekspresi konteks generik yang dapat Anda definisikan sebagai`Aliases`.  

```
ConditionalTests:
    - Condition: "{{$aliases.Condition1}}"
      Tests:
          - GroupId: A
          - GroupId: B
    - Condition: "{{$aliases.Condition2}}"
      Tests:
          - GroupId: D
    - Condition: "{{$aliases.Condition1}} || {{$aliases.Condition2}}"
      Tests:
          - GroupId: C
```

Berdasarkan kondisi yang ditentukan, IDT memilih kelompok uji sebagai berikut:
+ Jika `Condition1` benar, IDT menjalankan tes dalam kelompok uji A, B, dan C.
+ Jika `Condition2` benar, IDT menjalankan tes dalam kelompok uji C dan D.

`Order`  
Tidak wajib. Urutan untuk menjalankan tes. Anda menentukan urutan pengujian di tingkat kelompok pengujian. Jika Anda tidak menentukan bagian ini, IDT menjalankan semua grup pengujian yang berlaku dalam urutan acak. Nilai `Order` adalah daftar daftar deskriptor grup. Grup pengujian apa pun yang tidak Anda daftarkan`Order`, dapat dijalankan secara paralel dengan grup pengujian terdaftar lainnya.  

Setiap daftar deskriptor grup berisi satu dari lebih banyak deskriptor grup, dan mengidentifikasi urutan untuk menjalankan grup yang ditentukan dalam setiap deskriptor. Anda dapat menggunakan format berikut untuk menentukan deskriptor grup individual:
+ `{{group-id}}`—ID grup dari grup uji yang ada.
+ `[{{group-id}}, {{group-id}}]`—Daftar kelompok uji yang dapat dijalankan dalam urutan apa pun relatif satu sama lain.
+ `"*"`—Karakter liar. Ini setara dengan daftar semua grup pengujian yang belum ditentukan dalam daftar deskriptor grup saat ini.

Nilai untuk juga `Order` harus memenuhi persyaratan berikut:
+ ID grup uji yang Anda tentukan dalam deskriptor grup harus ada di rangkaian pengujian Anda. 
+ Setiap daftar deskriptor grup harus menyertakan setidaknya satu kelompok uji.
+ Setiap daftar deskriptor grup harus berisi ID grup yang unik. Anda tidak dapat mengulangi ID grup pengujian dalam deskriptor grup individual.
+ Daftar deskriptor grup dapat memiliki paling banyak satu deskriptor grup wildcard. Deskriptor grup wildcard harus menjadi item pertama atau terakhir dalam daftar.

**Example**  
**Contoh**  
Untuk rangkaian pengujian yang berisi grup pengujian A, B, C, D, dan E, daftar contoh berikut menunjukkan cara yang berbeda untuk menentukan bahwa IDT harus terlebih dahulu menjalankan grup uji A, kemudian menjalankan grup uji B, dan kemudian menjalankan grup uji C, D, dan E dalam urutan apa pun.  
+ 

  ```
  Order:
      - - A
        - B
        - [C, D, E]
  ```
+ 

  ```
  Order:
      - - A
        - B
        - "*"
  ```
+ 

  ```
  Order:
      - - A
        - B
      
      - - B
        - C
      
      - - B
        - D
      
      - - B
        - E
  ```

`Features`  
Tidak wajib. Daftar fitur produk yang Anda ingin IDT tambahkan ke `awsiotdevicetester_report.xml` file. Jika Anda tidak menentukan bagian ini, IDT tidak akan menambahkan fitur produk apa pun ke laporan.  
Fitur produk adalah informasi yang ditetapkan pengguna tentang kriteria spesifik yang mungkin dipenuhi oleh perangkat. Misalnya, fitur produk MQTT dapat menunjukkan bahwa perangkat menerbitkan pesan MQTT dengan benar. Di`awsiotdevicetester_report.xml`, fitur produk ditetapkan sebagai`supported`,`not-supported`, atau nilai khusus yang ditentukan pengguna, berdasarkan apakah pengujian yang ditentukan lulus.  
Setiap item dalam `Features` daftar terdiri dari parameter berikut:    
`Name`  
Nama fitur.  
`Value`  
Tidak wajib. Nilai kustom yang ingin Anda gunakan dalam laporan alih-alih`supported`. Jika nilai ini tidak ditentukan, maka IDT berbasis menetapkan nilai fitur ke `supported` atau `not-supported` berdasarkan hasil pengujian. Jika Anda menguji fitur yang sama dengan kondisi yang berbeda, Anda dapat menggunakan nilai kustom untuk setiap instance fitur tersebut dalam `Features` daftar, dan IDT menggabungkan nilai fitur untuk kondisi yang didukung. Untuk informasi selengkapnya, silakan lihat   
`Condition`  
Ekspresi konteks yang mengevaluasi nilai Boolean. Jika nilai yang dievaluasi benar, IDT menambahkan fitur ke laporan pengujian setelah selesai menjalankan rangkaian pengujian. Jika nilai yang dievaluasi salah, tes tidak termasuk dalam laporan.   
`Tests`  
Tidak wajib. Daftar deskriptor tes. Semua pengujian yang ditentukan dalam daftar ini harus lulus agar fitur didukung.   
Setiap deskriptor pengujian dalam daftar ini menggunakan ID grup pengujian dan satu atau lebih ID kasus uji untuk mengidentifikasi pengujian individual yang akan dijalankan dari grup pengujian tertentu. Deskriptor tes menggunakan format berikut:  

```
GroupId: {{group-id}}
CaseIds: [{{test-id}}, {{test-id}}] # optional
```
Anda harus menentukan salah `Tests` satu atau `OneOfTests` untuk setiap fitur dalam `Features` daftar.  
`OneOfTests`  
Tidak wajib. Daftar deskriptor tes. Setidaknya satu dari pengujian yang ditentukan dalam daftar ini harus lulus agar fitur didukung.  
Setiap deskriptor pengujian dalam daftar ini menggunakan ID grup pengujian dan satu atau lebih ID kasus uji untuk mengidentifikasi pengujian individual yang akan dijalankan dari grup pengujian tertentu. Deskriptor tes menggunakan format berikut:  

```
GroupId: {{group-id}}
CaseIds: [{{test-id}}, {{test-id}}] # optional
```
Anda harus menentukan salah `Tests` satu atau `OneOfTests` untuk setiap fitur dalam `Features` daftar.  
`IsRequired`  
Nilai boolean yang menentukan apakah fitur diperlukan dalam laporan pengujian. Nilai default-nya adalah `false`.

## Uji konteks orkestrator
<a name="idt-test-orchestrator-context"></a>

Konteks orkestrator uji adalah dokumen JSON baca-saja yang berisi data yang tersedia untuk orkestrator pengujian selama eksekusi. Konteks orkestrator uji hanya dapat diakses dari orkestrator uji, dan berisi informasi yang menentukan aliran pengujian. Misalnya, Anda dapat menggunakan informasi yang dikonfigurasi oleh test runner di file `userdata.json` untuk menentukan apakah pengujian tertentu wajib dijalankan.

Konteks orkestrator uji menggunakan format berikut:

```
{
    "pool": {
        {{<device-json-pool-element>}}
    },
    "userData": {
        {{<userdata-json-content>}}
    },
    "config": {
        {{<config-json-content>}}
    }
}
```

`pool`  
Informasi tentang kolam perangkat yang dipilih untuk uji coba. Untuk kolam perangkat yang dipilih, informasi ini diambil dari elemen rangkaian perangkat tingkat atas yang sesuai yang ditentukan dalam file `device.json`.

`userData`  
Informasi di file `userdata.json`.

`config`  
Informasi di file `config.json`.

Anda dapat melakukan kueri atas konteks tersebut dengan menggunakan notasi JSONPath. Sintaks untuk kueri JSONPath dalam definisi keadaan adalah `{{{{query}}}}`. Saat Anda mengakses data dari konteks orkestrator pengujian, pastikan bahwa setiap nilai dievaluasi ke string, angka, atau Boolean.

Untuk informasi lebih lanjut tentang peggunaan notasi JSONPath untuk mengakses data dari konteks, lihat [Gunakan konteks IDT](idt-context.md).