Modul bantuan interaksi perangkat CTS

Untuk Android 11 atau yang lebih baru, modul helper interaksi perangkat Compatibility Test Suite (CTS) memungkinkan Anda menyesuaikan cara pengujian CTS tertentu berinteraksi dengan antarmuka pengguna (UI) di perangkat tertentu. Artinya, tindakan tersebut, seperti mengganti elemen UI yang tidak tercakup dalam dokumen Compatibility Definition Document (CDD) Android atau API, dapat dilakukan sambil tetap meneruskan CTS.

OEM yang ingin menyesuaikan UI Android selama pengembangan produk dan perlu lulus CTS mungkin dapat menerapkan modul helper. Jika Anda menggunakan penerapan Android default, Anda tidak perlu melakukan tindakan tambahan apa pun.

Mengimplementasikan modul bantuan

Persyaratan untuk menyesuaikan UI

Periksa modul CDD atau Mainline untuk mengetahui persyaratan UI. Jika UI yang diinginkan tercakup dalam modul CDD atau Mainline, UI tersebut tidak dapat disesuaikan.

Jika pengujian CTS yang berinteraksi dengan UI yang diinginkan tidak menggunakan framework helper, UI tersebut tidak dapat disesuaikan. Bekerja sama 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 tertentu.
  2. Tetapkan modul helper AOSP yang ada sebagai subclass untuk modul pengujian CTS yang perlu berinteraksi dengan UI. Ganti interaksi yang diperlukan dengan tepat untuk UI yang disesuaikan. Penggantian bervariasi bergantung pada jenis perubahan.
    • Subclass OEM berada dalam paket OEM, seperti com.[oem].cts.helpers.
    • Setiap subclass OEM diberi nama dengan awalan umum yang membedakannya dari implementasi AOSP, yang memiliki awalan Default.
  3. Build helper ke dalam APK dengan mengikuti konvensi runner pengujian ini.
    • Android.bp harus mendeklarasikan android_test_helper_app dengan nama yang sama dengan paket yang dimuat.
    • AndroidManifest.xml untuk APK harus mendeklarasikan properti metadata bernama interaction-helpers-prefix dengan nilai awalan class yang dipilih di poin berbutir sebelumnya.
    • Aplikasi harus bergantung pada cts-helpers-core, cts-helpers-interfaces, dan com.android.cts.helpers.aosp. Jika helper OEM sepenuhnya menerapkan semua antarmuka yang relevan, com.android.cts.helpers.aosp adalah opsional.
  4. Tetapkan properti ro.vendor.cts_interaction_helper_packages dalam image 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 untuk CTS. Jika diperlukan, pastikan class penerapan helper yang diharapkan dipilih dengan memeriksa pesan logcat.
  6. Opsional, tetapi sangat direkomendasikan: Kirimkan penerapan helper Anda ke AOSP atau sediakan untuk pengujian pihak ketiga.

Contoh penerapan helper

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

Jika menyesuaikan UI cetak, Anda dapat membuat com.oem.cts.helpers.OemCtsPrintHelper yang merupakan subclass 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 dalam AndroidManifest.xml.

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

Penerapan referensi

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

Untuk menghubungkan uji CTS ke helper, 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 framework dan perilaku helper yang diharapkan didokumentasikan dalam antarmuka yang ditentukan di cts/libs/helpers/core/src/com/android/cts/helpers.

Menjalankan pengujian CTS

Pengujian tanpa bantuan

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

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

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

Lihat referensi berikut untuk mengetahui nilai atau rentang yang diharapkan untuk setiap setelan yang tersedia.

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

Menguji dengan penyesuaian

Secara default, implementasi referensi lulus CTS di Android bawaan. Pastikan penerapan partner lulus CTS dengan penyesuaian UI. Jalankan modul CTS mana pun yang mencakup UI atau fitur yang Anda sesuaikan.

Modul atau helper CTS tertentu mungkin belum mendukung beberapa penyesuaian.

  • Modul CTS yang berinteraksi dengan UI yang ingin Anda sesuaikan mungkin tidak menggunakan framework helper. Modul CTS diharapkan akan dikonversi ke framework helper 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 sudah ada mungkin tidak sepenuhnya mengatasi penyesuaian yang ingin Anda lakukan. Fungsi helper harus memisahkan dependensi UI. Jika fungsi helper secara tidak langsung memiliki dependensi UI, hal ini dapat diperlakukan sama seperti bug di CTS.