Tutorial: Kembangkan rangkaian tes IDT sederhana - AWS IoT Greengrass

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

Tutorial: Kembangkan rangkaian tes IDT sederhana

Rangkaian tes menggabungkan hal berikut:

  • Executable tes yang berisi logika tes

  • File konfigurasi yang menggambarkan rangkaian tes

Tutorial ini menunjukkan cara menggunakan IDT untuk AWS IoT Greengrass untuk mengembangkan rangkaian tes Python yang berisi kasus tes tunggal. Dalam tutorial ini, Anda akan melakukan langkah-langkah berikut:

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut ini:

  • Persyaratan komputer host

    • Versi AWS IoT Device Tester terbaru

    • Python 3.7 atau yang lebih baru

      Untuk memeriksa versi Python yang diinstal pada komputer Anda, jalankan perintah berikut:

      python3 --version

      Pada Windows, jika penggunaan perintah ini menghasilkan kesalahan, gunakan python --version sebagai gantinya. Jika nomor versi yang dikembalikan adalah 3,7 atau lebih besar, jalankan perintah berikut di terminal Powershell untuk mengatur python3 sebagai alias untuk perintah python.

      Set-Alias -Name "python3" -Value "python"

      Jika tidak ada informasi versi yang dikembalikan atau jika nomor versi kurang dari 3,7, ikuti petunjuk di Mengunduh Py untuk menginstal Python 3.7+. Untuk informasi selengkapnya, lihat dokumentasi Python.

    • urllib3

      Untuk memverifikasi bahwa urllib3 diinstal dengan benar, jalankan perintah berikut:

      python3 -c 'import urllib3'

      Jika urllib3 belum terinstal, gunakan perintah berikut untuk menginstalnya:

      python3 -m pip install urllib3
  • Persyaratan perangkat

    • Perangkat dengan sistem operasi Linux dan koneksi jaringan ke jaringan yang sama dengan komputer host Anda.

      Kami menyarankan agar Anda menggunakan Raspberry Pi dengan OS Raspberry Pi. Pastikan Anda mengatur SSH pada Raspberry Pi Anda untuk terhubung secara jarak jauh ke sana.

Buat direktori rangkaian tes

IDT secara logis memisahkan uji kasus ke dalam grup uji dalam setiap rangkaian tes. Setiap uji kasus harus berada di dalam grup uji. Untuk tutorial ini, buat folder bernama MyTestSuite_1.0.0 dan buat pohon direktori berikut dalam folder ini:

MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase

Buat file konfigurasi

Rangkaian tes Anda harus berisi rangkaian tes berikut iniFile konfigurasi:

File konfigurasi yang diperlukan

suite.json

Berisi informasi tentang rangkaian pengujian. Lihat Konfigurasikan suite.json.

group.json

Berisi informasi tentang grup uji. Anda harus membuat file group.json untuk setiap grup uji di rangkaian tes Anda. Lihat Konfigurasikan group.json.

test.json

