Salah satu titik krusial dalam sebuah proses pengembangan aplikasi, baik itu pada platform web, desktop, bahkan mobile adalah pada proses pengujiannya. Pengujian yang baik akan menentukan hasil yang baik pula.
Pengujian tentunya berpengaruh pada kualitas aplikasi yang dihasilkan. Kita tidak ingin saat aplikasi sudah ada di tangan pengguna, aplikasi tersebut memberi pengalaman tidak menyenangkan. Terlebih lagi, ketika aplikasi bermasalah, baik itu force closed maupun application not responding.
Ingat! Aplikasi mobile memiliki biaya akuisisi (acquisition cost) yang sangat mahal. Meminta atau membuat pengguna mengunduh dan menggunakan aplikasi bukanlah sesuatu yang murah.
Sekali pengguna menyatakan aplikasi kita tidak bagus —yang kemudian berujung pada pencopotan aplikasi kita (uninstall)— maka akan sulit untuk membuat pengguna mengunduhnya kembali.
Jadi kualitas aplikasi berpengaruh terhadap konversi nilai dan interaksi yang dihasilkan. Tetapi kita tidak bisa menjamin aplikasi yang kita kembangkan terbebas 100% dari masalah.
Hal ini karena begitu beragamnya peranti, khususnya Android. Namun kita masih bisa loh untuk membuatnya lebih stabil dan mengupayakan masalah yang timbul serendah mungkin. Itulah poin penting dari proses pengujian aplikasi.
Pengujian aplikasi —khususnya Android— dapat dilakukan dengan menggunakan cara manual ataupun otomatis (automation test).
Cara pertama yaitu dengan melakukan pengujian langsung terhadap APK yang di-deploy ke peranti atau emulator. Pengujian ini membutuhkan ketelitian dari para penguji(quality assurance), juga kesabaran sang developer untuk menerima kenyataan bahwa kode buatannya memicu beragam masalah.
Pengujian bisa dilakukan dengan metode whitebox dan blackbox testing. Pengujian jenis ini akan memakan waktu, membosankan dan rawan akan terjadinya kesalahan atau human error.
Salah satu pendekatan modern dan efisien adalah dengan menggunakan automation testing. Untuk Android sendiri sudah banyak tools seperti Junit, Roboeletrik, Mockito, dan Espresso yang mampu melakukan ini.Alat-alat di atas mendukung beragam metode pengujian. Tidak hanya sekedar menguji secara fungsi atau algoritma yang kita gunakan, tetapi sudah bisa masuk ke ranah pengujian otomatis untuk antarmuka.
Pada materi ini kita akan belajar bagaimana menguji antarmuka di Android dengan menggunakan espresso. Tenang, topik ini akan lebih mengarah ke dasar penggunaan dan konsep tentang UI testing.
Seperti definisinya, pengujian antarmuka akan menekankan pada proses pengujian aplikasi melalui tampilan dan komponen kontrolnya. Pengujian bisa berupa validasi input, pengecekan output, atau pemberian sebuah event seperti click() pada sebuah elemen antarmuka.
Karakteristik Pengujian UI
Secara karakteristik pengujian antarmuka mencakup beberapa hal sebagai berikut:
- User interface merupakan media visual untuk berinteraksi dengan pengguna yang terdiri dari beragam komponen pembangun user interface seperti Label, Button, RadioButton, dan lain sebagainya.
- Selama proses pengujian, elemen properti yang menempel pada sebuah komponen user interface akan memberi pengaruh terhadap kondisi atau ‘state’ dari komponen tersebut.
- Pengujian user interface secara otomatis mampu melakukan pemberian input dan event pada komponen seperti click(), pressKey() dan lain sebagainya.
- Pengujian ini lebih menekankan ke perbandingan antara proses yang dilakukan dengan hasil yang diharapkan dalam sebuah skenario penggunaan.
- Pengujian user interface secara otomatis bergantung penuh pada teknologi yang digunakan. Dalam hal ini framework atau tools yang digunakan akan mempengaruhi hasil dari proses pengujian yang dilakukan.
Espresso
Setelah memahami beberapa materi tentang unit tests, sekarang saatnya Anda mempelajari tentang instrumentation tests.
Seperti yang telah disebutkan sebelumnya, pengujian ini sedikit berbeda dengan unit tests. Instrumentation tests digunakan untuk menguji behavior dari aplikasi ketika pengguna berinteraksi dengan UI. Untuk melakukannya, kita akan memanfaatkan fitur-fitur dari Espresso,
sebuah library bawaan yang akan membantu kita dalam melakukan instrumentation tests dengan mudah.
Anda tidak perlu menambahkan dependensi lagi karena secara otomatis sudah ditambahkan ketika kita membuat proyek baru. Untuk memastikannya, bukalah berkas build.gradle, maka Anda akan melihat dependensi yang ditandai dengan androidTestImplementation berikut ini:
- androidTestImplementation 'androidx.test:rules:1.2.0'
- androidTestImplementation 'androidx.test:runner:1.2.0'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
Selain dependensi di atas, konfigurasi lain yang telah ditambahkan adalah testInstrumentationRunner pada defaultConfig.
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"