Modul pembantu interaksi perangkat CTS

Untuk Android 11 atau lebih tinggi, modul pembantu interaksi perangkat Compatibility Test Suite (CTS) memungkinkan Anda menyesuaikan cara pengujian CTS tertentu berinteraksi dengan antarmuka pengguna (UI) pada perangkat tertentu. Artinya, tindakan, seperti mengganti elemen UI yang tidak tercakup dalam Dokumen Definisi Kompatibilitas Android (CDD) atau dokumen API, dapat dilakukan sambil tetap meneruskan CTS.

OEM yang ingin menyesuaikan UI Android selama pengembangan produk dan harus lulus CTS mungkin dapat mengimplementasikan modul pembantu. Jika Anda menggunakan implementasi Android default, maka tidak diperlukan pekerjaan tambahan.

Menerapkan modul pembantu

Persyaratan untuk menyesuaikan UI

Periksa modul CDD atau Mainline untuk mengetahui persyaratan UI apa pun. Jika UI yang diinginkan tercakup dalam modul CDD atau Mainline, maka UI tersebut tidak dapat dikustomisasi.

Jika pengujian CTS yang berinteraksi dengan UI yang diinginkan tidak menggunakan kerangka pembantu, maka UI tersebut tidak dapat dikustomisasi. Bekerja samalah dengan pemilik pengujian untuk mengonversi modul pengujian sebelum UI dapat diubah.

Jika tidak, Anda dapat menyesuaikan UI.

Alur kerja implementasi

  1. Sesuaikan UI sesuai kebutuhan untuk produk spesifik Anda.
  2. Tetapkan modul pembantu AOSP yang ada sebagai subkelas untuk modul pengujian CTS yang perlu berinteraksi dengan UI. Ganti interaksi yang diperlukan dengan tepat untuk UI yang disesuaikan. Penggantian bervariasi tergantung pada jenis perubahan.
    • Subkelas OEM berada dalam paket OEM, seperti com.[oem].cts.helpers .
    • Setiap subkelas OEM diberi nama dengan awalan umum yang membedakannya dari implementasi AOSP, yang memiliki awalan Default .
  3. Bangun helper menjadi APK dengan mengikuti konvensi test runner ini.
    • Android.bp harus mendeklarasikan android_test_helper_app dengan nama yang sama dengan paket yang ada di dalamnya.
    • AndroidManifest.xml untuk APK harus mendeklarasikan properti metadata bernama interaction-helpers-prefix dengan nilai awalan kelas yang dipilih pada poin-poin sebelumnya.
    • Aplikasi harus bergantung pada cts-helpers-core , cts-helpers-interfaces , dan com.android.cts.helpers.aosp . Jika pembantu OEM mengimplementasikan sepenuhnya semua antarmuka yang relevan, maka com.android.cts.helpers.aosp bersifat opsional.
  4. Setel properti ro.vendor.cts_interaction_helper_packages di gambar perangkat untuk menyertakan nama APK. Jika Anda perlu memisahkan penerapan pembantu di beberapa APK, properti ini dapat berisi daftar paket yang dipisahkan titik dua.
  5. Pastikan APK tersedia di direktori testcases saat menjalankan Tradefed untuk CTS. Jika diperlukan, konfirmasikan bahwa kelas implementasi helper yang diharapkan telah dipilih dengan memeriksa pesan logcat.
  6. Opsional, namun sangat disarankan: Kirimkan implementasi helper Anda ke AOSP atau sediakan untuk pengujian pihak ketiga.

Contoh implementasi pembantu

Misalnya, CtsPrintTestCases mengharapkan helper dengan antarmuka yang ditentukan dalam ICtsPrintHelper . Implementasi AOSP disebut com.android.cts.helpers.aosp.DefaultCtsPrintHelper .

