TDD, bukan buat anak Farmasi

Ryan Aulia Rachman
PPL Teman Bisnis
Published in
4 min readApr 4, 2019

Hai hai, ini post ketiga saya (post kedua belum selesai, jadi…). Kali ini saya akan mencoba membahas TDD (Test Driven Development) dan bagaimana hal tersebut berpengaruh pada hidup saya tapi tidak seberpengaruh orangtua saya.

Apa itu TDD?

Sesuai namanya, apa yang diinginkan model kerja yang menggunakan TDD adalah agar kita harus membuat test yang jelas menjelaskan apa yang ingin dihasilkan atau ditampilkan oleh program yang akan dibuat.

Oh iya, prinsip kerja TDD sendiri adalah “RED, GREEN, REFACTOR”. Inti dari prinsip tersebut adalah :

  1. Buat test,
  2. Selesaikan/lewati test, lalu
  3. Perbaiki/perbagus kode.

Contoh penggunaannya misalnya saya ingin menampilkan web page dengan judul “Aldnoah.Zero Payah” (ngga bermaksud ngejek tapi endingnya emang payah) maka saya akan membuat test dulu yang secara garis besar menjelaskan bahwa saya ingin web dengan page tertentu yang akan menampilkan tulisan “Aldnoah.Zero Payah” baru saya membuat kode yang akan melakukannya (dalam hal ini membuat kode di views.py, urls.py, dan html terkait). Setelah lulus test tersebut, jika masih ada kode yang bisa diperbaiki, maka lakukan perbaikan tetapi tidak mengubah hasil akhir yang sudah dicapai.

Kenapa harus TDD?

Nah, kalau soal kenapa harus menggunakan TDD saya sendiri tidak bisa berbicara banyak karena saya belum benar-benar baik menggunakannya. Tapi ada beberapa hal yang bisa saya jelaskan mengenai mengapa harus menggunakan TDD :

  1. Agar tidak terjadi perubahan requirement secara mendadak terus menerus terutama ketika terjadinya sprint. Karena secara teknis beban kerja kita hanyalah dari test yang kita buat/terima.
  2. Tujuan pekerjaan lebih pasti. Goal nya sudah diberitahu jadi tinggal buat kode yang bisa memenuhi goal tersebut. Kalau coverage nya kecil, berarti antara kode kita masih kekurangan method yang dibutuhkan atau kode kita memiliki method yang tidak digunakan oleh test.
  3. Membuat kode yang bersih dan efisien. Karena memiliki prinsip ‘REFACTOR’ secara jelas programmer dituntut untuk membuat kode yang efisien.
  4. Memudahkan proses debugging. Jika test tidak lolos, maka ada kode yang menyebabkan bug pada kode-kode yang berhubungan dengan test tersebut. Semudah itu kan?

Pengalaman saya sendiri selama menggunakan TDD (terutama saat PPW dan AP) memang cenderung lebih mudah apalagi jika test tersebut sudah menjelaskan harus membuat kelas dan method apa saja.

Contoh penerapan TDD

Contoh Test, Functional Test

Jadi contoh kode di atas adalah functional test untuk menekan button. Dari kode tersebut kalian bisa menyimpulkan “Kode tersebut menggunakan webdriver chromedriver untuk melakukan test button. Sebelum ditekan, style tidak mengeluarkan apa-apa. Setelah ditekan, style memunculkan sesuatu yang dalam hal ini memunculkan modal advanced search” . Maka saya bisa melakukan commit [Red].

Ketika di push maka code tersebut akan menjadi fail.

Lalu saya membuat kode untuk tombol tersebut beserta modal yang akan ditampilkan.

Penggalan kode

Setelah saya lakukan py manage.py test, hasilnya pass. Berarti saya sudah bisa melakukan commit [Green]. Yeah!

Eh?

… Jadi ternyata requirement chrome driver nya ketika saya push belum terpasang. Akhirnya meskipun secara local sudah pass test tetapi ketika saya push tetap fail pada gitlab. Sangat anti-klimaks…

Untuk [Refactor]… Berhubung kode saya adalah HTML cukup sulit untuk menentukan refactor yang tepat.

Penerapan TDD saya?

Seperti yang sudah saya katakan, saya belum benar-benar menggunakan TDD. Alasannya? Ya… karena mager sebenernya (jangan ditiru).

Kurang lebih apa yang saya lakukan. Hehe.

Tapi, TDD sudah banyak digunakan oleh banyak perusahaan terutama perusahaan yang menerapkan Extreme Programming dan Pair Programming karena, dari yang saya asumsikan,

“Seorang programmer tidak akan bekerja di satu tempat selamanya sehingga jika kode nya bersih maka programmer baru yang meneruskan pekerjaannya tidak akan kesulitan yang jika sebaliknya akhirnya menyebabkan marah-marah sambil mengatakan sendiri yang akhirnya tidak produktif.”

Oleh karena itu, penggunaan TDD dalam pembuatan kode kita tidak hanya menguntungkan untuk diri kita tetapi juga menguntungkan untuk orang lain.

Akhir kata

Mengerti dan menggunakan TDD ngga ada ruginya dan malah membuat performance kode yang kita buat bisa menjadi lebih baik lagi sehingga kode yang kita buat lebih mudah dimengerti oleh orang lain. Saya sendiri akan berusaha lebih untuk bisa menerapkan TDD lebih baik lagi dan kamu, yang baca, juga ayo pakai TDD!

P.S Kalau penasaran kenapa judulnya kaya gitu coba cari di Google “TDD farmasi”

--

--