Test-Driven Development

Pengertian dari TDD

Test-Driven Development adalah suatu pendekatan dalam menuliskan suatu software, dimana test cases dibuat terlebih dahulu sebelum mulai menuliskan production code, dan dikembangkan untuk menjelaskan dan memvalidisi apa yang akan dilakukan oleh production code. Secara singkat, TDD mengharuskan untuk membuat test cases terlebih dahulu, dimana test case tersebut akan dijalankan untuk di uji coba. Jika test case tersebut gagal, production code baru akan dibuat untuk meluluskan test tersebut. Untuk mendapatkan gambaran lebih jelas, berikut ini adalah 3 prinsip dari TDD yaitu:

  1. Kita tidak boleh menuliskan unit test yang lebih dari cukup untuk gagal, dan tidak mengkompilasi berarti kegagalan.
  2. Kita tidak boleh menuliskan unit test yang lebih dari cukup untuk meluluskan unit test yang sedang gagal.

Alur penerapan TDD

3 prinsip TDD yang disebutkan diatas menjadi aturan untuk tahapan dalam melakukan TDD dibawah.

TDD Cycle — source: Slide PPW materi Test-Driven Development Fakultas Ilmu Komputer UI
  1. GREEN: Membuat production code yang akan meluluskan test case yang telah dibuat sebelumnya. Production code yang dibuat pada tahap ini biasanya masih dibuat seminimal mungkin, namun cukup untuk lulus pada test case.
  2. REFACTOR: Production code yang telah dibuat di tahap sebelumnya dikembangkan lebih lanjut jika dibutuhkan. Production code akan di refine sehingga pengimplementasian code yang dibuat sebelumnya akan lebih bagus, baik dari segi struktur, performa, ataupun penulisan. Biasanya hal yang diubah terkait masalah duplikasi yang dibuat untuk meluluskan test sebelumnya. Code yang telah dikembangkan ini tetap harus dipastikan akan lulus test (tidak kembali ke RED).

Tujuan dan Manfaat menggunakan TDD

Programming is like exploring a dark house. You go from room to room to room. Writing the test is like turning on the light. Then you can avoid the furniture and save your shins (the clean design resulting from refactoring). Then you’re ready to explore the next room”

— Kent Beck, pembuat extreme programming

Jika dilihat secara sekilas, mungkin beberapa orang akan berpikir bahwa pembuatan test bisa dilakukan kapan saja, baik sebelum atau sesudah pembuatan test code, selama production code yang dibuat sudah diuji coba dan dengan test cases masing-masing. Namun sebenarnya penerapan TDD punya banyak tujuan dan manfaatnya sendiri, beberapa diantaranya yaitu:

Contoh Implementasi dari TDD

Pada bagian ini, saya akan menunjukan sedikit contoh implementasi dari TDD pada salah satu project yang saya buat. Gambar dibawah merupakan contoh salah satu test case yang ada pada project saya.

salah satu contoh test case
contoh gitlab pipeline pada tahap RED
url routing yang akan mengakses fungsi my_profile
fungsi yang akan dipanggil oleh test case, yaitu my_profile
contoh gitlab pipeline pada tahap GREEN
fungsi my_profile yang telah dilakukan refactor
contoh pipeline-pipeline hasil proses TDD

Kekurangan dalam menggunakan TDD

Dalam proses pengimplementasian TDD pada projek saya, selain mendapatkan keuntungan, saya juga merasakan beberapa hal mengganggu saya dalam proses development. Hal-hal ini mungkin sebagian besar disebabkan karena kurangnya pengalaman saya dalam pengimplementasian TDD, sehingga saya pun masih belum familiar terhadap penggunannya. Berikut beberapa hal yang saya rasa tersebut:

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store