Library Framework Pengujian SDV

Halaman ini memberikan ringkasan library SDV Test Framework dan memandu Anda dalam menyiapkan, mengonfigurasi, dan menjalankan pengujian. Gunakan Framework Pengujian SDV untuk pengujian menyeluruh. Alat ini dibangun di Mobly; Anda menulis pengujian di Python.

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 mengemas pengujian, Python, dan dependensinya sebagai file yang dapat dieksekusi 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 fungsionalitas perintah interaktif.
  • ptyprocess Diperlukan untuk fungsionalitas perintah interaktif.

Jika Anda memerlukan dependensi khusus pengujian, sertakan dalam file Android.bp pengujian:

python_test_host {
    …
    libs: [
        "<DEPENDENCY1",
        "<DEPENDENCY2",
        …
    ],
    …
}

Jenis uji sistem

Anda membuat pengujian sistem menggunakan SDV Test Framework. Framework membedakan jenis berikut. Kategorikan pengujian dengan benar:

  • Pengujian contoh: Jalankan layanan contoh SDV dan verifikasi bahwa hasilnya cocok dengan output yang diharapkan.
  • Pengujian E2E: Jangan gunakan layanan contoh SDV.
  • Pengujian jangka panjang: 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 persis pengujian bergantung pada jenisnya.

Mengonfigurasi pengujian

Konfigurasi semua pengujian agar berjalan menggunakan atest dan CATBox.

Mengonfigurasi pengesahan

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 ada alasan yang kuat.

Memperbarui waktu tunggu default

Waktu tunggu default sudah cukup untuk menjalankan pengujian secara lokal.

Jika pengujian Anda gagal secara lokal karena waktu tunggu habis, pertimbangkan untuk membaginya menjadi beberapa pengujian yang berbeda. Pengujian yang sangat panjang dengan banyak kasus pengujian dapat menyebabkan hambatan dalam eksekusi.

Jika Anda harus menetapkan waktu tunggu yang lebih tinggi daripada default, lanjutkan membaca.

Mengganti waktu tunggu default

Framework tidak mendukung perluasan template untuk eksekusi atest. Oleh karena itu, gunakan template yang disediakan yang menawarkan waktu tunggu yang lebih lama.

Pengujian panjang satu 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 waktu tambahan diperlukan (misalnya, jika pengujian memerlukan download artefak yang membutuhkan waktu tertentu).

Mengirim file ke perangkat

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

Mengirim file ke perangkat

Framework 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 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
    • Uji 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 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 kode berikut di akhir file konfigurasi Anda. Pengujian panjang 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 tidak memulai instance Perangkat Virtual Cloud (CVD), jadi Anda harus memulainya sebelum menjalankan pengujian.

  1. Siapkan lingkungan dan luncurkan target SDV:

    . build/envsetup.sh
    lunch <TARGET>
    
  2. Mulai instance CVD pertama:

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

    cvd create --config=sdv_core_instance2
    
  4. Mulai instance CVD ketiga (untuk pengujian multi-VM):

    cvd create --config=sdv_core_instance3
    

Jalankan atest

atest <TestModuleName>

Menjalankan CATBox

Perintah ini mengasumsikan bahwa Anda berada di direktori root repositori.

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

Jalankan 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: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