Back to blog
Mar 23, 2023
4 min read

Test-Driven Development: The Key to High-Quality, Maintainable Software

Explaining TDD implementation.

Bagi para software developer, mungkin istilah TDD sudah tidak asing lagi. Test-Driven Development atau disingkat TDD saat ini sudah banyak diterapkan pada proses pengembangan perangkat lunak. Namun sebenarnya apakah yang dimaksud dengan TDD? Apa saja manfaat yang bisa didapatkan jika kita menerapkan TDD?

Apa itu TDD dan Apa Tujuannya?
Test-Driven Development (TDD) merupakan sebuah metodologi dalam proses pengembangan perangkat lunak dimana developer didorong untuk menyusun test sebelum membuat implementasi dari software. Hal ini bertujuan untuk menjamin implementasi yang telah dibuat sesuai dengan requirement dan meminimalisir kemungkinan munculnya bug dan error pada kode yang dibuat.

Bagaimana Cara Menerapkan TDD?
Sesuai dengan definisinya, untuk menerapkan TDD pada pengembangan software, kita harus membuat test sebelum membuat implementasi fitur. Berdasarkan hal tersebut, alur dari TDD dapat dibagi menjadi 3, yaitu RED, GREEN, dan REFACTOR.

Contoh penerapan TDD

RED - Menyusun Test

Contoh penerapan penyusunan test pada tahap RED

Test masih failed karena belum ada implementasi

Pada tahap ini, buat test sesuai dengan ekspektasi fungsionalitas dari fitur yang akan dibuat. Seperti yang dapat dilihat pada gambar diatas, saya membuat unit test terkait fitur authentication sebuah endpoint terlebih dahulu sebelum membuat implementasi fiturnya. Perhatikan bahwa test ini akan fail karena belum ada implementasi fiturnya.

GREEN - Membuat Implementasi Fitur

Contoh penerapan implementasi pada tahap GREEN

Test sudah passed setelah fitur diimplementasi

Kemudian pada tahap berikutnya, buat kode terkait implementasi fitur. Seperti yang dapat dilihat pada gambar diatas, saya membuat implementasi fitur authentication endpoint dengan fungsionalitas sesuai dengan yang diuji dalam test yang sudah dibuat. Pastikan bahwa implementasi fitur ini berhasil melewati atau pass semua test yang dibuat.

REFACTOR - Memperbaiki Code

Tidak jarang kode yang telah dibuat mempunyai masalah seperti bug atau code smell. Perbaikan-perbaikan kode terkait masalah tersebut dapat dilakukan pada tahap ini. Sebagai contoh, setelah melalui kedua tahap sebelumnya, saya melakukan perbaikan code smell dengan membuat variable untuk menampung duplicated string. Perhatikan bahwa perubahan kode yang dilakukan tidak mengubah fungsionalitas dari fitur yang dibuat dan tidak membuat test menjadi failed.

Repeat!
Ulangi ketiga langkah diatas setiap pembuatan fitur baru atau perubahan fungsionalitas fitur yang sudah dibuat.

Manfaat dari Penerapan TDD

  1. Meningkatkan kualitas kode
    Dengan menulis test terlebih dahulu, kita didorong untuk memikirkan secara matang fungsionalitas dari fitur yang akan diimplementasi. Jika test case yang dibuat berkualitas dan berhasil meng-cover setiap behavior program, maka kita dapat dengan mudah menemukan dan memperbaiki cacat dalam kode sebelum kode diimplementasikan. Hal ini dapat mengurangi jumlah bug dan kesalahan dalam kode dan meningkatkan kualitas kode.
  2. Meningkatkan maintainability kode
    Dengan TDD, kita dapat lebih mudah dalam membuat perubahan pada kode karena terdapat test yang dapat digunakan untuk memverifikasi bahwa perubahan tersebut tidak memengaruhi fungsionalitas lain dari kode. Hal ini dapat mengurangi risiko perubahan kode yang buruk dan membuat proses pengembangan lebih lancar dan teratur.
  3. Meningkatkan kolaborasi tim
    Dengan TDD, kita dapat berkolaborasi dengan lebih baik dengan anggota tim lainnya. Hal itu karena kita yakin bahwa setiap kode yang dibuat anggota tim sudah memenuhi ekspektasi karena sudah melewati test.

Kesimpulan
Test-Driven Development (TDD) adalah metodologi dalam proses pengembangan perangkat lunak yang mendorong developer untuk menyusun test sebelum membuat implementasi dari software. Tujuan dari TDD adalah untuk menjamin implementasi yang telah dibuat sesuai dengan requirement dan meminimalisir kemungkinan munculnya bug dan error pada kode yang dibuat. Manfaat dari penerapan TDD antara lain meningkatkan kualitas kode, meningkatkan maintainability kode, dan meningkatkan kolaborasi tim.