Framework Pengujian SDV

Dokumen ini memberikan ringkasan framework pengujian SDV dan memandu Anda dalam menyiapkan, mengonfigurasi, dan menjalankan pengujian. Gunakan framework pengujian SDV untuk pengujian menyeluruh. Alat ini dibuat berdasarkan Mobly; Anda menulis pengujian di Python.

Menyiapkan lingkungan

Dokumen 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 mengemas pengujian, Python, dan dependensinya sebagai executable menggunakan konfigurasi build. Anda harus mengikuti pendekatan ini di repositori pengujian SDV.

Library SDV Test Framework menyediakan dependensi ini secara default:

  • mobly
  • absl-py Diperlukan untuk menggunakan parameterisasi dalam pengujian.
  • pexpect Diperlukan untuk fungsi perintah interaktif.
  • ptyprocess Diperlukan 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 pengujian sistem menggunakan SDV Test Framework. Framework ini membedakan antara jenis berikut. Kategorikan pengujian dengan benar:

  • Pengujian sampel: Menjalankan layanan sampel SDV dan memverifikasi bahwa hasilnya cocok dengan output yang diharapkan.
  • Pengujian E2E: Jangan gunakan layanan sampel SDV.
  • Pengujian yang berjalan lama: Didesain untuk periode eksekusi yang diperpanjang.
  • Pengujian performa: Menggunakan library perfetto.
  • Pengujian hardware: Didesain 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 pengujian yang tepat bergantung pada jenisnya.

Mengonfigurasi pengujian

Konfigurasikan semua pengujian untuk dijalankan menggunakan atest dan CATBox.

Mengonfigurasi atest

Framework ini menyediakan template untuk pengujian satu, dua, dan tiga virtual machine (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 jika ada alasan yang kuat.

Memperbarui waktu tunggu default

Waktu tunggu default harus 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 lama 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.

Pengujian lama satu VM

python_test_host {
  ...
  test_config_template: ":sdv_one_device_long_test",
}

Pengujian lama dua VM

python_test_host {
  ...
  test_config_template: ":sdv_two_devices_long_test",
}

Tambahkan komentar yang menunjukkan dengan jelas tujuan penggunaan template ini dan menjelaskan alasan waktu yang diperpanjang diperlukan (misalnya, jika pengujian memerlukan download artefak yang memerlukan waktu tertentu).

Mengirim file ke perangkat

Langkah-langkah berikut menjelaskan cara mengirim file ke perangkat untuk konfigurasi atest.

Mengirim 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.

  1. Salin konten template:

    • sdv-one-device.xml
    • sdv-two-devices.xml
    • sdv-three-devices.xml
  2. Perbarui {MODULE} dengan nama modul pengujian Anda.

  3. Tambahkan com.android.tradefed.targetprep.PushFilePreparer ke 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.

  1. Buat file konfigurasi baru di libraries/sdv/sdv_catbox/res/config/ dan ikuti konvensi penamaan ini:

    • Pengujian sampel: 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
  2. Tambahkan informasi yang sesuai berdasarkan jenis pengujian:

Konfigurasi pengujian satu 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

<!-- Copyright 2025 Google LLC -->
<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 jika ada alasan yang kuat.

Memperbarui waktu tunggu default

Jika waktu tunggu default tidak cukup untuk pengujian Anda, Anda dapat menggantinya.

Mengganti waktu tunggu default

Untuk mengganti waktu tunggu default, tambahkan kode 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" />

Mengirim file ke perangkat

Bagian berikut menjelaskan cara mengirim file ke perangkat saat mengonfigurasi CATBox.

Mengirim 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.

  1. Siapkan lingkungan dan luncurkan target SDV:

    . build/envsetup.sh
    lunch <TARGET>
    
  2. Mulai instance Cloud Virtual Device (CVD) pertama:

    cvd create --config=sdv_core_instance1
    
  3. Mulai instance Cloud Virtual Device (CVD) kedua (untuk pengujian multi-VM):

    cvd create --config=sdv_core_instance2
    
  4. Mulai instance Cloud Virtual Device (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.

  1. Build CATBox: m catbox
  2. (Opsional) Lihat semua paket pengujian SDV yang tersedia di CATBox:
out/host/linux-x86/catbox/android-catbox/tools/catbox-tradefed l p | grep sdv-

Jalankan pengujian:

Menjalankan pengujian satu 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:6520

Menjalankan 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:6521

Menjalankan 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