Test-Driven Development(TDD)

Asep Mail
Arunatech
Published in
3 min readDec 27, 2022

--

Ilustration of Test-Driven Development

Assalamu’aialikum dan salam sejahtera bagi kita semua sahabat, saking pentingnya penerapan testing pada aplikasi, salah satu metodologi pengembangan software yaitu extreme programming (yang dipopulerkan Kent Beck pada tahun 1999) menyebutkan bahwa pengembangan aplikasi itu harus menerapkan unit testing, serta semua bagian software harus diuji secara menyeluruh. Semua pengujian harus berstatus passed sebelum software (atau fitur baru) dapat dirilis bahkan, kode pengujian harus ditulis sebelum kode produksi ditulis. Nah praktik test-first programming inilah yang nantinya dikenal sebagai Test-Driven Development (TDD) atau bisa di sebut juga sebagai Test Ditulis Duluan.

Meskipun terbilang ekstrim, nyatanya TDD ini sangat memberikan manfaat dari sisi peningkatan produktivitas dan kualitas kode, sehingga praktik ini banyak dipakai dilakukan oleh perusahaan pengembang aplikasi, terutama pengembang yang menggunakan metode agile. Kita hanya perlu menuliskan kode sesederhana mungkin dengan fokus untuk meloloskan pengujian jangan merumitkan diri menulis kode yang tidak dibutuhkan. Selain itu juga, TDD memungkinkan kita untuk fokus dalam satu fitur atau satu unit test dalam satu waktu dengan menjaga lingkup pengerjaan sekecil mungkin yang membuat kita bisa fokus menjaga kualitas kode, sekaligus memastikan fitur-fitur lain yang sudah ada tidak rusak karena penambahan fitur baru.

Pengembangan software menggunakan TDD memiliki alur yang khas ketika membangun fitur baru. Berikut ini merupakan alurnya :

Workflow Test-Driven Development
  1. Menulis test dengan hasil gagal.

Diawali dengan membuat kode test untuk fitur baru tersebut biasanya dimulai dengan skenario yang paling spesifik dahulu. Contohnya, jika menguji sebuah fungsi, awali dengan menguji ketidaksesuaian input yang diberikan. Namun, jika kita mau menguji sebuah objek, awali dengan menguji ketersediaan member (property atau method) yang diharapkan. Setelah membuat test lalu pastikan menjalankan test nya dan konfirmasi bahwa test tersebut harus gagal dengan alasan yang wajar. Walaupun pengujian test pasti akan gagal dikarenakan kita belum menuliskan implementasi kode produksi apapun.

2. Menuliskan kode apa adanya untuk membuat test menjadi lulus

Kemudian tulislah kode produksi dan buat pengujiannya lulus. Tulislah kode apa adanya yang terpenting adalah membuat pengujiannya menjadi lulus. jika masih ada test yang gagal setelah menjalankannya, perbaiki kode kembali hingga test menjadi lulus.

3. Refactor kode sebelumnya dan pastikan pengujian tetap lulus

Setelah pengujiannya lulus saatnya memperbaiki kode yang sudah ditulis sebelumnya. Namun tetap memastikan perbaikan yang kita lakukan tetap menjaga fungsionalitas kode dan pengujiannya tetap lulus. Perbaikan kode meliputi :

  • menghapus duplikasi kode.
  • memecah kode menjadi fungsi — fungsi kecil.
  • mengoptimisasi logika yang ditulis.

4. Ulangi

Setelah selesai di-refactor, ulangi alur diatas dalam setiap penambahan fungsionalitas baru. Pengujian harus dilakukan sekecil mungkin dan bertahap. Jadi, jika kedepannya ada kesalahan, kita tidak perlu men-debug nya secara langsung dan menyadari letak kesalahannya tersebut.

Dari alur tersebut, TDD dikenal memiliki alur Red-Green-Refactor karena diawali dengan pengujian yang gagal (merah) kemudian lulus (hijau) dan terakhir menulis ulang kode (refactor). Ada juga beberapa aspek yang penting untuk diketahui dan ikuti ketika menerapkan kultur TDD. Contohnya Keep it simple, Stupid (KISS) dan You Aren’t Gonna Need it (YAGNI). Prinsip - prinsip tersebut mengajarkan kita untuk menuliskan kode sesederhana mungkin dan fokus dengan fitur yang akan dibangun. Atau bisa diartikan dengan tulislah kode yang memang bertujuan untuk lulus dari tes. Sekian dulu sahabat, semoga bermanfaat,
wassalamu’alaikum dan terima kasih.

--

--