Pendahuluan

Unit Testing sering dituduh sebagai penghambat produktifitas Software Engineer.

Buktinya mana ? Jangan sembarangan omong !

Kita bisa dengar cerita atau pernyataan seperti ini :

Unit testingnya nanti saja ya bro, kita sudah dikejar deadline nih !!

Udaah, Unit testingnya nggak usah, nggak kelihatan juga efeknya ke aplikasi, biarain aja QA yang ngetest end to end nya, nanti juga ketahuan bug nya dimana !


Trus gimana dong ?

Pilihannya ada 2 :

  • Tidak membuat unit testing sama sekali, karena unit testing itu memakan waktu cukup banyak.
  • Membuat unit testing , walaupun sudah dikejar dateline atau sudah mendekati akhir sprint.

Pilihan sulit ya..

Sebenarnya sih tidak,

“There’s always a third choice in life. Even if you think you’re stuck between two impossible choices, there’s always a third way. You just have to look for it.”

Marcus Sedgwick

Akan selalu ada pilihan ke 3.

Walaupun kita hidup di dunia Engineering yang cukup exact, akan tetapi kita tetaplah manusia yang berfikir dan beradaptasi.


Jadi gimana pilihan ketiga itu ?

Tentu saja Kompromi kata kuncinya.

Kompromikan dengan tim kalau ternyata memang terdapat dateline yang bisa terlewat karena terkait lamanya membuat unit test.

Karena kalau ternyata membuat Unit Test merupakan salah satu dari Definition Of Done sebuah story, maka kompromi menjadi solusinya.

Tetapi yang harus diingat bahwa membuat Unit Test itu Penting !

Kenapa penting ? bukannya menghabiskan waktu saja !

Menghabiskan waktu !!..

Iya juga sih, membuat unit testing butuh waktu yang tidak sedikit.

Karena membuat unit testing bukan hanya untuk mencapai Code Coverage yang tinggi. , akan tetapi untuk memastikan bahwa code kita mengakomodasi hampir semua kasus yang kita butuhkan..

Memastikan code/program kita mengakomodasi hampir semua kasus yang kita butuhkan. adalah tujuan unit testing.

Dengan memastikan semua kasus yang kita butuhkan sudah dites secara unit test, maka kita akan yakin bahwa code/program kita akan bebas bug, sehingga waktu yang kita butuhkan untuk bug-fixing nantinya akan berkurang.


Apakah sedemikian banyaknya waktu bug-fixing dibandingkan waktu untuk bikin unit test ?

Konsepnya sederhana :

  • Every test you write will take time. Tiap unit test akan butuh waktu untuk membuatnya.

  • Every bug will take time to fix. Tiap bug akan butuh waktu untuk memperbaikinya.


Pilih mana ?

Pilihan logis adalah bikin unit test dahulu, karena Unit test masuk dalam Planned Work atau pekerjaan yang direncanakan, sehingga kita lihat banyak yang memasukkannya ke dalam Definition Of Done di metoda Sprint Agile.

Sesuatu yang direncanakan akan lebih mudah mengerjakannya dan terprediksi.

Sedangkan Bug adalah sesuatu yang tidak terprediksi, sehingga lebih susah mengerjakan dan akumulasi waktu yang dibutuhkan biasanya membesar seiring dengan makin lamanya bug itu ditemukan setelah di deploy ke production.

Akan tetapi tentu saja kembali lagi ke kompromi dalam membuat unit test.

Kalau memang tidak cukup waktu untuk membuat unit test, maka bisa di kerjakan di lain waktu, di sprint berikutnya supaya kemungkinan bug-bug yang muncul berkurang nantinya.

Jadi unit test berkaitan kah dengan produktifitas ?

Ya, tentu saja. Membuat unit test itu seperti mengikuti Prinsip Pareto, yaitu prinsip 80:20.

Membuat unit test sebelum deploy ke Production adalah seperti mengurangi waktu produktifitas kita di awal/tahap development untuk menambah waktu produktifitas kita nantinya.

Penjelasan yang masuk akalnya gimana ?

  • 80% bug yang kita temui di production, kebanyakan disebabkan oleh 20% dari code kita.

  • 20% dari code kita yang ternyata adalah bug-candidate, kebanyakan bisa ditemukan dari 80% waktu yang kita habiskan untuk membuat unit test.

  • waktu yang kita butuhkan di tahap development adalah murah karena semua dibawah kendali kita. 80% waktu yang kita lakukan adalah coding dan development, 20% nya administrasi.

  • waktu yang kita butuhkan di tahap bug-fixing adalah mahal, 80% nya adalah administrasi, dan 20% adalah bug-fixing.

Jadi gimana produktifitas Anda sekarang ? silahkan berikan masukan dengan berkomentar di bawah ini .