Penyiapan pengujian

Rangkaian pengujian

Agar pengujian menjadi bagian dari VTS, pengujian harus memiliki setelan berikut di Android.bp.

test_suites: ["vts"],

Selain itu, menambahkan pengujian ke paket general-tests memungkinkan pengujian menjadi bagian dari paket Pemetaan Pengujian yang digunakan dalam pemeriksaan pra-commit.

Konfigurasi pengujian

Dalam sebagian besar kasus, konfigurasi pengujian, yang merupakan file XML yang digunakan oleh Trade Federation untuk menjalankan pengujian VTS, akan otomatis dibuat selama build. Namun, Anda dapat menyesuaikan konfigurasi pengujian.

Membuat file konfigurasi pengujian yang disesuaikan

Membuat file XML pengujian baru dari awal bisa jadi rumit, karena melibatkan pemahaman tentang cara kerja test harness, serta perbedaan antara setiap pelaksana pengujian. File konfigurasi pengujian yang dibuat otomatis dirancang untuk mempermudah proses ini.

Jika harus menyesuaikan file XML pengujian, Anda dapat menggunakan file yang dibuat otomatis sebagai titik awal.

Untuk menemukan file konfigurasi pengujian yang dibuat otomatis, pertama-tama jalankan perintah make untuk membuat konfigurasi, seperti yang ditunjukkan di bawah.

$ m VtsHalUsbV1_1TargetTest

Di direktori build out, Anda dapat menelusuri file konfigurasi berdasarkan nama modul, seperti yang ditunjukkan di bawah.

$ find out/ -name VtsHalUsbV1_1TargetTest.config

Mungkin ada beberapa salinan file dan Anda dapat menggunakan salah satunya. Salin file .config ke direktori tempat file Android.bp berada.

Jika hanya ada satu modul pengujian dalam file Android.bp, Anda dapat mengganti nama file XML menjadi AndroidTest.xml, dan sistem build akan otomatis menggunakannya sebagai file konfigurasi modul pengujian. Jika tidak, tambahkan atribut test_config ke modul, seperti yang ditunjukkan dalam contoh di bawah.

test_config: "VtsHalUsbV1_1TargetTest.xml",

Sekarang Anda memiliki file konfigurasi pengujian untuk digunakan dan menerapkan penyesuaian.

Memaksa pengujian berjalan dengan root adb

Sebagian besar pengujian VTS memerlukan hak istimewa root untuk dijalankan. Jika file konfigurasi pengujian dibuat secara otomatis, Anda dapat menambahkan atribut berikut ke Android.bp.

require_root: true,

Jika file konfigurasi pengujian disesuaikan, tambahkan berikut ke file XML pengujian.

<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>

Menghentikan framework selama pengujian

Banyak pengujian VTS tidak memerlukan framework Android untuk dijalankan, dan menjalankan pengujian dengan framework yang dihentikan memungkinkan pengujian berjalan dengan stabil tanpa terpengaruh oleh masalah perangkat. Jika file konfigurasi pengujian dibuat secara otomatis, Anda dapat menambahkan atribut berikut ke Android.bp.

disable_framework: true,

Jika file konfigurasi pengujian disesuaikan, tambahkan berikut ke file XML pengujian.

<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>

Menambahkan argumen pengujian tambahan

Beberapa pengujian gtest mungkin memerlukan waktu lebih lama untuk dijalankan. Dalam kasus tersebut, Anda dapat menambahkan opsi peluncuran pengujian dalam file XML.

Misalnya, setelan native-test-timeout dalam entri berikut memungkinkan pengujian berjalan dengan waktu tunggu 3 menit, bukan default 1 menit.

   <test class="com.android.tradefed.testtype.GTest" >
       <option name="native-test-device-path" value="/data/local/tmp" />
       <option name="module-name" value="VtsHalNfcV1_0TargetTest" />
       <option name="native-test-timeout" value="180000"/>
   </test>

Memerlukan level API minimum

Beberapa pengujian VTS hanya dapat dijalankan di perangkat dengan level API minimum. Jika file konfigurasi pengujian dibuat secara otomatis, Anda dapat menambahkan atribut berikut ke Android.bp.

min_shipping_api_level: 29,

atau

vsr_min_shipping_api_level: 202404,

Jika file konfigurasi pengujian disesuaikan, tambahkan perintah berikut ke file XML pengujian.

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="min-api-level" value="29" />
   </object>

atau

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
       <option name="vsr-min-api-level" value="202404" />
   </object>

Properti level API

Android 12 menentukan properti ro.board.first_api_level dan ro.board.api_level untuk menampilkan level API image vendor di perangkat ini. Menggabungkan properti ini dengan ro.product.first_api_level, test suite akan memilih kasus pengujian yang tepat untuk perangkat.

Android 13 menentukan ro.vendor.api_level yang disetel secara otomatis dengan menghitung level API vendor yang diperlukan menggunakan properti ro.product.first_api_level, ro.board.first_api_level, dan ro.board.api_level.

Untuk mengetahui detail selengkapnya, lihat Level API vendor.

ro.board.first_api_level

Properti ro.board.first_api_level adalah level API saat image vendor untuk SoC yang memenuhi syarat untuk penghentian vendor pertama kali dirilis dengan properti ini. Hal ini tidak bergantung pada level API peluncuran perangkat, tetapi hanya bergantung pada level API pertama SoC yang menentukan nilai ini. Nilai bersifat permanen selama masa pakai SoC.

Untuk menyetel ro.board.first_api_level, produsen perangkat dapat menentukan BOARD_SHIPPING_API_LEVEL dalam file device.mk mereka, seperti yang ditunjukkan dalam contoh berikut:

  # BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
  # the first api level that the device has been commercially launched on.
  BOARD_SHIPPING_API_LEVEL := 23

Properti ro.board.first_api_level akan otomatis ditetapkan ke vendor/build.prop di perangkat. Properti ditetapkan oleh proses init vendor.

ro.board.api_level

Properti ro.board.api_level adalah level API vendor saat ini dari image vendor yang memiliki format YYYYMM saat API vendor dibekukan. Nilai ini disetel secara otomatis oleh sistem build.

ro.vendor.api_level

Properti ro.vendor.api_level diperkenalkan di Android 13 untuk menampilkan level API yang harus didukung oleh image vendor. Ini otomatis disetel ke ro.product.first_api_level, atau ro.board.api_level jika ro.board.first_api_level ada dan ro.board.api_level disetel ke level API yang lebih awal daripada ro.product.first_api_level. Versi akan diganti dengan level API vendor yang sesuai jika ditetapkan ke versi dari ro.product.first_api_level yang lebih besar dari atau sama dengan 35. Pengujian untuk penerapan vendor yang memerlukan upgrade image vendor dapat dikecualikan dari persyaratan vendor untuk SoC dengan merujuk ke properti ini.

Proses sharding menggunakan VTS

Untuk Android versi 10 atau yang lebih tinggi, Anda dapat melakukan proses sharding di beberapa perangkat saat menguji dengan paket VTS dan CTS-on-GSI dengan mengikuti petunjuk di bawah.

run vts --shard-count <number of devices> -s <device serial> ...

Perintah ini membagi rencana VTS menjadi beberapa bagian dan menjalankannya di beberapa perangkat.

run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...

Perintah ini membagi rencana CTS-on-GSI menjadi beberapa shard dan menjalankannya di beberapa perangkat.