Halaman ini memberikan ringkasan library Framework Pengujian SDV dan memandu Anda dalam menyiapkan, mengonfigurasi, dan menjalankan pengujian. Gunakan Framework Pengujian SDV untuk pengujian menyeluruh. Alat ini dibuat di Mobly; Anda menulis pengujian di Python.
Memilih pendekatan pengujian
Sebelum menulis pengujian, pilih runner pengujian yang sesuai dengan cakupan verifikasi Anda:
| Cakupan pengujian | Jenis modul Soong | Alat eksekusi | Kapan digunakan |
|---|---|---|---|
| Pengujian unit paket layanan | rust_test, rust_test_host, atau cc_test |
atest |
Verifikasi logika bisnis Rust atau C++ yang terisolasi, transformasi data, atau crate helper di host atau satu virtual machine (VM) Cuttlefish. |
| Pengujian sistem menyeluruh dan multi-VM | python_test_host (Framework Pengujian SDV) |
atest atau CATBox |
Verifikasi orkestrasi siklus proses paket layanan, komunikasi antar-VM, bridging SOME/IP, atau target hardware di satu hingga tiga VM. |
Menyiapkan lingkungan
Halaman ini mengasumsikan bahwa Anda telah menyiapkan workstation untuk SDV. Untuk menjalankan pengujian Framework, instal virtualenv.
Dependensi Python
Pendekatan yang direkomendasikan untuk mengelola dependensi di Android adalah dengan memaketkan pengujian, Python, dan dependensinya sebagai file yang dapat dieksekusi menggunakan konfigurasi build. Anda harus mengikuti pendekatan ini di repositori pengujian SDV.
Library Framework Pengujian SDV menyediakan dependensi ini secara default:
moblyabsl-pyDiperlukan untuk menggunakan parameterisasi dalam pengujian.pexpectDiperlukan untuk fungsi perintah interaktif.ptyprocessDiperlukan untuk fungsi perintah interaktif.
Jika Anda memerlukan dependensi khusus pengujian, sertakan dependensi tersebut dalam file Android.bp
pengujian:
python_test_host {
…
libs: [
"<DEPENDENCY1>",
"<DEPENDENCY2>",
…
],
…
}
Jenis uji sistem
Anda membuat uji sistem menggunakan Framework Pengujian SDV. Framework ini membedakan jenis-jenis berikut. Kategorikan pengujian dengan benar:
- Pengujian sampel: Jalankan layanan sampel SDV dan verifikasi bahwa hasilnya sesuai dengan output yang diharapkan.
- Pengujian E2E: Jangan gunakan layanan contoh SDV.
- Pengujian yang berjalan lama: Dirancang untuk periode eksekusi yang diperpanjang.
- Pengujian performa: Gunakan library
perfetto. - Pengujian hardware: Dirancang untuk dijalankan secara eksklusif di perangkat fisik, bukan di Cuttlefish (CF).
Membuat pengujian
Semua pengujian yang ditulis menggunakan framework harus berada di repositori pengujian. Lokasi pasti pengujian bergantung pada jenisnya. Untuk jalur direktori, template class pengujian Python, aturan Android.bp, dan panduan coding Mobly, lihat Pembuatan uji sistem SDV.
Mengonfigurasi pengujian
Konfigurasikan semua pengujian agar berjalan menggunakan atest dan CATBox.
Mengonfigurasi atest
Framework ini menyediakan template untuk pengujian satu, dua, dan tiga VM. Tambahkan kode berikut ke file Android.bp Anda:
Satu VM:
python_test_host { ... test_config_template: ":sdv_one_device", }Dua VM:
python_test_host { ... test_config_template: ":sdv_two_devices", }Tiga VM:
python_test_host { ... test_config_template: ":sdv_three_devices", }
Template default sudah cukup untuk sebagian besar pengujian. Hindari membuat konfigurasi kustom kecuali ada alasan yang kuat.
Memperbarui waktu tunggu default
Waktu tunggu default seharusnya cukup untuk menjalankan pengujian secara lokal.
Jika pengujian Anda gagal secara lokal karena waktu tunggu habis, pertimbangkan untuk membaginya menjadi pengujian yang berbeda. Pengujian yang sangat panjang dengan banyak kasus pengujian dapat menyebabkan bottleneck dalam eksekusi.
Jika Anda harus menetapkan waktu tunggu yang lebih tinggi dari default, lanjutkan membaca.
Mengganti waktu tunggu default
Framework ini tidak mendukung perluasan template untuk eksekusi atest.
Oleh karena itu, gunakan template yang disediakan yang menawarkan waktu tunggu yang diperpanjang.
Satu pengujian panjang VM:
python_test_host { ... test_config_template: ":sdv_one_device_long_test", }Pengujian panjang dua VM:
python_test_host { ... test_config_template: ":sdv_two_devices_long_test", }
Tambahkan komentar yang dengan jelas menunjukkan tujuan penggunaan template ini dan menjelaskan alasan perpanjangan waktu diperlukan (misalnya, jika pengujian memerlukan download artefak yang memerlukan waktu tertentu).
Memasukkan file ke perangkat
Langkah-langkah berikut menjelaskan cara mengirim file ke perangkat untuk konfigurasi atest.
Memasukkan file ke perangkat
Framework ini tidak mendukung perluasan template untuk eksekusi atest.
Oleh karena itu, Anda harus membuat file AndroidTest.xml yang sepenuhnya menggantikan
template default dan menyertakan opsi target_preparer yang sesuai untuk
perangkat.
Salin konten template:
sdv-one-device.xmlsdv-two-devices.xmlsdv-three-devices.xml
Perbarui
{MODULE}dengan nama modul pengujian Anda.Tambahkan
com.android.tradefed.targetprep.PushFilePreparerke setiap perangkat.
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file" key="<FILE_NAME>" value="<REMOTE_FILE_PATH>" />
</target_preparer>
</device>
Mengonfigurasi CATBox
Untuk menjalankan pengujian sebagai rangkaian, konfigurasi CATBox diperlukan.
Buat file konfigurasi baru di
libraries/sdv/sdv_catbox/res/config/dan ikuti konvensi penamaan berikut:- Contoh pengujian:
sdv-sample-<NAME>-test.xml - Pengujian E2E:
sdv-e2e-<NAME>-test.xml - Pengujian yang berjalan lama:
sdv-long-running-<NAME>-test.xml - Pengujian performa:
sdv-performance-<NAME>-test.xml - Pengujian hardware:
sdv-hw-<NAME>-test.xml
- Contoh pengujian:
Tambahkan informasi yang sesuai berdasarkan jenis pengujian:
Satu konfigurasi pengujian VM:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/one-device" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>Konfigurasi pengujian dua VM:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/two-devices" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>Konfigurasi pengujian tiga VM:
<configuration description="SDV <NAME> Test"> <!-- Template for Device Configuration --> <template-include name="device-config" default="sdv-device-config/three-devices" /> <!-- Plan. Use the same name as the file name --> <option name="plan" value="<CONFIG_FILE_NAME>"/> <!-- Test: mobly-par-file-name should match the module name --> <option name="mobly-host:mobly-par-file-name" value="<ModuleName>" /> </configuration>
Template default sudah cukup untuk sebagian besar pengujian. Hindari membuat konfigurasi kustom kecuali ada alasan yang kuat.
Memperbarui waktu tunggu default
Jika waktu tunggu default tidak cukup untuk pengujian, Anda dapat menggantinya.
Mengganti waktu tunggu default
Untuk mengganti waktu tunggu default, tambahkan baris berikut ke akhir file konfigurasi Anda. Pengujian yang lama harus memiliki waktu tunggu maksimum 10 menit.
<!-- Long Test - 10 minutes timeout: <REASON> -->
<option name="mobly-host:mobly-test-timeout" value="600000" />
Memasukkan file ke perangkat
Bagian berikut menjelaskan cara mengirim file ke perangkat saat mengonfigurasi CATBox.
Memasukkan file ke perangkat
Untuk mengirim file ke perangkat yang sesuai, tambahkan konfigurasi berikut setelah
opsi plan:
<!-- Automatically pushes config file to device-->
<device name="device1">
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
<option name="cleanup" value="true" />
<option name="push-file"
key="<FILE_NAME>"
value="<REMOTE_FILE_PATH>"
/>
</target_preparer>
</device>
Jika Anda memerlukan file di setiap perangkat, tambahkan konfigurasi untuk setiap perangkat
(misalnya, name=device1, name=device2).
Eksekusi uji
Petunjuk ini mengasumsikan bahwa Anda telah menyelesaikan penyiapan lingkungan SDV yang berfungsi.
Menyiapkan lingkungan
Framework ini tidak memulai instance Cloud Virtual Device (CVD), jadi Anda harus memulainya sebelum menjalankan pengujian.
Siapkan lingkungan dan luncurkan target SDV:
. build/envsetup.sh lunch <TARGET>Mulai instance CVD pertama:
cvd create --config=sdv_core_instance1Mulai instance CVD kedua (untuk pengujian multi-VM):
cvd create --config=sdv_core_instance2Mulai instance CVD ketiga (untuk pengujian multi-VM):
cvd create --config=sdv_core_instance3
Menjalankan atest
atest <TestModuleName>
Menjalankan CATBox
Perintah ini mengasumsikan bahwa Anda berada di direktori root repositori.
- Build CATBox:
m catbox - (Opsional) Lihat semua paket pengujian SDV yang tersedia di CATBox:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-
Menjalankan pengujian:
Menjalankan satu pengujian VM:
NOTIFY_AS_NATIVE=0.0.0.0:6520 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520Menjalankan pengujian dua VM:
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521Menjalankan pengujian tiga VM:
NOTIFY_AS_NATIVE=0.0.0.0:6520,0.0.0.0:6521,0.0.0.0:6522 out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed run commandAndExit TEST_PLAN_NAME --{device1}serial 0.0.0.0:6520 --{device2}serial 0.0.0.0:6521 --{device3}serial 0.0.0.0:6522