Kenapa Harus TDD? Apa Pentingnya?

Ari Angga Nugraha
3 min readMar 21, 2021
Ilustrasi Test Driven Development (TDD)

Dalam dunia pengembangan Software, TDD adalah hal umum yang harus di praktek kan dan juga dipahami oleh seorang Software Engineer. Lalu, apa sebenarnya TDD itu? Kenapa kita harus mengimplementasikan TDD dalam project pengembangan aplikasi kita?

Sebenarnya TDD itu apa sih?

Dari tadi istilah TDD selalu muncul, lalu TDD itu sebenarnya apa?
TDD adalah singkatan dari Test Driven Development. Yaitu sebuah konsep dalam dunia pengembangan Software dimana kita membuat test terlebih dahulu. Setelah test dibuat maka kita baru diperbolehkan untuk mengimplementasikan sebuah code yang bisa lolos dari test yang kita buat di awal tadi.

Proses pembuatan test dan implementasi code ini tidak dilakukan sekali jalan. Dalam sebuah proses pengembangan aplikasi akan terjadi beberapa kali cycle proses pembuatan test dan implementasi code. Cycle ini biasa disebut dengan RED-GREEN-REFACTOR yang akan dijelaskan juga pada artikel ini.

Kenapa harus TDD?

Lalu kita pasti bertanya, kenapa harus test dulu? Bukannya kita bisa langsung implementasi baru di test di akhir?

Memang TDD adalah hal menakutkan dan membingungkan bagi beberapa kalangan developer pemula. Termasuk saya yang sering kebingungan dan merasa takut untuk mempraktekkan prinsip TDD ini. Namun dibalik itu semua terdapat beberapa keuntungan yang didapat dengan mempraktekkan TDD ini :

  1. Meminimalisir bug
    Dengan melakukan test terlebih dahulu, kita dapat memastikan bahwa setiap code yang kita tulis sudah di test terlebih dahulu dan juga sudah lulus dari rangkaian test yang telah kita buat.
    Dengan begitu bug bug yang tidak diinginkan dapat dihindari dan meningkatkan kualitas dari aplikasi yang kita buat
  2. Membuat code yang kita buat lebih modular
    Hal ini karena dengan melakukan test setiap bagian, kita dipaksa untuk membuat code yang tidak banyak bergantung dengan bagian code yang lain. Sehingga code yang kita buat lebih modular dan akan lebih mudah di integrasikan dengan bagian lain.

Contoh Pengimplementasian TDD (RED-GREEN-REFACTOR)

Sebelumnya saya menyebutkan bahwa terdapat lifecycle pada TDD yaitu RED-GREEN-REFACTOR. Lalu apa artinya? Kenapa harus warna merah dan hijau? Berikut adalah penjelasan sekaligus implementasi dari TDD

Pada contoh kali ini saya mencoba mempraktekkan TDD pada ReactJS Project saya dan dengan Testing Framework bernama Jest

Lifecycle TDD

[RED] — Membuat test yang pasti gagal

Langkah pertama, kita harus membuat sebuah test yang nantinya pasti akan failed. Pada bagian ini kita harus memikirkan semua skenario yang bisa terjadi pada bagian yang kita test dan kita membuat test untuk setiap skenario tersebut.

Contoh kode implementasi RED pada React + Jest
Hasil menjalankan test

Dapat dilihat hasil dari uji coba test kita failed. Dari hasil inilah kita harus mengimplementasikan code yang bertujuan untuk lulus dari test test yang kita buat ini.

[GREEN] — Mencoba lulus dari test

Setelah membuat test, barulah kita melakukan eksekusi implementasi code. Pada bagian ini kita berusaha semaksimal mungkin untuk lulus dari test test yang kita buat sendiri. Berikut adalah contoh implementasi yang saya buat pada project PPL Fasilkom UI 2021 ini.

Hasil running test

Jeng jeng, bisa dilihat kita sudah berhasil membuat implementasi. Dapat kita lihat hasil dari running test yang berwarna hijau bertuliskan PASS. Kita sudah berhasil membuat test dan mengimplementasikannya sesuai dengan apa yang diminta oleh test.

[REFACTOR] — Meningkatkan kualitas code

Refactor? Untuk apa kita ulang lagi proses yang melelahkan ini? Eitss…
Meskipun program yang kita buat sudah lulus test, namun belum menjamin apa yang kita tulis adalah solusi yang terbaik.

Maka proses Refactor adalah jawabannya. Pada bagian ini kita dapat memperbaiki apa yang masih bisa ditingkatkan seperti implementasi Clean Code yang masih belum benar sepenuhnya atau kesalahan minor lainnya.

Penutup

Mungkin itu saja yang dapat saya bagi untuk artikel pada kali ini. Semoga apa yang saya tulis pada kesempatan ini dapat berguna untuk kemudian hari. Untuk artikel selanjutnya saya akan mencoba membahas bagaimana kita mengimplementasikan Clean Code pada project aplikasi kita.

Tetap semangat teman teman!!!

--

--