Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat executable uji kasus IDT
Anda dapat membuat dan menempatkan executable uji kasus dalam folder rangkaian tes dengan cara berikut:
-
Untuk rangkaian tes yang menggunakan argumen atau variabel lingkungan dari file
test.json
untuk menentukan tes mana yang akan dijalankan, Anda dapat membuat uji kasus tunggal yang dapat dieksekusi untuk seluruh rangkaian tes, atau tes yang dapat dijalankan untuk setiap grup uji di rangkaian tes. -
Untuk rangkaian tes di mana Anda ingin menjalankan tes tertentu berdasarkan perintah tertentu, Anda membuat satu executable uji kasus untuk setiap uji kasus di rangkaian tes.
Sebagai penyusun tes, Anda dapat menentukan pendekatan yang sesuai untuk kasus penggunaan Anda dan menyusun executable uji kasus yang sesuai. Pastikan bahwa Anda menyediakan jalur eksekusi uji kasus yang benar di setiaptest.json
file, dan bahwa executable yang ditentukan berjalan dengan benar.
Ketika semua perangkat siap untuk dijalankan oleh uji kasus, IDT akan membaca file-file berikut:
-
test.json
untuk uji kasus yang dipilih menentukan proses yang akan dimulai dan variabel lingkungan yang akan diatur. -
suite.json
untuk rangkaian uji tersebut menentukan variabel lingkungan yang akan diatur.
IDT memulai proses eksekusi tes yang diperlukan berdasarkan perintah dan argumen yang ditentukan dalamtest.json
file, dan melewati variabel lingkungan yang diperlukan untuk proses tersebut.
Gunakan IDT Client SDK
IDT Client SDK memungkinkan Anda cara Anda menulis logika uji di executable tes Anda dengan perintah API yang dapat Anda gunakan untuk berinteraksi dengan IDT dan perangkat Anda yang sedang diuji. IDT saat ini menyediakan SDK berikut:
-
IDT Client SDK for Python
-
IDT Client SDK for Go
-
IDT Client SDK for Java
SDK ini terletak di folder
. Ketika Anda membuat executable uji kasus yang baru, Anda harus menyalin SDK yang ingin Anda gunakan ke folder yang berisi executable uji kasus dan mengacu pada SDK dalam kode Anda. Bagian ini memberikan penjelasan singkat tentang perintah API yang tersedia yang dapat Anda gunakan dalam executable uji kasus Anda. <device-tester-extract-location>
/sdks
Dalam Bagian Ini
Interaksi perangkat
Perintah berikut memungkinkan Anda untuk berkomunikasi dengan perangkat yang diuji tanpa harus menerapkan interaksi perangkat tambahan dan fungsi manajemen konektivitas apa pun.
ExecuteOnDevice
-
Memungkinkan rangkaian tes untuk menjalankan perintah shell pada perangkat yang mendukung SSH atau koneksi Docker shell.
CopyToDevice
-
Memungkinkan rangkaian tes untuk menyalin file lokal dari mesin host yang menjalankan IDT ke lokasi yang ditentukan pada perangkat yang mendukung SSH atau koneksi Docker shell.
ReadFromDevice
-
Memungkinkan rangkaian tes untuk membaca dari port serial perangkat yang mendukung koneksi UART.
catatan
Karena IDT tidak mengelola koneksi langsung ke perangkat yang dibuat menggunakan informasi akses perangkat dari konteks, sebaiknya gunakan perintah API interaksi perangkat ini di executable uji kasus. Namun, jika perintah ini tidak memenuhi persyaratan uji kasus Anda, maka Anda dapat mengambil informasi akses perangkat dari konteks IDT dan menggunakannya untuk membuat koneksi langsung ke perangkat dari rangkaian tes.
Untuk membuat sambungan langsung, ambil informasi di device.connectivity
dan resource.devices.connectivity
masing-masing untuk perangkat Anda yang sedang diuji dan untuk perangkat sumber daya. Untuk informasi lebih lanjut mengenai penggunaan konteks IDT, lihat Gunakan konteks IDT.
Interaksi IDT
Perintah berikut memungkinkan rangkaian tes Anda untuk berkomunikasi dengan IDT.
PollForNotifications
-
Memungkinkan rangkaian tes untuk memeriksa notifikasi dari IDT.
GetContextValue
danGetContextString
-
Memungkinkan rangkaian tes untuk mengambil nilai-nilai dari konteks IDT. Untuk informasi selengkapnya, lihat Gunakan konteks IDT.
SendResult
-
Memungkinkan rangkaian tes untuk melaporkan hasil uji kasus ke IDT. Perintah ini harus dipanggil pada akhir setiap uji kasus di rangkaian tes.
Interaksi host
Perintah berikut memungkinkan rangkaian tes Anda untuk berkomunikasi dengan mesin host.
PollForNotifications
-
Memungkinkan rangkaian tes untuk memeriksa notifikasi dari IDT.
GetContextValue
danGetContextString
-
Memungkinkan rangkaian tes untuk mengambil nilai-nilai dari konteks IDT. Untuk informasi selengkapnya, lihat Gunakan konteks IDT.
ExecuteOnHost
-
Memungkinkan rangkaian tes untuk menjalankan perintah pada mesin lokal dan memungkinkan IDT untuk mengelola siklus hidup executable uji kasus.
Aktifkan perintah IDT CLI
Perintah run-suite
IDT CLI menyediakan beberapa pilihan yang membiarkan test runner untuk mengkustomisasi pelaksanaan tes. Untuk memungkinkan test runner menggunakan opsi ini untuk menjalankan rangkaian tes kustom Anda, Anda menerapkan dukungan untuk IDT CLI. Jika Anda tidak menerapkan dukungan, test runner masih akan dapat menjalankan tes, tetapi beberapa opsi CLI tidak akan berfungsi dengan benar. Untuk memberikan pengalaman pelanggan yang ideal, kami merekomendasikan agar Anda menerapkan dukungan untuk argumen berikut untuk perintah run-suite
dalam IDT CLI:
timeout-multiplier
-
Menentukan nilai yang lebih besar dari 1,0 yang akan diterapkan pada semua batas waktu saat menjalankan tes.
Test runner dapat menggunakan argumen ini untuk meningkatkan batas waktu untuk uji kasus yang ingin dijalankannya. Ketika test runner menentukan argumen ini pada perintah
run-suite
, IDT akan menggunakannya untuk menghitung nilai variabel lingkungan IDT_TEST_TIMEOUT dan menetapkan kolomconfig.timeoutMultiplier
dalam konteks IDT. Untuk mendukung argumen ini, Anda harus melakukan hal berikut:-
Alih-alih langsung menggunakan nilai batas waktu dari file
test.json
, baca variabel lingkungan IDT_TEST_TIMEOUT untuk mendapatkan nilai batas waktu yang dihitung dengan benar. -
Ambil nilai
config.timeoutMultiplier
dari konteks IDT dan terapkan ia pada batas waktu yang panjang.
Untuk informasi selengkapnya tentang keluar lebih awal karena peristiwa habis waktu, lihat Tentukan perilaku keluar.
-
stop-on-first-failure
-
Tentukan bahwa IDT harus berhenti menjalankan semua tes jika menemui kegagalan.
Ketika test runner menentukan argumen ini pada perintah
run-suite
, IDT akan berhenti menjalankan pengujian tersebut segera setelah menemui kegagalan. Namun, jika uji kasus berjalan secara paralel, hal ini dapat menyebabkan hasil yang tidak terduga. Untuk menerapkan dukungan, pastikan bahwa jika IDT menemui peristiwa ini, logika pengujian Anda akan menginstruksikan semua uji kasus yang sedang berjalan untuk berhenti, membersihkan sumber daya sementara, dan melaporkan hasil tes ke IDT. Untuk informasi selengkapnya tentang keluar lebih awal karena menemui kegagalan, lihat Tentukan perilaku keluar. group-id
dantest-id
-
Menentukan bahwa IDT harus menjalankan hanya grup uji atau uji kasus yang dipilih.
Test runner dapat menggunakan argumen ini dengan perintah
run-suite
untuk menentukan perilaku eksekusi tes berikut:-
Jalankan semua tes di dalam grup uji yang ditentukan.
-
Jalankan pilihan tes dari dalam grup uji tertentu.
Untuk mendukung argumen ini, orkestrator tes untuk rangkaian tes Anda harus menyertakan serangkaian
Choice
keadaanRunTask
dan keadaan tertentu dalam orkestrator pengujian Anda. Jika Anda tidak menggunakan state machine kustom, maka state machine IDT default akan meliputi keadaan yang diperlukan untuk Anda dan Anda tidak perlu melakukan tindakan tambahan. Namun, jika Anda menggunakan state orkestrator kustom, gunakanContoh mesin status: Jalankan grup uji yang dipilih pengguna sebagai contoh untuk menambahkan keadaan yang diperlukan dalam orkestrator tes Anda. -
Untuk informasi selengkapnya tentang perintah IDT CLI, lihat Debug dan jalankan rangkaian tes kustom.
Menulis log peristiwa
Saat tes berjalan, Anda mengirim data ke stdout
dan stderr
untuk menuliskan log peristiwa dan pesan kesalahan pada konsol. Untuk informasi lebih lanjut tentang format pesan konsol, lihat Format pesan konsol.
Ketika IDT selesai menjalankan rangkaian tes tersebut, informasi ini juga tersedia di file test_manager.log
yang terletak di
.<devicetester-extract-location>
/results/<execution-id>
/logs
Anda dapat mengonfigurasi setiap uji kasus untuk menuliskan log dari pengujiannya yang dijalankan, termasuk log dari perangkat yang diuji, ke file
yang terletak di <group-id>
_<test-id>
. Untuk melakukan ini, ambil path ke berkas log dari konteks IDT dengan kueri <device-tester-extract-location>
/results/execution-id
/logstestData.logFilePath
, buat file di path itu, dan tuliskan konten yang Anda inginkan padanya. IDT secara otomatis memperbarui jalur berdasarkan uji kasus yang berjalan. Jika Anda memilih untuk tidak membuat file log untuk uji kasus, maka tidak ada file yang akan dibuat untuk uji kasus itu.
Anda juga dapat mengatur executable teks Anda untuk membuat berkas log tambahan yang diperlukan dalam folder
. Kami menyarankan Anda untuk menentukan prefiks yang unik untuk nama file log sehingga file Anda tidak akan ditimpa.<device-tester-extract-location>
/logs
Laporkan hasil ke IDT
IDT menuliskan hasil tes ke file awsiotdevicetester_report.xml
dan
. File laporan ini terletak di suite-name
_report.xml
. Kedua laporan tersebut menangkap hasil dari eksekusi rangkaian tes. Untuk informasi selengkapnya tentang skema yang menggunakan IDT untuk laporan ini, lihat Tinjau hasil tes dan log IDT<device-tester-extract-location>
/results/<execution-id>
/
Untuk mengisi konten file
, Anda harus menggunakan perintah suite-name
_report.xmlSendResult
untuk melaporkan hasil tes ke IDT sebelum eksekusi tes itu selesai. Jika IDT tidak dapat menemukan hasil tes, ia akan mengeluarkan kesalahan untuk uji kasus tersebut. Kutipan Python berikut menunjukkan perintah yang akan mengirimkan hasil tes ke IDT:
request-variable
= SendResultRequest(TestResult(result
)) client.send_result(request-variable
)
Jika Anda tidak melaporkan hasil melalui API, IDT akan mencari hasil tes di folder artefak tes. Path ke folder ini disimpan dalam testData.testArtifactsPath
yang disimpan dalam konteks IDT. Dalam folder ini, IDT menggunakan file XML yang diurutkan menurut abjad pertama yang ditempatkannya sebagai hasil tes.
Jika logika tes Anda menghasilkan hasil JUnit XML, Anda dapat menuliskan hasil tes itu ke file XML dalam folder artefak untuk langsung memberikan hasil ke IDT dan bukan mem-parsing hasilnya dan kemudian menggunakan API untuk mengirimkannya ke IDT.
Jika Anda menggunakan metode ini, pastikan bahwa logika pengujian Anda secara akurat merangkum hasil pengujian dan memformat file hasil Anda dalam format yang sama seperti file
. IDT tidak melakukan validasi data yang Anda berikan, dengan pengecualian berikut:suite-name
_report.xml
-
IDT mengabaikan semua properti dari tanda
testsuites
. Sebaliknya, IDT menghitung properti tag dari hasil grup pengujian lainnya yang dilaporkan. -
Setidaknya satu
testsuite
tag harus ada dalamtestsuites
.
Karena IDT menggunakan folder artefak yang sama untuk semua uji kasus dan tidak menghapus file hasil antara pengujian yang berjalan, metode ini mungkin juga akan menyebabkan pelaporan yang salah jika IDT membaca file yang salah. Kami menyarankan Anda menggunakan nama yang sama untuk file hasil XML yang dihasilkan di semua uji kasus untuk menimpa hasil untuk setiap uji kasus dan pastikan bahwa hasil yang benar tersedia untuk digunakan oleh IDT. Meskipun Anda dapat menggunakan pendekatan campuran untuk pelaporan di rangkaian pengujian Anda, yaitu menggunakan file hasil XML untuk beberapa uji kasus dan mengirimkan hasil melalui API untuk uji kasus lainnya, kami tidak merekomendasikan pendekatan ini.
Tentukan perilaku keluar
Konfigurasikan executable teks Anda agar selalu keluar dengan kode keluar 0, meskipun uji kasus melaporkan kegagalan atau hasil kesalahan. Gunakan kode keluar bukan nol hanya untuk menunjukkan bahwa suatu uji kasus tidak berjalan atau jika executable uji kasus tidak dapat menyampaikan hasil apapun ke IDT. Ketika IDT menerima kode keluar bukan nol, IDT akan menandai uji kasus tersebut telah mengalami kesalahan yang mencegahnya berjalan.
IDT mungkin meminta atau mengharapkan uji kasus untuk berhenti berjalan sebelum selesai dalam peristiwa berikut. Gunakan informasi ini untuk mengonfigurasi executable uji kasus untuk mendeteksi setiap peristiwa ini dari uji kasus:
- Batas waktu
-
Terjadi ketika uji kasus berjalan lebih lama daripada nilai batas waktu yang ditentukan dalam file
test.json
. Jika test runner menggunakan argumentimeout-multiplier
untuk menentukan pengali batas waktu, IDT akan menghitung nilai batas waktu dengan pengali tersebut.Untuk mendeteksi peristiwa ini, gunakan variabel lingkungan IDT_TEST_TIMEOUT. Ketika test runner meluncurkan tes, IDT akan menetapkan nilai variabel lingkungan IDT_TEST_TIMEOUT pada nilai batas waktu yang dihitung (dalam detik) dan melewati variabel pada executable uji kasus. Anda dapat membaca nilai variabel untuk menetapkan penghitung waktu yang sesuai.
- Interupsi
-
Terjadi ketika test runner menginterupsi IDT. Misalnya, dengan menekan Ctrl+C.
Karena terminal menyebarkan sinyal ke semua proses anak, Anda cukup mengonfigurasi bagian yang menangani sinyal dalam uji kasus Anda untuk mendeteksi sinyal yang terinterupsi.
Atau, Anda dapat secara berkala mengumpulkan API untuk memeriksa nilai boolean
CancellationRequested
di respons APIPollForNotifications
. Ketika IDT menerima sinyal terinterupsi, ia akan menetapkan nilai booleanCancellationRequested
untuktrue
. - Berhenti pada kegagalan pertama
-
Terjadi ketika uji kasus yang berjalan secara paralel dengan uji kasus gagal dan test runner menggunakan argumen
stop-on-first-failure
untuk menentukan bahwa IDT harus berhenti ketika menemui kegagalan apa pun.Untuk mendeteksi peristiwa ini, Anda dapat secara berkala mengumpulkan API untuk memeriksa nilai boolean
CancellationRequested
di respons APIPollForNotifications
. Ketika IDT menemui kegagalan dan dikonfigurasi untuk berhenti pada kegagalan pertama, tetapkan nilai booleanCancellationRequested
untuktrue
.
Ketika salah satu peristiwa ini terjadi, IDT akan menunggu selama 5 menit untuk setiap uji kasus yang sedang berjalan saat ini untuk menyelesaikan prosesnya. Jika semua uji kasus yang berjalan tidak keluar dalam waktu 5 menit, IDT akan memaksa masing-masing proses untuk berhenti. Jika IDT belum menerima hasil tes sebelum proses berakhir, ia akan menandai uji kasus telah habis waktu. Sebagai praktik terbaik, Anda harus memastikan bahwa uji kasus Anda melakukan tindakan berikut ketika menghadapi salah satu peristiwa berikut:
-
Berhenti menjalankan logika uji normal.
-
Bersihkan sumber daya sementara apa pun, seperti uji artefak pada perangkat yang sedang diuji.
-
Laporkan hasil tes ke IDT, seperti kegagalan uji atau kesalahan.
-
Keluar