Kenapa sih harus Testing dulu baru ngoding?

 Sumber: https://www.toolshero.com/wp-content/uploads/2018/02/to-do-lists-toolshero-696x348.jpg

Halo, saya Rafiano, kembali disini ingin menjelaskan tentang pertanyaan banyak dari mahasiswa PPL nih, "Sebenernya, kenapa sih kita harus bikin testing dulu baru ngoding?", "Yaelah, yang mau masa belom ada apa apa udh di test dulu?".

Nah, sebenernya banyak loh manfaatnya dari membuat unittest dalam pengembangan suatu produk. Apa aja tuh? Menurut saya pribadi, yang paling kerasa sih biar kita tuh gak skip gitu sama task yang lagi dikerjain. Sebenernya kita tuh bisa analogiin ini seperti "Definition of Done checklist" gitu atau mungkin dalam kehidupan sehari-hari lebih dikenal dengan "To-Do list". Maksudnya apa tuh?

 Jadi, saat kita mau buat sesuatu, ngoding sesuatu, kita define dulu spesifikasinya harus apa aja mulai dari positif sampai negatifnya. Nah spesifikasi tersebut kita translasikan jadi sebuah kode testing untuk fungsi yang akan diimplementasikan. Sehingga saat kita implementasi dan sudah berhasil lulus dari seluruh test yang sudah di define, itu sama saja artinya seperti kita sudah memenuhi semua spesifikasi yang telah ditentukan. Ibarat di kehidupan sehari-hari, misal kita mau liburan, lebih baik kan kita buat checklist dulu tuh apa saja yang harus dibawa. Setiap kita memasukkan barang pada checklist ke dalam tas, kita memberikan check mark pada checklists yang kita buat. Hal tersebut sama saja seperti saat kita telah dinyatakan "pass" pada unittest yang telah kita buat.

Secara gambaran besar seperti itu. Terus kalau gitu, kenapa frontend harus di test juga, kan fungsi-fungsi biasanya di backend? Nah, sebenernya frontend tuh lebih ke testing untuk interaksi sama usernya nanti. Gimana tuh? Sebagai contoh, ada field nama, di test kalau field itu gak boleh nerima angka, dan juga sebaliknya untuk test untuk field nomer telp, gak boleh nerima huruf. Kalau klik A harus ke page B, dan sebagainya. Kurang lebih seperti itu.

Nah, selama PPL 11 minggu ini, saya sempat bermasalah banget sama testing ini. Kenapa? Potongan kode yang saya buat ya sebenernya biasa, biasa aja. Namun, pengecekan merupakan fungsi yang mengakses database. Jadi, pas di local sih fine fine aja, eh pas di push ke gitlab ternyata failed pipelinenya karena unittest API yang saya buat tidak ada konfigurasi untuk DB testnya itu sendiri. Berikut ini cuplikan kodenya.


Terus? Gimana ya caranya tuh yang bener? Nah, seharusnya tes fungsi API ini gak perlu ikutan ngakses DB nya, karena untuk test yang akses DB udah di handle sama test lain kan. Nah jadi tuh skrg harusnya method yang akses DB itu kita mock. Sebenernya mock itu apa sih? Nah itu udah dijelasin juga di post terpisah. Nah ini nih potongan kodenya, cuman nambah dikit aja sebenernya sebaris aja ada dibaris ke-28 dan beberapa baris bawahnya yang dimasukin ke fungsi itu dengan cara di indent. Liat deh baris 28-33.

Sebenernya TDD tuh membantu loh. Kenapa? Dulu tuh sebelum pake TDD, gak jarang loh saya ke skip skip beberapa fungsionalitas, dan trus kelupaan gitu deh apa aja sih yang harus dipenuhi, tapi karena TDD, udh gak pernah lagi tuh kelupaan kelupaan fungsionalitasnya. Hehe.

Merepotkan? Mungkin. Bermanfaat? Jelas.

Terima kasih (:

0 komentar:

Post a Comment