TDD (Test Driven Development)

Ilham Darmawan
PPL D7 — Fasilkom UI
3 min readMar 8, 2019
Test Drive

Halo, kembali lagi bersama saya Ilham. Kali ini saya akan membahas mengenai hal yang saat ini lagi marak-maraknya dalam dunia software development. Apa sih? TDD tentunya. TDD ini memiliki kepanjangan Test-Driven Development. Yuk simak selanjutnya!

Pengertian TDD (opo iku TDD?)

TDD adalah suatu pendekatan dalam pengembangan perangkat lunak dimana dalam membuat sebuah software, programmer dituntut untuk lebih dulu membuat tes sebelum membuat kodenya itu sendiri. Hal ini memang awalnya terdengar agak aneh bagi kalian developer muda yang belum banyak mengenal berbagai metode pengembangan perangkat lunak. Namun, hal ini tentunya memiliki beberapa keuntungan. Berikut ini beberapa keuntungan dari menerapkan TDD dalam pengembangan perangkat lunak:

  • Membuat kode lebih modular karena kita dengan sendirinya akan membuat tes yang cenderung berukuran kecil
  • TDD akan menuntut kita dengan sendirinya untuk membuat arsitektur perangkat lunak yang bagus
  • Membuat kode lebih mudah untuk di-maintain dan di-refactor
  • Membuat kolaborasi dalam tim menjadi lebih efisien dengan modularisasi kode *separation of concern intensifies*

Lalu dalam segala hal tentunya ada sisi positif dan sisi negatif. Lalu apa sih kekurangan dari metode TDD yang sedang populer ini?

  • Perlu me-maintain tesnya itu sendiri, sehingga yang perlu di-maintain bukan hanya kode untuk software-nya saja
  • Tesnya sendiri mungkin sulit untuk dibuat karena beberapa faktor seperti harus melakukan mocking, sehingga bisa jadi memperlambat proses pengembangan perangkat lunak
  • Sulit diimplementasikan pada legacy code

Setelah kita mengetahui baik dan buruknya menerapkan TDD, saatnya kita masuk ke bagian aturan fundamental dalam TDD

Red, Green, Refactor (Good for your health)

Red, green, where’s the refactor?

Red, green, refactor adalah aturan paling fundamental dalam TDD. Ketiga kata tersebut menunjukkan berbagai fase dalam menerapkan TDD. Berikut ini penjelasannya

Red (The first step)

Dalam tahap ini, kita diharuskan untuk membuat tes terlebih dahulu berdasarkan pandangan kita terhadap suatu fungsi yang nantinya akan melakukan hal apa dan mengembalikan hal apa. Sebagai contoh, saya ingin mencoba membuat sebuah fungsi penambahan dalam javascript. Untuk mengimplementasikan testing dalam javascript, dibutuhkan library seperti chai untuk proses assertion. Berikut ini contoh dari tes yang saya buat pada fase red

Potongan kode testing di atas menggambarkan bahwa ketika fungsi tersebut diberikan 2 buah angka yang valid sebagai input, maka akan mengembalikan hasil penjumlahan kedua angka tersebut. Lalu ketika salah satu parameter tersebut tidak valid maka akan mengembalikan NaN. Ketika dibuat tes ini, dibuat juga fungsi sum-nya supaya tidak ada referenceError

Green

Dalam fase ini, dibuat fungsi yang membuat tes tersebut menjadi passed, akan tetapi masih belum mengimplementasikan fungsionalitas dari fungsi tersebut. Berikut ini contoh stub function

Dapat dilihat bahwa dari condition statement dalam fungsi tersebut hanya meng-handle tesnya saja, belum mengimplementasikan fungsi penjumlahan itu sendiri

Refactor

Dalam tahap ini, kita diminta untuk mengubah fungsi yang tadinya masih sekadar lulus tes untuk menjadi fungsi yang benar-benar mengimplementasikan suatu algoritma dengan tetap lulus tes tersebut.

Kurang lebih begitulah aturan fundamental dalam penerapan TDD. Saat ini, hampir tidak ada perusahaan yang tidak menerapkan konsep ini. Hal ini karena kita sebagai developer dituntut untuk berpikir sebagai user yang tidak tahu apa-apa mengenai produk tersebut, sehingga kita dapat mencegah kasus-kasus yang dilakukan user yang tidak diinginkan dan dapat mensimulasikan perilaku dari sebuah fungsi yang berjalan dengan baik. Untuk proyek kelompok kami sendiri, kami menggunakan javascript sebagai bahasa pemrogramannya. Untuk library testing sendiri kami menggunakan chai untuk proses assertion dan nyc untuk menampilkan code coverage. Salah satu tes yang kami uji berhubungan dengan pengambilan, dan pemasukan data ke dalam database PostgreSQL dengan javascript. Yah, sekian dulu penjelasan saya mengenai TDD, semoga bermanfaat bagi kalian para pembaca. Sampai ketemu!!

--

--