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. Ini berarti bahwa tindakan, seperti mengganti elemen UI yang tidak tercakup oleh Dokumen Definisi Kompatibilitas Android (CDD) atau dokumen API, dapat dilakukan saat masih 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 persyaratan UI apa pun. Jika UI yang diinginkan tercakup oleh modul CDD atau Mainline, maka UI tersebut tidak dapat dikustomisasi.

Jika pengujian CTS yang berinteraksi dengan UI yang diinginkan tidak menggunakan kerangka kerja pembantu, maka UI tersebut tidak dapat dikustomisasi. Bekerja 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 ada 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.
    • AndroidManifest.xml untuk APK harus mendeklarasikan properti metadata bernama interaction-helpers-prefix dengan nilai awalan kelas yang dipilih di poin poin sebelumnya.
    • Aplikasi harus bergantung pada cts-helpers-core , cts-helpers-interfaces , dan com.android.cts.helpers.aosp . Jika helper OEM sepenuhnya mengimplementasikan semua antarmuka yang relevan, maka com.android.cts.helpers.aosp adalah opsional.
  4. Setel properti ro.vendor.cts_interaction_helper_packages di gambar perangkat untuk menyertakan nama APK. Jika Anda perlu memisahkan implementasi helper di beberapa APK, properti ini dapat berisi daftar paket yang dipisahkan titik dua.
  5. Pastikan APK tersedia di direktori testcases saat menjalankan Tradefed for CTS. Jika diperlukan, konfirmasikan bahwa kelas implementasi helper yang diharapkan dipilih dengan memeriksa pesan logcat.
  6. Opsional, tetapi sangat disarankan: Kirim 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 cetak, Anda dapat membuat com.oem.cts.helpers.OemCtsPrintHelper yang mensubklasifikasikan DefaultCtsPrintHelper . android_test_helper_app di Android.bp bernama 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 termasuk antarmuka di bawah cts/libs/helpers dan pembantu AOSP default di bawah cts/helpers . Antarmuka tingkat atas didokumentasikan dalam cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java .

Untuk menghubungkan pengujian CTS ke helper-nya, 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 helper yang diharapkan didokumentasikan dalam antarmuka yang didefinisikan di bawah cts/libs/helpers/core/src/com/android/cts/helpers .

Menjalankan tes CTS

Menguji tanpa pembantu

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

  • Hapus properti ro.vendor.cts_interaction_helper_packages dari perangkat. Ini mencegah helper digunakan sepenuhnya pada build itu.
  • Hapus APK pembantu dari direktori testcases sebelum menjalankan CTS. 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 , dari mana APK pembantu dimuat.

Lihat berikut ini untuk 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. Itu dapat mengambil nilai apa pun yang merupakan pilihan paket yang valid untuk implementasi helper OEM.
  • cts-tradefed menerima argumen device-interaction-helper:property-name yang secara sementara mengubah properti yang diharapkan untuk satu kali pengujian, seperti --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp' . Nilai nama properti dapat berupa properti apa pun yang Anda atur 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 kerja pembantu. Modul CTS diharapkan dapat dikonversi ke kerangka kerja pembantu berdasarkan permintaan dan prioritas pemilik pengujian. Ajukan permintaan konversi di awal proses untuk memastikan bahwa konversi sesuai jadwal, mirip dengan meminta perubahan CTS untuk mendukung fitur yang Anda rencanakan.
  • Fungsi yang disediakan oleh helper yang ada mungkin tidak sepenuhnya menangani penyesuaian yang ingin Anda buat. Fungsi pembantu harus mengabstraksi dependensi UI. Jika fungsi pembantu secara tidak langsung memiliki ketergantungan UI, ini dapat diperlakukan sama dengan bug di CTS.