TDD, Si Penyelamat Tanpa Tanda Jasa

Muhammad Raihan
5 min readMar 19, 2021

--

Kebutuhan manusia akan teknologi untuk menjalani kehidupan semakin lama semakin berkembang. Tentu saja, setiap aplikasi yang ada juga mengikuti perkembangan tersebut. Requirement aplikasi yang berubah-ubah menjadi salah satu masalah yang harus selalu diselesaikan oleh para developers. Membuat aplikasi dari awal dan mengembangkan aplikasi yang sudah ada adalah 2 masalah yang berbeda. Seringkali software developer “merusak” software yang sebelumnya berjalan baik karena modifikasi source code. Salah satu jawaban dari masalah tersebut adalah Test Driven Development (TDD).

TDD

Test Driven Development atau biasa disebut TDD adalah sebuah software development cycle (metode yang digunakan dalam pengembangan software) yang banyak digunakan oleh para software developers. Dalam penerapan metode TDD, ada 3 hal penting yang akan dilakukan oleh software developer, yaitu testing (dalam bentuk unit test), coding, dan designing (dalam bentuk refactoring). Designing yang dimaksud buka melakukan desain suatu halaman, namun mendesain sebuah source code yang baik.

Selengkapnya, berikut adalah tahap yang harus dilakukan oleh software developer :

  1. Buat unit test sesuai dengan requirement yang ingin dipenuhi. Usahakan cover semua positive test (kemungkinan input yang sering terjadi).
  2. Jalankan test tersebut, pastikan bahwa hasilnya gagal.
  3. Buat source code yang bersifat “just enough” untuk membuat test sebelumnya menjadi berhasil. Ini akan menahan para software developers untuk membuat arsitektur source code yang rumit.
  4. Jalankan kembali unit test, pastikan source code sudah membuat hasil test menjadi berhasil.
  5. Lakukan refactor pada source code yang dibuat agar menjadi clean code. Jalankan kembali unit tests untuk memastikan proses refactor tidak mengubah fungsionalitas source code.
  6. Ulangi langkah 1–5 untuk setiap requirement aplikasi yang akan dibuat.

BENEFITS OF TDD

Dengan melakukan Test Driven Development saat mengembangkan aplikasi, software developers akan mendapat manfaat seperti :

  • Dengan membuat test terlebih dahulu, developer akan membuat skenario dan menambah pemahaman akan requirement.
  • Proses pembuatan test diawal juga akan membuat developer memikirkan tentang code design, dan menahan developer agar tidak membuat struktur kode yang rumit, cukup untuk meloloskan hasil test.
  • Memberi tahu developer dimana letak bug/error. Karena unit test adalah test yang menguji bagian kecil dari code (contoh: sebuah method) maka dimana test gagal disitulah bug/error berada.
  • Mengurangi resiko merusak aplikasi setelah memodifikasi source code yang berhubungan dengan fitur yang berjalan lancar. Setelah menjalankan test terus-menerus, akan segera diketahui bahwa ada kesalahan sebelum dimodifikasi terlalu jauh.

TDD IN AGILE DEVELOPMENT

Test Driven Development sangat berguna saat kita menggunakan metode Agile Development dalam mengembangkan aplikasi kita. Agile development dikenal dengan sifat “tahan banting” terhadap perubahan/penambahan requirement aplikasi. Tentu saja, tidak menutup kemungkinan bahwa perubahan/penambahan requirement yang terjadi berhubungan dengan fitur lain yang sudah berjalan dengan baik.

Dengan menggunakan TDD, software developer meminimalisir kemungkinan modifikasi perubahan requirement akan “merusak” fitur yang sudah berjalan dengan baik. Penggunaan TDD pada Agile development bisa dilihat pada commit message yang dibuat oleh para developer :

  • [RED]

Pada tahap ini, developer sudah membuat unit tests scenario yang menjadi acuan source code yang akan dibuat selanjutnya, namun BELUM ADA SOURCE CODE yang terbuat.

  • [GREEN]

Pada tahap ini, developer sudah membuat source code yang BERHASIL MELOLOSKAN TEST.

  • [REFACTOR]

Pada tahap ini, developer sudah melakukan refactor pada source code tanpa mengubah fungsionalitas.

CODE COVERAGE

Dalam penerapan TDD, tentu kita mengusahakan untuk membuat source code yang cukup hanya untuk meloloskan hasil test yang sebelumnya dibuat. Namun, bagaimana kita mengetahui bahwa sudah ada test untuk seluruh bagian source code yang kita buat? Jawabannya adalah dengan melihat code coverage. Menurut Atlassian, code coverage adalah sebuah ukuran yang dapat membantu developer mengerti berapa banyak source code yang sudah memiliki test.

Semakin besar code coverage yang kita miliki, semakin bagus. Code coverage dapat dicari dengan tools tertentu berdasarkan bahasa pemrograman dan framework yang digunakan dalam membuat aplikasi. Contohnya, pada aplikasi yang menggunakan Django framework, dapat menggunakan coverage.py untuk menghitung code coverage. Code coverage tool biasanya memberikan banyak pengukuran, diantaranya :

  • Function coverage : jumlah function yang sudah dijalankan dalam test
  • Statement coverage : jumlah statement yang sudah dijalankan dalam test
  • Branches coverage : jumlah struktur bercabang (contohnya if statement) yang sudah dijalankan dalam test
  • Condition coverage : jumlah kondisi positif/negatif yang sudah dijalankan dalam test
  • Line coverage : jumlah baris source code yang sudah dijalankan dalam test

Dari pengertian diatas, untuk mendapatkan code coverage yang baik, kita harus membuat test yang baik dan memikirkan banyak skenario.

TDD IMPLEMENTATION

Untuk memperjelas, berikut adalah contoh penerapan TDD sederhana yang dilakukan pada awal pembuatan aplikasi dengan requirement bisa melakukan akses terhadap suatu url. Langkah pertama, buat unit test yang berhubungan dengan requirement tersebut kemudian lakukan commit pada git repository. Dapat terlihat pada gambar dibawah pipeline testing gagal.

Kemudian, buat source code yang cukup untuk meloloskan test tersebut. Setelah hasil test dipastikan lolos, commit changes kemudian push ke remote repository git. Dapat terlihat bahwa pipeline sudah passed menandakan test sudah berhasil.

Tidak berhenti disitu, jika source code yang dibuat sebelumnya masih memiliki code smells dan belum clean, maka harus dilakukan refactor. Dengan mengikuti langkah diatas, developer akan dapat merasakan manfaat yang diberikan TDD.

Begitulah penjelasan singkat dari TDD, metode penyelamat developer dari berbagai masalah software development yang sering terlupakan. Semoga artikel ini bermanfaat!

referensi :

--

--