Diselamatkan Oleh Kebiasaan Baru

Igor Lestin
5 min readApr 15, 2020

--

Oke, mari kita buka dengan life lesson terlebih dahulu. Umumnya manusia tidak terbiasa dengan perubahan, merasa bahwa seluruh hal yang telah dikerjakan baik adanya hingga menutup telinga dari saran dan masukan. Belum lagi perubahan yang ditawarkan tidak bisa diterima dengan mudah oleh kita.

Yup, perubahan itu adalah konsep TDD.

Setidaknya kita pasti bingung ketika mendengar konsep ini pertama kali, atau mungkin hanya saya. Apakah kalian sudah pernah mendengar soal Test Driven Development atau TDD ? Ya, saya yakin banyak diantara kita yang sudah pernah mendengar istilah tersebut. TDD telah menjadi sesuatu yang yang wajib ada di lingkungan teknologi informasi dan banyak orang atau perusahaan yang menjadikan TDD sebagai bagian penting dalam development cycle mereka. Sebenarnya apa itu TDD dan mengapa banyak orang yang mengatakan bahwa TDD membuat proses development menjadi lebih baik? —kecuali untuk mereka yang bekerja sebagai arsitektur

Apa itu TDD ?

TDD atau Test Driven Development adalah pengembangan yang disetir oleh Test. Secara sederhana, diawali dengan kita menuliskan test terlebih dahulu diikuti dengan penulisan code program kita. Implementasinya adalah sebagai berikut :

  1. Sebelum menulis kode, tuliskan test-nya terlebih dahulu. Pastikan kita memasukkan semua kemungkinan yang dapat kita pikirkan untuk input dan outputnya.
  2. Jalankan test-nya, dan pastikan test-nya fail karena belum ada kode apapun untuk membuat test-nya pass.
  3. Ketik working code seminimum mungkin dengan tujuan agar test-nya pass.
  4. Jalankan test dan cek apakah test-nya pass. Jika belum pass, maka perbaiki working code kita sampai memenuhi ekspektasi dari test.
  5. Merasa working code yang kita tulis tadi berantakan ? Jangan khawatir, Refactor the code, do some cleaning and DRY-ing. Selama test-nya masih pass, berarti tidak ada masalah dengan kode yang di refactor tersebut.
  6. Ulangi proses dari no 1–5 untuk fungsi-fungsi lainnya.

Apa saja manfaat TDD?

  1. Kode menjadi lebih terstruktur karena test dibuat dalam waktu yang singkat, sehingga kode yang di-test akan dipecah sedikit-sedikit supaya penulisan test cenderung lebih mudah. Dengan memecah kode menjadi bagian-bagian yang kecil, hal ini akan sejalan dengan prinsip “one method has one purpose” dalam pemrograman
  2. Maintenance kode cenderung lebih mudah karena dapat diketahui dengan jelas bagian kode mana yang bermasalah
  3. Menghemat waktu dalam pencarian bug.
  4. Speed up development in the long term. Awalnya terasa seperti buang-buang waktu, tetapi pada akhirnya kita melakukan lebih banyak test dan mengimplementasinya. Hal ini dapat mempercepat development dalam jangka panjang.
  5. Dapat memperjelas requirement dan membuat developer lebih mengerti dengan requirement, juga membuat kode kita lebih akurat.

Implementasi dalam mata kuliah PPL

Seperti yang dijelaskan sebelumnya, bahwa tahapan dalam penerapan TDD dimulai dari pembuatan test yang gagal dan diakhiri dengan berhasilnya test tersebut. Dalam mata kuliah PPL ini terdapat 3 step khusus yaitu sebagai berikut :

  1. RED: Membuat failing test, di tahap ini test pasti failed karena kode belum ada yang diimplementasi.
  2. GREEN: Menulis implementasi kode yang dapat membuat test sukses ketika dijalankan.
  3. REFACTOR: Pada tahap ini kita boleh mengubah dan memodifikasi codingan kita dengan catatan: modifikasinya tidak mengubah hasil test. Melakukan refactor pada kode yang sudah sesuai implementasi boleh berupa pengubahan nama variabel, membuang kode yang ternyata tidak diperlukan, dan lain-lain.

Selanjutnya, kita akan sama sama melihat bagaimana implementasinya dengna menggunakan salah satu contoh ang telah saya terapkan sebelumnya.

Pembuatan test yang memang belum terdapat implementasinya

pada pembuatan test ini, saya mengimplementasikan positif dan negatif test

Positive Test adalah jenis test yang dapat dilakukan pada sistem dengan memberikan data yang kiranya valid atau diterima sebagai input. Tes ini dilakukan untuk memeriksa aplikasi yang melakukan apa yang seharusnya dilakukan. Sedangkan Negative Test adalah pengujian yang dilakukan pada sistem dengan memberikan data yang tidak valid sebagai input.Ini untuk menguji aplikasi tidak melakukan apa pun yang tidak seharusnya dilakukan.

Saya membuat test apakah terdapat register title dengan judul ‘Login Admin’ atau ‘Fake Title’ dan melakukan pengecetak terharap field input juga.

Membuat implementasinya

Pembuatan Title Page Login admin dan field input Email dan Password

Menjalankan Test kembali dan kita sudah berhasil berada di tahap GREEN

Pengalaman pribadi saya dalam menerapkan TDD

Menurut pendapat saya, TDD merupakan suatu pola kegitan yang sangat berguna dalam melakukan pengembangan apliaksi. Kita sama sama mengetahui bahwa dengan TDD kita dapat menjaga keutuhan test coverage dari seluruh baris code yang kita tulis. Hal ini dapat dipastikan karena kita tidak akan menuliskan implementasi sebelum kita membuat test dan memastikan test tersebut berjalan. Seperti yang sudah saya sebutkan sebelumnya, pertama kita membuat test — yang sudah pasti gagal — dan dilanjutkan dengna pembuatan implementasinya. Intinya; Fail-Pass-Refactor-Repeat.

Hal sederhana tersebut akan sangat berdampak ketika kita mempunya proyek jangka panjang. Hal tersebut akan meminimalisir error yang terjadi dalam proses penggabungan (merge) branch yang ada.

Secara tidak langsung, coverage yang tinggi juga memberi tingkat kepercayaan diri yang baik bagi saya dan teman teman satu tim

Dan apabila sewaktu waktu terdapat error, kita akan sangat mudah untuk mengetahui dimana letak errornya

Demikian sedikit gambaran tentang apa itu Test Driven Development dan saya harap tulisan ini dapat berguna untuk kita di kemudian hari.

--

--

Igor Lestin

Cares about the user experience through the application