by Deni Pramulia
Sebagai developer, terkadang tujuan utama kita membuat aplikasi hanyalah memenuhi ekspetasi dan solusi dari permasalahan, baik yang diminta oleh stakeholder (jika kita diminta membuat sebuah aplikasi) maupun user (jika membuat aplikasi sendiri). Namun, kita tidak tahu apakah aplikasi yang kita buat sudah less bugs, siap release atau belum ya? Disinilah Unit Testing diperlukan sebagai solusi dari masalah ini.
Secara umum, Unit Testing adalah membuat autonomous testing (testing yang dilakukan secara otomatis). Ukuran dari Unit Testing sendiri tidaklah besar, namun bisa terdiri dari banyak unit testing. Unit Testing tidak membutuhkan proses yang sangat besar, karena unit testing hanya digunakan sebagai standar seberapa besar aplikasi yang kita buat dapat memenuhi ekspetasi user.
Berikut adalah keuntungan membuat Unit Test yang kami dapatkan dari beberapa sumber:
- executing unit tests doesn’t require the application to be running. And it can be done even before the whole application is built (Unit Test dapat dibuat dan dijalankan bahkan sebelum keseluruhan aplikasi telah dibuat),
- unit testing leads to less bugs in the software (Unit Testing adalah parameter keberhasilan kita dalam menangani segala kemungkinan bugs yang ada dalam aplikasi yang akan kita buat),
- developers feel more confident in deploying code that is covered by unit tests (Unit Testing mempengaruhi Code Coverage, sehingga dapat menjadi acuan seberapa besar cakupan code yang telah kita buat),
- programmers following the Test-Driven Development (TDD) process claim that unit testing helps them achieve their goals faster, solving problems with less code and better code architecture,
- with unit tests you can also improve parallel work, you don’t need to wait for the whole project to be done to test just a piece of that.
Unit Test sebaiknya dibuat sebelum mengimplementasikan code, hal ini mengikuti konsep TDD (Test Driven Development). Secara umum, prosedur yang sebaiknya dijalankan yaitu:
- Membuat Unit Test yang pasti akan gagal (karena kode aplikasi belum diimplementasikan), dan pasti akan mengeluarkan kode RED (gagal) ketika user commit.
- Mengimplementasikan kode aplikasi hingga Unit Test berubah dari RED menjadi GREEN (berhasil dan tidak ada gagal) dengan seluruh Unit Test yang ada (tidak ada Unit Test yang tidak dijalankan).
- REFACTOR code yang dibuat agar memenuhi kaidah code (dari sisi penamaan file hingga penamaan variabel) dengan kondisi Unit Test harus berhasil keseluruhan
Unit Test juga memiliki panduan, yang dinamakan F.I.R.S.T yaitu :
- FAST (F)
Unit Test harus cepat dan tidak membuat proses code pada aplikasi menjadi lebih lambat.
- ISOLATED/INDEPENDENT (I)
Unit Test memiliki setidaknya 3 method, yaitu: ACT, ASSERT, ARRANGE. Unit Test tidak memperhatikan urutan dari sisi urutan yang di Test. Selain itu, Unit Test tidak bergantung satu sama lain.
- REPEATABLE (R)
Unit Test selalu menghasilkan result yang sama setiap kali Unit Test dijalankan
- SELF-VALIDATING (S)
Tidak perlu manual checking apakah Unit Test sukses atau gagal dijalankan.
- THROUGHLY AND TIMELY (T)
Dengan TDD, Unit Test sebaiknya dibuat pertama kali sebelum code aplikasi diimplementasikan.
Berikut adalah contoh Unit Test dari aplikasi yang kami buat. Secara garis besar, Unit Test yang kami buat mengarah kepada kecocokan dari Model yang dibuat.
Ketika kita menekan tombol “Coverage” pada GITLAB, maka akan diarahkan ke halaman statistik dari Unit Test yang dibuat. Terlihat pada gambar, kelompok kami telah mencapai Code Coverage 100%, sehingga bisa didefinisikan aplikasi yang kita buat memiliki peluang yang sangat kecil terjadinya bug.
Terlihat pada gambar diatas, coverage dari Unit Test diatas sudah mencapai 100%.
Pada gambar diatas, terlihat bahwa Unit Test kami menggunakan method ASSERT, yaitu ASSERTEQUALS. Hal ini karena fokus Unit Test kita menguji pada Model yang kita buat. ASSERTEQUALS yaitu method untuk mengecek apakah output dan result yang diekspetasikan adalah sesuai dan sama. Sebagai contoh,, pada setAddress() Test, Test dimulai dengan menjalankan setAddress terlebih dahulu dari fungsi EDC yang ada pada EDC.java , sehingga pada EDC nantinya akan ada alamat yaitu “jalan”. Setelah itu, Unit Test akan memanggil ASSERTEQUALS dengan mengambil alamat , getAddress() dari EDC, dengan parameter keberhasilan yaitu “jalan”. Karena tadi kita sudah me- setAddress() dengan parameter “jalan” maka output dari ASSERTEQUALS yang diharapkan adalah menghasilkan output TRUE yang berarti PASSED.
Demikian sedikit penjelasan mengenai pentingnya Unit Test dan sedikit penerapannya. Sampai bertemu di Artikel berikutnya.