Apa itu TDD (Test Driven Development)?
Dalam mengembangkan suatu program, ada banyak metode yang bisa dilakukan oleh programmer. Salah satunya disebut TDD (test driven development) yang disebut juga dengan test driven design.
TDD adalah teknik pengembangan perangkat lunak di mana pengujian dilakukan pada setiap unit fungsi aplikasi yang telah selesai dibuat.
Ketika ditemukan error atau tidak sesuai dengan fungsi yang diinginkan, kode baru ditulis kembali hingga bebas bug kemudian bisa dilanjutkan proses berikutnya.
Tujuan dari TDD adalah menghindari bug akibat duplikasi kode sebelum mengembangkan seluruh bagian aplikasi.
Perbedaan TDD dengan Software Development Biasa
Dirangkum dari Free Code Camp dan DevMountain, TDD memiliki aturan ketat serta tahapan yang disebut dengan The Cycle-Three Step. Selain itu, proses pengujian TDD membutuhkan waktu yang lebih lama dibandingkan dengan software development lainnya.
Aturan pengujian dalam TDD menggunakan dua mekanisme:
- Tuliskan unit tes seperlunya agar terdeteksi gagal
- Tuliskan kode produksi untuk meluluskan unit yang gagal uji.
Tujuan dari peraturan tersebut adalah agar proses pengembangan software lebih bernilai, sekaligus memastikan tes memvalidasi hal yang benar.
Adapun The Cycle-Three Step dari TDD yaitu:
#1 Red phase
Red phase menekankan pada tujuan atau fitur apa yang ingin diimplementasikan pada kode yang ditulis.
Pada tahap ini, programmer harus menulis kode atau test case (kasus uji) yang sudah pasti gagal melewati pengujian. Test case harus berfokus pada bagaimana nantinya user menggunakan kode tersebut.
Kemudian catat bagian-bagian mana saja yang perlu diperbaiki.
#2 Green phase
Fase green adalah waktunya programmer untuk memperbaiki kesalahan kode dengan membuat kode produksi yang akan lulus uji.
Meski disebut tahap paling mudah, banyak programmer yang melakukan kesalahan pada tahap ini. Alih-alih mengkhawatirkan semua kode yang sudah ditulis, sebaiknya fokus pada masalah spesifik yang ditemukan pada tahap sebelumnya.
Pada tahapan ini programmer bisa melakukan segala hal untuk membuat kode lulus uji, misalnya menduplikasi kode.
#3 Refactor phase
Setelah lulus uji, programmer diperbolehkan untuk mengubah kode namun tetap menjaga hasilnya tetap lulus uji. Misalnya sebelumnya programmer menduplikasi kode, pada tahap ini duplikasi kode bisa dihapus.
Setelah seluruh tahapan ini selesai, programmer bisa melanjutkan ke unit selanjutnya dan lakukan hal yang sama.
Kelebihan Test Driven Development (TDD)
Meskipun proses TDD memakan waktu yang lama, cara ini mungkin dapat menghasilkan software berkualitas tinggi dengan waktu yang lebih singkat dibanding beberapa metode software development.
Berikut beberapa kelebihan TDD:
- Menguji setiap unit dapat memberikan feedback konstan mengenai fungsi yang ingin diimplementasikan.
- Mengurangi risiko bug dan memastikan aplikasi dan fiturnya berfungsi secara akurat.
- Karena kualitasnya lebih terjaga, waktu dan biaya yang dikeluarkan untuk proses perbaikan bug (debugging) lebih sedikit.
- Meningkatkan kualitas desain sehingga membantu developer melakukan maintenance dengan tepat.
FAQ (Frequently Asked Question)
Bagaimana urutan dari Test Driven Development yang benar?
Dikutip dari Geeks for Geeks, berikut langkah-langkah melakukan TDD yang benar dilengkapi dengan contoh.
- Tentukan fungsi apa yang ingin diimplementasikan. Misalnya, menghapus duplikat data.
- Tuliskan test case yang menjelaskan fungsinya secara lengkap. Karena tujuannya adalah menghapus duplikat data, maka bisa ditulis “Hapus setiap duplikat data” dan “Simpan data asli yang terduplikasi”.
- Lakukan pengujian dan pastikan test case gagal. Saat menjalankan test case, statement yang tidak relevan dimasukkan untuk membuat test case gagal.
- Tulis kode baru yang dapat membuat test case lulus. Kode baru ini bisa lebih sederhana dari yang sebelumnya, atau bisa juga menduplikasi kode.
- Jalankan test case hingga lulus. Jika belum lulus, maka kode baru harus dibuat lagi untuk menyelesaikan masalah tersebut.
- Jika sudah lulus, lakukan refaktor untuk membuat fungsi lebih efisien. Refaktor bisa dengan menghapus duplikasi kode, namun tetap menjaga hasil test case lulus.