Pengujian adalah bagian integral dari proses pengembangan aplikasi. Anda biasanya menjalankan aplikasi di emulator atau perangkat untuk memverifikasi secara manual bahwa kode Anda berfungsi seperti yang diharapkan. Namun, pengujian manual memakan waktu, rentan terhadap error, dan sering kali tidak dapat dikelola untuk aplikasi yang berjalan di layar dan perangkat dengan berbagai ukuran. Masalah pengujian manual paling sering disebabkan oleh penggunaan satu perangkat untuk pengembangan. Akibatnya, error dapat tidak terlihat di perangkat lain dengan faktor bentuk yang berbeda.
Untuk mengidentifikasi regresi pada berbagai ukuran jendela dan layar, terapkan pengujian otomatis untuk memverifikasi bahwa perilaku dan tampilan aplikasi Anda konsisten di berbagai faktor bentuk. Pengujian otomatis mengidentifikasi masalah sejak dini, sehingga mengurangi risiko masalah yang berdampak pada pengalaman pengguna.
Yang perlu diuji
Saat mengembangkan UI yang dibuat untuk berbagai ukuran layar dan jendela, perhatikan dua aspek khusus:
- Perbedaan atribut visual komponen dan tata letak di jendela dengan berbagai ukuran
- Cara status dipertahankan di seluruh perubahan konfigurasi
Atribut visual
Baik Anda menyesuaikan UI untuk berbagai ukuran jendela atau tidak, Anda harus memastikan bahwa UI ditampilkan dengan benar. Pertimbangkan lebar dan tinggi yang kompak, sedang, dan memanjang. Lihat Class ukuran jendela untuk titik henti sementara yang direkomendasikan.
Selain itu, aplikasi Anda mungkin tidak merender beberapa komponen dalam sistem desain seperti yang diharapkan saat batasan ukurannya dibentangkan.
Jika aplikasi Anda memiliki tata letak adaptif untuk berbagai ukuran jendela, Anda harus melakukan pengujian otomatis untuk mencegah regresi. Misalnya, memperbaiki margin pada ponsel dapat menyebabkan inkonsistensi tata letak pada tablet. Buat pengujian UI untuk memverifikasi perilaku tata letak dan komponen, atau buat pengujian screenshot untuk memverifikasi tata letak secara visual.
Pemulihan status
Aplikasi yang berjalan di perangkat seperti tablet diputar dan diubah ukurannya jauh lebih sering daripada aplikasi di ponsel. Selain itu, perangkat foldable memperkenalkan kemampuan tampilan baru, seperti perangkat dengan dilipat dan dibentangkan, yang dapat memicu perubahan konfigurasi. Aplikasi Anda harus dapat memulihkan status saat perubahan konfigurasi ini terjadi. Selanjutnya, Anda juga harus menulis pengujian yang mengonfirmasi bahwa aplikasi Anda memulihkan status dengan benar.
Pertama, uji apakah aplikasi Anda tidak error saat terjadi perubahan konfigurasi. Pastikan setiap UI di aplikasi Anda dapat menangani kombinasi memutar, mengubah ukuran, atau melipat. Karena perubahan konfigurasi membuat ulang aktivitas secara default, beberapa error terjadi karena asumsi persistensi aktivitas.
Ada beberapa cara untuk menguji perubahan konfigurasi, tetapi untuk sebagian besar kasus, ada dua cara untuk mengujinya:
- Di Compose, gunakan
StateRestorationTester
untuk menyimulasikan perubahan konfigurasi dengan cara yang efisien tanpa memulai ulang aktivitas. Lihat bagian berikut untuk mengetahui informasi selengkapnya. - Dalam pengujian UI apa pun seperti Espresso atau Compose, simulasikan perubahan konfigurasi dengan
memanggil
Activity.recreate()
.
Biasanya, Anda tidak perlu menggunakan perangkat yang berbeda untuk menguji pemulihan status sebagai respons terhadap perubahan konfigurasi. Hal ini karena semua perubahan konfigurasi yang membuat ulang aktivitas memiliki dampak yang serupa. Namun, beberapa perubahan konfigurasi dapat memicu mekanisme pemulihan status yang berbeda pada perangkat tertentu.
Misalnya, saat pengguna melihat UI daftar-detail di perangkat foldable yang terbuka dan mereka melipat perangkat untuk beralih ke layar depan, UI biasanya akan beralih ke halaman detail. Pengujian otomatis harus mencakup pemulihan status UI ini, termasuk status navigasi.
Untuk menguji perubahan konfigurasi yang terjadi pada perangkat yang beralih dari satu tampilan ke layar lainnya atau memasuki mode multi-aplikasi, Anda memiliki beberapa opsi:
- Ubah ukuran layar saat pengujian menggunakan perangkat apa pun. Umumnya, tindakan ini akan memicu semua mekanisme pemulihan status yang perlu Anda verifikasi. Namun, pengujian ini tidak akan berfungsi untuk logika yang mendeteksi postur tertentu pada perangkat foldable, karena perubahan postur tidak memicu perubahan konfigurasi.
- Menggunakan perangkat atau emulator yang mendukung fitur yang ingin Anda uji, akan memicu perubahan konfigurasi terkait. Misalnya, perangkat foldable atau tablet dapat dikontrol menggunakan Perangkat Espresso untuk berpindah dari mode lipat ke terbuka datar dalam lanskap. Lihat bagian Perangkat Espresso dalam Library dan alat untuk menguji berbagai ukuran layar untuk mengetahui contohnya.
Jenis pengujian untuk berbagai ukuran layar dan jendela
Gunakan jenis pengujian yang sesuai untuk setiap kasus penggunaan guna memverifikasi bahwa pengujian tersebut berfungsi dengan benar di berbagai faktor bentuk:
Pengujian perilaku UI meluncurkan beberapa bagian UI aplikasi, seperti tampilan aktivitas. Pengujian memverifikasi bahwa elemen tertentu ada atau memiliki atribut tertentu . Pengujian bisa saja melakukan simulasi tindakan pengguna. Untuk tampilan, gunakan Espresso. Jetpack Compose memiliki API pengujian sendiri. Pengujian perilaku UI dapat bersifat instrumentasi atau lokal. Pengujian berinstrumen berjalan pada perangkat atau emulator, sedangkan pengujian UI lokal berjalan pada Robolectric di JVM.
Gunakan pengujian perilaku UI untuk memverifikasi bahwa penerapan navigasi aplikasi sudah benar. Pengujian ini melakukan tindakan seperti mengklik dan menggeser. Pengujian perilaku UI juga memeriksa keberadaan elemen atau properti tertentu. Untuk mengetahui informasi selengkapnya, lihat Mengotomatiskan pengujian UI.
Pengujian screenshot akan mengambil screenshot UI atau komponen dan membandingkan gambar dengan screenshot yang telah disetujui sebelumnya. Ini adalah cara yang sangat efektif untuk melindungi dari regresi, karena satu screenshot dapat mencakup sejumlah besar elemen dan properti visualnya. Anda dapat menjalankan pengujian screenshot di JVM atau di berbagai perangkat. Ada beberapa framework pengujian screenshot yang tersedia.
Terakhir, Anda mungkin memerlukan pengujian unit untuk menguji fungsionalitas unit logika yang berperilaku berbeda bergantung pada jenis perangkat atau ukuran jendela, tetapi pengujian unit kurang umum di area ini.
Langkah berikutnya
Untuk informasi selengkapnya tentang cara menerapkan pemeriksaan yang terdapat dalam dokumen ini, lihat Library dan alat.