Test-Driven Development

Ibnu Firdaus
PPL D7 — Fasilkom UI
3 min readMar 20, 2019

One of many way to do Quality Assurance. a.k.a making sure things work really work, not just work. get it?

Hey, we do what we need to in the end alright.

Halo! Pada postingan blog kali ini saya akan membahas tentang salah satu topik yang menarik yaitu Test-Driven Development. Pada sesi kali ini saya akan membahas tentang definisi TDD, konsep utama, serta alasan penting kenapa kita menggunakan TDD. So let’s get started!.

The Definition

Test-Driven Development adalah sebuah software development process dimana task yang ada dipecah kedalam beberapa cycle singkat yang berisi tes-tes mengenai fitur komponen yang nantinya akan kita buat.

What we do ? Apa yang kita lakukan adalah, kita mencapai goal kita, yaitu sebuah working product, dengan mengerjakan task agar dapat lulus test yang telah dirancang sebelumnya. Test cases yang dirancang haruslah dapat mengantisipasi segala macam situasi dan kondisi yang dapat terjadi pada flow usage dari produk yang dibuat.

The Main Concept : Red Green Refactor

The Trinity of Test-Driven Development

Konsep utama yang menjadi daya jual dari TDD adalah konsep Red-Green-Refactor. Konsep ini merupakan sebuah siklus dari proses pengembangan sebuah produk, Red memiliki makna sebuah test yang baru saja diinisasi (sehingga tidak lulus test, hence, red), Green menandakan bahwa kita sudah mengimplementasikan sebuah fitur/iterasi dari produk dan dapat melakukan semua use case yang diujikan, see below for more detail.

Pada tahapan ‘Red’, kita menginisiasi sebuah stub function, yang biasanya hanya berupa callable functions that do nothing, pretty much like some people. Selain itu, kita juga membuat sebuah unit-test yang me-cover semua skenario yang dapat timbul, dan kita harus membuat produk kita sedemikian rupa agar dapat lulus test ini.

Pada tahapan ‘Green’, kita mengimplementasikan fungsi sebenarnya pada stub function yang telah dirancang sebelumnya. Pada tahapan ini working product sudah dapat dilihat rupa, bahkan sudah dapat dicoba. Jika semua test case dapat lolos, maka dapat hampir dipastikan bahwa kita sudah melakukan implementasi dengan baik.

Tahapan terakhir, yaitu ‘Refactor’, merupakan sebuah lanjutan dari tahapan green, let’s say kita sudah membuat implementasi yang dapat pass test yang telah dirancang. Ok sure we’ve done it. Does this mean we already hit our peak performance by doing this?. Tidak, harap diingat bahwa saat kita sudah selesai tahapan green, produk memang sudah dapat dipakai, lengkap dengan antisipasi semua skenario yang dapat timbul. Tapi ada satu hal yang harus diperhatikan, terkadang apa yang kita buat kurang efektif dan efisien, terkadang data yang di-parse harus diubah struktur datanya, dsb. Oleh karena itulah kita melakukan refactor, kita cenderung tidak melakukan red-green pada tahapan ini. Yang sebenarnya kita lakukan adalah, melakukan improvement pada working product yang dibuat, tanpa merusak original purpose dari fungsi/komponen yang telah dibuat sebelumnya.

The Reason

Alasan penting kenapa kita menerapkan konsep ini pada PPL tahun ini adalah karena manfaat yang diberikan saat kita melakukan penerapan TDD. Diantaranya adalah kita dapat generate idenya terlebih dahulu, merancang skenario penggunaan, lalu mulai mengerjakan implementasinya. Bahkan kita dapat melakukan improvement dari apa yang sudah ada tanpa merusak proses yang sebenarnya, ini karena adanya tes-case yang dapat menangkap apabila sebuah fungsi tidak sesuai ekspetasi yang diminta.

Alasan kedua adalah TDD membuat flow pengerjaan menjadi lebih terarah. Kita semua paham bahwa kadang agile membawa dampak yang kurang baik seperti burnout, kejelasan yang tidak pasti, dan lainnya. TDD mencoba menjawab hal tersebut dengan membuat framework bekerja yang mengintegrasikan TDD dengan komponen utama pekerjaan.

Jadi, cukup sekian artikel kali ini, see you next time!

--

--