

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

# Alur kerja Device Advisor
<a name="device-advisor-workflow"></a>

Tutorial ini menjelaskan cara membuat rangkaian pengujian khusus dan menjalankan pengujian terhadap perangkat yang ingin Anda uji di konsol. Setelah tes selesai, Anda dapat melihat hasil tes dan log terperinci.

## Prasyarat
<a name="device-advisor-workflow-prereqs"></a>

Sebelum Anda memulai tutorial ini tutorial ini, selesaikan langkah-langkah yang diuraikan. [Menyiapkan](device-advisor-setting-up.md)

## Buat definisi rangkaian pengujian
<a name="device-advisor-workflow-create-suite-definition"></a>

Pertama, [instal AWS SDK](https://docs.aws.amazon.com/iot/latest/developerguide/iot-connect-service.html#iot-service-sdks).

### `rootGroup`sintaks
<a name="rootGroup"></a>

Grup root adalah string JSON yang menentukan kasus pengujian mana yang akan disertakan dalam rangkaian pengujian Anda. Ini juga menentukan konfigurasi yang diperlukan untuk kasus uji tersebut. Gunakan grup root untuk menyusun dan memesan rangkaian pengujian Anda berdasarkan kebutuhan Anda. Hirarki rangkaian pengujian adalah: 

```
test suite → test group(s) → test case(s)
```

Test suite harus memiliki setidaknya satu kelompok uji, dan setiap kelompok uji harus memiliki setidaknya satu kasus uji. Device Advisor menjalankan pengujian sesuai urutan penentuan grup pengujian dan kasus pengujian.

Setiap kelompok akar mengikuti struktur dasar ini:

```
{
    "configuration": {  // for all tests in the test suite
        "": ""
    }
    "tests": [{
        "name": ""
        "configuration": {  // for all sub-groups in this test group 
            "": ""
        },
        "tests": [{
            "name": ""
            "configuration": {  // for all test cases in this test group 
                "": ""
            },
            "test": {
                "id": ""  
                "version": ""
            }
        }]
    }]
}
```



Di grup root, Anda menentukan rangkaian pengujian dengan`name`,`configuration`, dan `tests` yang dikandung grup. `tests`Kelompok ini berisi definisi tes individu. Anda mendefinisikan setiap pengujian dengan`name`,`configuration`, dan `test` blok yang mendefinisikan kasus uji untuk pengujian itu. Akhirnya, setiap kasus uji didefinisikan dengan `id` dan`version`.

Untuk informasi tentang cara menggunakan `"version"` bidang `"id"` dan untuk setiap kasus uji (`test`blok), lihat[Kasus uji Device Advisor](device-advisor-tests.md). Bagian itu juga berisi informasi tentang `configuration` pengaturan yang tersedia.

Blok berikut adalah contoh konfigurasi grup root. Konfigurasi ini menentukan kasus uji *MQTT Connect Happy Case* dan *MQTT Connect Exponential Backoff* Retries, bersama dengan deskripsi bidang konfigurasi.

```
{
    "configuration": {},  // Suite-level configuration
    "tests": [            // Group definitions should be provided here
      {
        "name": "My_MQTT_Connect_Group",  // Group definition name
        "configuration": {}               // Group definition-level configuration,
        "tests": [                        // Test case definitions should be provided here
        {
            "name": "My_MQTT_Connect_Happy_Case",  // Test case definition name
            "configuration": {
                "EXECUTION_TIMEOUT": 300        // Test case definition-level configuration, in seconds
            }, 
            "test": {
                "id": "MQTT_Connect",              // test case id
                "version": "0.0.0"                 // test case version
            }
        },
        {
            "name": "My_MQTT_Connect_Jitter_Backoff_Retries",  // Test case definition name
            "configuration": {
                "EXECUTION_TIMEOUT": 600                 // Test case definition-level configuration,  in seconds
            },
            "test": {
                "id": "MQTT_Connect_Jitter_Backoff_Retries",  // test case id
                "version": "0.0.0"                                 // test case version
            }
        }]
    }]
}
```

Anda harus menyediakan konfigurasi grup root saat membuat definisi rangkaian pengujian. Simpan `suiteDefinitionId` yang dikembalikan dalam objek respon. Anda dapat menggunakan ID ini untuk mengambil informasi definisi rangkaian pengujian dan menjalankan rangkaian pengujian Anda.

Berikut adalah contoh Java SDK:

```
response = iotDeviceAdvisorClient.createSuiteDefinition(
        CreateSuiteDefinitionRequest.builder()
            .suiteDefinitionConfiguration(SuiteDefinitionConfiguration.builder()
                .suiteDefinitionName("your-suite-definition-name")
                .devices(
                    DeviceUnderTest.builder()
                        .thingArn("your-test-device-thing-arn")
                        .certificateArn("your-test-device-certificate-arn")
                        .deviceRoleArn("your-device-role-arn") //if using SigV4 for MQTT over WebSocket
                        .build()
                )
                .rootGroup("your-root-group-configuration")
                .devicePermissionRoleArn("your-device-permission-role-arn")
                .protocol("MqttV3_1_1 || MqttV5 || MqttV3_1_1_OverWebSocket || MqttV5_OverWebSocket")
                .build()
            )
            .build()
)
```

## Dapatkan definisi test suite
<a name="device-advisor-workflow-describe-suite-run"></a>

Setelah membuat definisi rangkaian pengujian, Anda menerima objek respons operasi `CreateSuiteDefinition` API. `suiteDefinitionId`

Ketika operasi mengembalikan`suiteDefinitionId`, Anda mungkin melihat `id` bidang baru dalam setiap grup dan definisi kasus uji dalam grup root. Anda dapat menggunakan ini IDs untuk menjalankan subset definisi rangkaian pengujian Anda.

Contoh SDK Java: 

```
response = iotDeviceAdvisorClient.GetSuiteDefinition(
    GetSuiteDefinitionRequest.builder()
        .suiteDefinitionId("your-suite-definition-id")
        .build()
)
```

## Dapatkan titik akhir pengujian
<a name="device-advisor-workflow-get-test-endpoint"></a>

Gunakan operasi `GetEndpoint` API untuk mendapatkan titik akhir pengujian yang digunakan oleh perangkat Anda. Pilih titik akhir yang paling sesuai dengan pengujian Anda. Untuk menjalankan beberapa rangkaian pengujian secara bersamaan, gunakan titik akhir tingkat Perangkat dengan menyediakan,, atau`thing ARN`. `certificate ARN` `device role ARN` Untuk menjalankan rangkaian pengujian tunggal, jangan berikan argumen ke GetEndpoint operasi untuk memilih titik akhir tingkat Akun. 

Contoh SDK:

```
response = iotDeviceAdvisorClient.getEndpoint(GetEndpointRequest.builder()
.certificateArn("your-test-device-certificate-arn")
.thingArn("your-test-device-thing-arn")
.deviceRoleArn("your-device-role-arn") //if using SigV4 for MQTT over WebSocket                
.build())
```

## Memulai rangkaian uji coba
<a name="device-advisor-workflow-start-suite-run"></a>

Setelah Anda membuat definisi rangkaian pengujian dan mengonfigurasi perangkat pengujian Anda untuk terhubung ke titik akhir pengujian Device Advisor, jalankan rangkaian pengujian Anda dengan API. `StartSuiteRun` 

Untuk pelanggan MQTT, gunakan salah satu `certificateArn` atau `thingArn` untuk menjalankan rangkaian pengujian. Jika keduanya dikonfigurasi, sertifikat digunakan jika itu milik benda tersebut.

Untuk MQTT over WebSocket customer, gunakan `deviceRoleArn` untuk menjalankan test suite. Jika peran yang ditentukan berbeda dari peran yang ditentukan dalam definisi rangkaian pengujian, peran yang ditentukan akan mengesampingkan peran yang ditentukan.

Untuk`.parallelRun()`, gunakan `true` jika Anda menggunakan titik akhir tingkat Perangkat untuk menjalankan beberapa rangkaian pengujian secara paralel menggunakan satu. Akun AWS

Contoh SDK:

```
response = iotDeviceAdvisorClient.startSuiteRun(StartSuiteRunRequest.builder()
.suiteDefinitionId("your-suite-definition-id")
.suiteRunConfiguration(SuiteRunConfiguration.builder()
    .primaryDevice(DeviceUnderTest.builder()
        .certificateArn("your-test-device-certificate-arn")
        .thingArn("your-test-device-thing-arn")
        .deviceRoleArn("your-device-role-arn") //if using SigV4 for MQTT over WebSocket               
        .build())
    .parallelRun(true | false)    
    .build())
.build())
```

Simpan `suiteRunId` dari respon. Anda akan menggunakan ini untuk mengambil hasil test suite run ini.

## Menjalankan test suite
<a name="device-advisor-workflow-describe-suite"></a>

Setelah Anda memulai test suite run, Anda dapat memeriksa kemajuan dan hasilnya dengan `GetSuiteRun` API.

Contoh SDK:

```
// Using the SDK, call the GetSuiteRun API.

response = iotDeviceAdvisorClient.GetSuiteRun(
GetSuiteRunRequest.builder()
    .suiteDefinitionId("your-suite-definition-id")
    .suiteRunId("your-suite-run-id")
.build())
```

## Hentikan uji coba yang dijalankan
<a name="device-advisor-workflow-stop-suite-run"></a>

Untuk menghentikan rangkaian pengujian yang masih berlangsung, Anda dapat memanggil operasi `StopSuiteRun` API. Setelah Anda memanggil `StopSuiteRun` operasi, layanan memulai proses pembersihan. Saat layanan menjalankan proses pembersihan, rangkaian pengujian menjalankan pembaruan status ke`Stopping`. Proses pembersihan bisa memakan waktu beberapa menit. Setelah proses selesai, rangkaian pengujian menjalankan pembaruan status ke`Stopped`. Setelah test run benar-benar berhenti, Anda n memulai test suite run lainnya. Anda dapat memeriksa status suite run secara berkala menggunakan operasi `GetSuiteRun` API, seperti yang ditunjukkan pada bagian sebelumnya. 

Contoh SDK:

```
// Using the SDK, call the StopSuiteRun API.

response = iotDeviceAdvisorClient.StopSuiteRun(
StopSuiteRun.builder()
    .suiteDefinitionId("your-suite-definition-id")
    .suiteRunId("your-suite-run-id")
.build())
```

## Dapatkan laporan kualifikasi untuk menjalankan rangkaian tes kualifikasi yang sukses
<a name="device-advisor-workflow-qualification-report"></a>

Jika Anda menjalankan rangkaian pengujian kualifikasi yang berhasil diselesaikan, Anda dapat mengambil laporan kualifikasi dengan operasi `GetSuiteRunReport` API. Anda menggunakan laporan kualifikasi ini untuk memenuhi syarat perangkat Anda dengan program AWS IoT Core kualifikasi. Untuk menentukan apakah rangkaian pengujian Anda adalah rangkaian pengujian kualifikasi, periksa apakah `intendedForQualification` parameter disetel ke`true`. Setelah memanggil operasi `GetSuiteRunReport` API, Anda dapat mengunduh laporan dari URL yang dikembalikan hingga 90 detik. Jika lebih dari 90 detik berlalu dari waktu sebelumnya Anda memanggil `GetSuiteRunReport` operasi, panggil operasi lagi untuk mengambil URL baru yang valid. 

Contoh SDK:

```
// Using the SDK, call the getSuiteRunReport API. 

response = iotDeviceAdvisorClient.getSuiteRunReport( 
    GetSuiteRunReportRequest.builder() 
        .suiteDefinitionId("your-suite-definition-id")
        .suiteRunId("your-suite-run-id")
        .build()
)
```