Test-Driven Development

Siti Khadijah
4 min readApr 5, 2021

Test-driven development (TDD) adalah salah satu pendekatan gaya penulisan code dengan tiga aktivitas utama yang dilakukan, yaitu coding, testing, dan design/refactor. TDD lebih sering digunakan ketika membuat proyek yang cukup besar. Sering kali ketika mengembangkan proyek bersama dengan orang lain, terdapat keterhubungan antar implementasi dari satu anggota dengan anggota lainnya. Untuk dapat memastikan suatu fungsi dari satu anggota sudah bekerja dengan baik sebelum digunakan oleh anggota tim lainnya, perlu dilakukan testing untuk menjamin nilai kebenaran fungsi tersebut. TDD berguna untuk mempertahankan suatu fungsi, sehingga ketika ada modifikasi source code, hanya dengan menjalankan test dapat diketahui apakah implementasi yang dilakukan mempengaruhi fungsi yang sudah berhasil dites sebelumnya atau tidak.

TDD life cycle

tdd life cycle

Langkah-langkah meng-coding yang dilakukan ketika melakukan pendekatan test-driven development adalah sebagai berikut.

  1. Membuat unit test yang menguji satu bagian kecil dari program yang akan dibuat
  2. Menjalankan tes tersebut dan tes harus fail, karena belum ada implementasinya → [RED]
  3. Membuat ‘just enough code’ agar tes berhasil/sukses → [GREEN]
  4. Refaktor code yang telah dibuat sehingga cukup simple, tidak ada duplikasi, dan single responsibility. Setelah refaktor, tes harus tetap berhasil → [REFACTOR]
  5. Ulangi langkah 1–4

Contoh penerapan test-driven development pada proyek PPL.

RED-GREEN-REFACTOR
Membuat tes ketika ingin menambahkan kalimat ‘Logging out…’
Mengimplementasi untuk memunculkan kalimat ‘Logging out…’ tersebut menggunakan paragraph tag
Merapihkan kode

Benefits of Doing TDD

  1. Dapat mendeteksi eror/bug

Untuk proyek yang cukup besar, error akan mudah dideteksi dengan adanya tes untuk setiap fungsi yang diimplementasi. Ketika error/bug diperbaiki, dengan menjalankan tes kembali, dapat dipastikan bahwa error/bug sudah tidak ada lagi.

2. Mempersingkat waktu pengerjaan

Dengan membuat tes lebih dulu, programmer akan lebih mengerti dengan requirement dan tujuan dari code yang akan dibuat. Karena detail spesifik code sudah terpikirkan, pengerjaan pun dapat berjalan lebih cepat.

3. Meningkatkan kualitas code

Karena dapat dilakukan refaktor terus menerus, kualitas code dapat ditingkatkan juga, contohnya dengan membuat code menjadi high cohesion dan low coupling.

Manfaat yang dirasakan ketika melakukan TDD selama pengerjaan proyek PPL

Pertama kali saya membuat tes untuk mengetes suatu React Component, sejujurnya saya merasa disulitkan dengan TDD ini. Karena belum terbiasa dengan library testing seperti jest dan enzyme, saya menghabiskan banyak waktu untuk testing yang padahal menurut saya lebih baik langsung saja membuat React Component-nya.

Disini, saya membuat banyak tes untuk mengecek apakah setiap navigasi yang ditekan pada sidebar mengarah ke halaman yang benar. Hanya untuk membuat fungsi Navbar tersebut, perlu banyak tes agar coverage diatas 90%.

test dan implementasi navbar

Kemudian saya sadar, TDD itu bukan tentang membuat tes sehingga total coverage menjadi 100%, namun tentang membuat tes yang dapat memeriksa fungsionalitas dari code yang dibuat demi menghindari eror. Kemudian, saya mulai mengubah pembuatan test saya menjadi lebih sederhana namun to-the-point, seperti testing untuk komponen pop-up berikut. Saya men-tes kondisi pop-up sebelum dan sesudah tombol diklik.

test value parameter show sebelum dan setelah tombol di klik

Dari situ lah saya merasa bahwa TDD itu tidak menyulitkan, bahkan dapat membuat saya lebih terbayang dengan implementasi nantinya, seperti elemen apa saja yang diperlukan untuk komponen tersebut dan peletakkan komponen sehingga memenuhi high cohesion.

Dengan ini, meskipun agak lama diawal untuk membuat tes, namun waktu mengimplementasi code akan jauh lebih cepat.

--

--