School of Information Systems

TDD (Test Driven Development)

Dalam membuat suatu system, kita pasti menginginkan hasil produk yang sesuai dengan kemauan stakeholder, lancar dipakai, dan Bug Free. Untuk melakukan hal tersebut, dalam melakukan suatu development, ada istilah yang disebut Test Driven Development. Untuk mengetahui Test Driven Development, pertama kita harus mngetahui apa itu Unit Testing.

Unit Testing adalah suatu uji coba yang dilakukan pada suatu komponen dalam sistem untuk melihat apakah komponen tersebut berjalan sesuai dengan yang diharapkan. Test tersebut dilakukan secara terisolasi dan hanya berfokus pada lulus atau tidaknya komponen tersebut. Contoh: Bayangkan sebuah mesin ATM, mesin ATM tersebut mempunyai banyak komponen seperti layar, keyboard, speaker, dll. Saat membuat mesin ATM tersebut kita melakukan Unit Test, kita melakukan Unit Test dari komponen “Layar” misal. Kita meng-test saat layar tersebut kita pasangkan ke kabel, apakah layar menyala, atau tidak menyala sama sekali? Lalu setelah menyala, apakah layar menampilkan tampilan yang seharusnya, atau hanya garis-garis putih hitam? Seperti itulah contoh Unit Test, yaitu menguji coba suatu komponen, entah itu suatu fitur dalam sistem, atau tampilan, dll.

Jadi sekarang apa itu Test Driven Development? Secara singkat, Test Driven Development adalah metodologi saat kita mengembangkan suatu system dengan memastikan bahwa setiap komponen dalam sistem berjalan dengan semestinya. Proses yang dilakukan saat kita menerapkan Test Driven Development adalah:

  • Menyiapkan beberapa Testing Senario yang akan dilakukan untuk suatu komponen.
  • Melakukan Development untuk komponen tersebut agar komponen tersebut lulus.
  • Komponen yang telah lulus Unit Test disimpan untuk disusun dengan komponen lainya
  • Semua Fitur/Komponen/Kodingan yang telah melewati Unit Test akan digabungkan sampai seluruh sistem selesai.

Dalam mengimplentasi Test Driven Development beberapa hal yang harus diperhatikan yaitu Mocking atau suatu kegiatan dimana team mengreplika suatu kondisi atau event. Dalam melakukan suatu Mocking team dapat melakukanya via Mocking Tool  atau lewat pengembangan sendiri. Beberapa keuntungan yang kita dapat ketika menggunakan Test Driven Development adalah :

  • Saat terjadi error kita akan tahu persis letak error tersebut berada.
  • Dibandingkan meng-test sistem secara keseluruhan, melakukan TDD memberikan waktu yang cepat dalam penggabungan suatu sistem.

Tetapi TDD memiliki beberapa kelemahan, yaitu :

  • Jika suatu requirement berubah, maka setiap komponen harus melakukan test baru.
  • TDD berfokus pada keahlian Developer dan hanya berinteraksi sedikit dengan Stakeholder/Customer
  • “Terkadang” dalam suatu situasi, error dalam suatu Unit Test, jika pada akhirnya system akan berkerja semestinya, sesuai dengan apa yang Stakeholder/Customer inginkan, maka Unit Test yang detail tidak dibutuhkan.

TDD masih sering dipakai dikarenakan tingkat keberhasilan suatu sistem yang benar itu dapat lebih dipastikan jika komponen-komponen yang berada dalam sistem tersebut berjalan dengan lancar. Selain TDD, ada juga methodology lain yang disebut BDD (Behavior Driven Development).

Dimas