Test Driven Development (TDD) — Testing sebelum Coding

Ali Irsyaad Nursyaban
4 min readMar 23, 2021

--

sumber : https://marsner.com/blog/why-test-driven-development-tdd/

Automated Testing

Pada pengembangan software, kita akan diberikan software requirements yaitu daftar spesifikasi software yang akan dibuat. Setelah itu kita akan mengimplementasikan software tersebut sesuai requirements sesuai permintaan client. Untuk memastikan diimplementasikan secara tepat maka diperlukan pengecekan atau testing baik dalam proses maupun akhir implementasi. Setelah pengecekan sudah berjalan dengan baik dan benar maka software siap digunakan oleh client. Yeay !!

Sekilas terlihat cukup mudah? yups, nyatanya? tentu tidak :)

Jika pengecekan tersebut dilakukan secara manual, sangat mungkin menemukan bugs seringkali tidak terdeteksi atau sulit ditemukan. Atau ada miss dalam hal pengecekan karena kita pada dasarnya manusia yang tak luput dari kesalahan :). Tentunya hal tersebut akan memakan banyak waktu. Solusinya?

sumber : https://sigmoidal.io/automatic-code-quality-checks-with-git-hooks/

Dengan pengecekan secara automatis maka kita dengan mudah men-run test script yang sudah kita buat. Tapi bukannya itu akan menambahkan pekerjaan dengan coding test lagi? yups, namun jika dibandingkan dengan waktu mencari bugs secara manual tentu automated test menjadi worth it. Lalu apakah automated test cukup?

Test setelah Coding

sumber : https://qabyexample.com/test-driven-development-tdd-what-it-is-advantages/

Misal kita mengimplementasikan software terlebih dahulu, setelah selesai baru menuliskan automated testnya. Mungkin ada beberapa permasalahan yang dapat muncul pertama hasil implementasi kita sulit untuk ditest, sehingga kita menyesuaikan pembuatan test agar melewati semua implementasi kita. Tentu hal tersebut sedikit menyimpang dari pembuatan test itu sendiri, yang seharusnya mengecek hasil implementasi bukan sebaliknya. Kedua setelah menuliskan test, baru tersadar bahwa hasil implementasi kita lebih kompleks dari requirements yang diberikan. Dan yang terakhir karena hasil implementasi sudah selesai kita jadi menunda-nunda menuliskan automated test, sehingga proses testing jadi tidak maksimal. Lalu bagaimana solusinya?

TDD — Test sebelum Coding

sumber : https://www.freecodecamp.org/news/test-driven-development-i-hated-it-now-i-cant-live-without-it-4a10b7ce7ed6/

Dibalik alurnya, kita menuliskan automated test terlebih dahulu baru mengimplementasikan software berdasarkan testing. Pada dasarnya proses tersebut adalah penerjemahan requirements ke dalam bentuk automated test sehingga kita bisa bergantung pada test tersebut. Konsep inilah yang disebut dengan TDD (Test Driven Development) yaitu development yang diarahkan / dikemudikan oleh test.

Langkah TDD

  1. Menuliskan automated test.
  2. Menjalankan semua test dan melihat hasil terbaru.
  3. Mengimplementasikan sesuai test
  4. Menjalankan test.
  5. Melakukan efisiensi pada implementasi (refactor).
  6. Melakukan kembali langkah 1–5 sampai semua requirements terpenuhi.

Keuntungan TDD

  1. Efisiensi waktu debuging manual pada hasil implementasi
  2. Jika hasil test sudah memenuhi, dapat menjadi acceptance criteria
  3. Membuat developer menjadi lebih fokus mengimplementasikan software
  4. Membuat code lebih bersih (clean code) karena ketika menuliskan test, developer akan mengimplementasikan seefektif mungkin untuk lulus test
  5. Mendapati sedikit bugs dalam hasil implementasi.
  6. Test tersebut menjadi dokumentasi sehingga akan mempermudah untuk memahami code.

Implementasi TDD

Saya pribadi telah mengimplementasikan TDD dalam berbagai proyek salah satunya pada proyek akhir mata kuliah PPL (Proyek Perangkat Lunak). Pada proyek ini saya mengimplementasikan backend API yang menggunakan bahasa pemrograman Python dengan Django REST Framework. Contoh yang akan diberikan mengimplementasi fitu transaksi.

Pertama-tama membuat django app kosong bernama transaction.

Setelah itu membuat automated testnya yaitu pada tests.py kurang lebih seperti berikut:

Setelah dijalankan tentunya test masih failed karena belum terdapat implementasinya.

Saya mengimplementasikan code berdasarkan test tersebut yaitu pada models.py.

Setelah menjalankan code dapat terlihat hasil test :

Dan jika menggunakan TDD karena kita mengimplementasikan base on test maka coveragenya akan mendekati 100%, dan kebetulan implementasi saya 100%.

Berikut hasil commit pada gitlab yang menunjukannya pengimplementasian TDD.

Demikian penjelasan singkat mengenai Test Driven Development (TDD). Terimakasih telah membaca artikel ini, dan semoga bermanfaat. Sampai jumpa di artikel lain.

Referensi

https://id.wikipedia.org/wiki/Test-driven_development
https://medium.com/koding-kala-weekend/tdd-the-series-part-1-apa-itu-test-driven-development-tdd-ff92c95c945f
https://www.agilealliance.org/glossary/tdd/

--

--