Berisi informasi tentang grup uji. Anda harus membuat file test.json untuk setiap grup uji di rangkaian tes Anda. Lihat Konfigurasikan test.json.

  1. Di folder MyTestSuite_1.0.0/suite, buat file suite.json dengan struktur berikut:

    { "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
  2. Di folder MyTestSuite_1.0.0/myTestGroup, buat file group.json dengan struktur berikut:

    { "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
  3. Di folder MyTestSuite_1.0.0/myTestGroup/myTestCase, buat file test.json dengan struktur berikut:

    { "id": "MyTestCase", "title": "My Test Case", "details": "This is my test case.", "execution": { "timeout": 300000, "linux": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "mac": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "win": { "cmd": "python3", "args": [ "myTestCase.py" ] } } }

Pohon direktori untuk folder MyTestSuite_1.0.0 Anda sekarang akan terlihat seperti berikut ini:

MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json

Dapatkan SDK klien IDT

Anda menggunakan SDK Klien IDT untuk memungkinkan IDT berinteraksi dengan perangkat yang sedang diuji dan melaporkan hasil pengujian. Untuk tutorial ini, Anda akan menggunakan versi Python dari SDK.

Dari folder <device-tester-extract-location>/sdks/python/, salin folder idt_client ke folder MyTestSuite_1.0.0/suite/myTestGroup/myTestCase Anda.

Untuk memverifikasi bahwa SDK berhasil disalin, jalankan perintah berikut.

cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'

Buat executable uji kasus

Executable uji kasus berisi logika tes yang ingin Anda jalankan. Sebuah rangkaian tes dapat berisi beberapa executable uji kasus. Untuk tutorial ini, Anda hanya akan membuat satu executable uji kasus.

  1. Buat file rangkaian test.

    Di folder MyTestSuite_1.0.0/suite/myTestGroup/myTestCase, buat file myTestCase.py dengan konten berikut:

    from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
  2. Gunakan fungsi SDK klien untuk menambahkan logika uji berikut ke file myTestCase.py Anda:

    1. Jalankan perintah SSH pada perangkat yang diuji.

      from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() # Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout) if __name__ == "__main__": main()
    2. Kirim hasil tes ke IDT.

      from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() # Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout) # Create a send result request sr_req = SendResultRequest(TestResult(passed=True)) # Send the result client.send_result(sr_req) if __name__ == "__main__": main()

Konfigurasi informasi perangkat untuk IDT

Konfigurasi informasi perangkat Anda untuk IDT untuk menjalankan tes. Anda harus memperbarui templat device.json yang terletak di folder <device-tester-extract-location>/configs dengan informasi berikut.

[ { "id": "pool", "sku": "N/A", "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh", "ip": "<ip-address>", "port": "<port>", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", "privKeyPath": "/path/to/private/key", "password": "<password>" } } } } ] } ]

Di objek devices, berikan informasi berikut:

id

Pengenal unik yang ditetapkan pengguna untuk perangkat Anda.

connectivity.ip

Alamat IP perangkat Anda.

connectivity.port

Tidak wajib. Nomor port yang digunakan untuk koneksi SSH ke perangkat Anda.

connectivity.auth

Informasi autentikasi untuk koneksi tersebut.

Properti ini hanya berlaku jika connectivity.protocol diatur ke ssh.

connectivity.auth.method

Metode autentikasi yang digunakan untuk mengakses perangkat melalui protokol konektivitas yang diberikan.

Nilai yang didukung adalah:

  • pki

  • password

connectivity.auth.credentials

Kredensial yang digunakan untuk autentikasi.

connectivity.auth.credentials.user

Nama pengguna yang digunakan untuk masuk ke perangkat Anda.

connectivity.auth.credentials.privKeyPath

Jalur lengkap ke kunci pribadi yang digunakan untuk masuk ke perangkat Anda.

Nilai ini hanya berlaku jika connectivity.auth.method diatur ke pki.

devices.connectivity.auth.credentials.password

Kata sandi yang digunakan untuk masuk ke perangkat Anda.

Nilai ini hanya berlaku jika connectivity.auth.method diatur ke password.

catatan

Tentukan privKeyPath hanya jika method diatur ke pki.

Tentukan password hanya jika method diatur ke password.

Jalankan rangkaian tes

Setelah Anda membuat rangkaian tes Anda, Anda ingin memastikan bahwa rangkaian tes itu berfungsi seperti yang diharapkan. Selesaikan langkah-langkah berikut untuk menjalankan rangkaian pengujian dengan kolam perangkat yang sudah ada untuk melakukannya.

  1. Salin folder MyTestSuite_1.0.0 Anda ke dalam <device-tester-extract-location>/tests.

  2. Jalankan perintah berikut:

    cd <device-tester-extract-location>/bin ./devicetester_[linux | mac | win_x86-64] run-suite --suite-id MyTestSuite

IDT menjalankan rangkaian tes Anda dan mengalirkan hasilnya ke konsol. Ketika tes telah selesai berjalan, Anda akan melihat informasi berikut:

time="2020-10-19T09:24:47-07:00" level=info msg=Using pool: pool time="2020-10-19T09:24:47-07:00" level=info msg=Using test suite "MyTestSuite_1.0.0" for execution time="2020-10-19T09:24:47-07:00" level=info msg=b'hello world\n' suiteId=MyTestSuite groupId=myTestGroup testCaseId=myTestCase deviceId=my-device executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:47-07:00" level=info msg=All tests finished. executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:48-07:00" level=info msg= ========== Test Summary ========== Execution Time: 1s Tests Completed: 1 Tests Passed: 1 Tests Failed: 0 Tests Skipped: 0 ---------------------------------- Test Groups: myTestGroup: PASSED ---------------------------------- Path to IoT Device Tester Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/awsiotdevicetester_report.xml Path to Test Execution Logs: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/logs Path to Aggregated JUnit Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/MyTestSuite_Report.xml

Pemecahan Masalah

Gunakan informasi berikut untuk membantu menyelesaikan masalah dengan menyelesaikan tutorial.

Uji kasus tidak berjalan dengan sukses

Jika tes tidak berjalan sukses, IDT akan mengalirkan log kesalahan ke konsol yang dapat membantu Anda memecahkan masalah uji coba. Sebelum Anda memeriksa log kesalahan, verifikasi hal berikut:

  • SDK Klien IDT berada dalam folder yang benar seperti yang dijelaskan dalam langkah ini.

  • Pastikan Anda memenuhi semua prasyarat untuk tutorial ini.

Tidak dapat menyambung ke perangkat yang sedang diuji

Verifikasi hal berikut:

  • File device.json Anda berisi alamat IP, port, dan informasi autentikasi yang benar.

  • Anda dapat terhubung ke perangkat Anda melalui SSH dari komputer host Anda.