Jika Anda menyesuaikan UI pencetakan, Anda dapat membuat com.oem.cts.helpers.OemCtsPrintHelper yang merupakan subkelas DefaultCtsPrintHelper . android_test_helper_app di Android.bp diberi nama com.oem.cts.helpers , yang menghasilkan com.oem.cts.helpers.apk , dan mendeklarasikan interaction-helpers-prefix sebagai Oem di AndroidManifest.xml .

Properti perangkat ro.vendor.cts_interaction_helper_packages disetel ke com.oem.cts.helpers .

Implementasi referensi

Implementasi referensi mencakup antarmuka pada cts/libs/helpers dan helper AOSP default pada cts/helpers . Antarmuka tingkat atas didokumentasikan dalam cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java .

Untuk menghubungkan pengujian CTS ke pembantunya, pemilik pengujian dapat menggunakan definisi @Rule yang didokumentasikan dalam cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java .

Setiap modul CTS yang menggunakan kerangka kerja dan perilaku pembantu yang diharapkan didokumentasikan dalam antarmuka yang ditentukan di bawah cts/libs/helpers/core/src/com/android/cts/helpers .

Menjalankan tes CTS

Pengujian tanpa pembantu

Selain satu properti, opsi untuk menguji tanpa pembantu tidak ada saat runtime pada perangkat, namun secara opsional mengubah cara pengujian CTS berinteraksi dengan perangkat. Jika Anda perlu menjalankan CTS tanpa implementasi pembantu, Anda memiliki dua pilihan:

  • Hapus properti ro.vendor.cts_interaction_helper_packages dari perangkat. Hal ini mencegah helper digunakan pada build tersebut sepenuhnya.
  • Hapus APK pembantu dari direktori testcases sebelum menjalankan CTS. Hal ini mencegah helper digunakan oleh proses apa pun hingga APK dipulihkan ke testcases .

Anda dapat mengubah pengaturan default dengan argumen Tradefed dan kontrol properti ro.vendor.cts_interaction_helper_packages , yang merupakan tempat APK pembantu dimuat.

Lihat yang berikut ini untuk mengetahui nilai atau rentang yang diharapkan untuk setiap pengaturan yang tersedia.

  • ro.vendor.cts_interaction_helper_packages adalah string yang dipisahkan titik dua yang berisi nama paket. Ini dapat mengambil nilai apa pun yang merupakan pilihan paket yang valid untuk implementasi pembantu OEM.
  • cts-tradefed menerima argumen device-interaction-helper:property-name yang untuk sementara mengubah properti yang diharapkan untuk satu uji coba, seperti --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp' . Nilai nama properti dapat berupa properti apa pun yang Anda tetapkan di perangkat. Nilai properti mengikuti batasan yang sama seperti properti ro.vendor.cts_interaction_helper_packages yang dijelaskan di atas.

Menguji dengan penyesuaian

Secara default, implementasi referensi meneruskan CTS pada stok Android. Periksa apakah implementasi mitra lulus CTS dengan penyesuaian UI. Jalankan modul CTS mana pun yang mencakup UI atau fitur yang Anda sesuaikan.

Modul atau pembantu CTS tertentu mungkin belum mendukung beberapa penyesuaian.

  • Modul CTS yang berinteraksi dengan UI yang ingin Anda sesuaikan mungkin tidak menggunakan kerangka pembantu. Modul CTS diharapkan dapat diubah menjadi kerangka pembantu berdasarkan permintaan dan prioritas pemilik pengujian. Ajukan permintaan konversi di awal proses untuk memastikan bahwa konversi berjalan sesuai jadwal, serupa dengan meminta perubahan CTS untuk mendukung fitur yang Anda rencanakan.
  • Fungsi yang disediakan oleh pembantu yang ada mungkin tidak sepenuhnya mengatasi penyesuaian yang ingin Anda buat. Fungsi pembantu harus menghilangkan ketergantungan UI. Jika fungsi pembantu secara tidak langsung memiliki ketergantungan UI, hal ini dapat diperlakukan serupa dengan bug di CTS.