Dulu waktu pertama kali mendengar TDD, entah kenapa, metode Test Driven Development ini terasa familiar. Secara prinsip, metode ini membuat kita berpikir goal oriented, dimana kita berpikir bagaimana nantinya aplikasi ini bekerja, yang untuk saya pribadi sangat cocok. Akhirnya saya tahu kenapa metode ini sangat familiar, karena jawabannya ada didinding depan meja kerja saya dikantor dan rumah. Yaitu 7 habits dari Stephen Covey, habits ke dua, yaitu “Begin With End in Mind“.
Sebagai pemula dalam menggunakan TDD, metode ini cukup sulit diterapkan karena merubah kebiasaan, dimana kita tahu, lebih mudah mengubah dunia daripada merubah kebiasaan bukan? Kick Off meeting, Joint Design meeting, lalu development meeting, QA, SIT, UAT, walau tidak benar-benar sekaku grand waterfall, yah mini waterfall tapi banyak. Apalagi ingat habit programmer jaman chaos freelance dulu waktu masih dikampus
) Tapi setelah membaca dari berbagai sumber, akhirnya mulai familiar dengan metode ini. Red-Green-Refactor, mulai sedikit demi sedikit terbiasa. OK juga sih, lebih pede merubah-rubah source code, karena tahu pasti nanti bisa di test dengan hanya satu kali klik saja.
Setelah mencoba-coba mengaplikasikannya, mulai ada pertanyaan yang cukup mengganggu. “What to test next?” Apa yang perlu ditest lagi ? Asal bisa jalan sempurna? ok selesai, lalu apa ya ? Menjawab pertanyaan diatas bisa memakan waktu cukup lama, dan sedikit tidak nyaman karena bisa menjadi bola liar. Lalu saya coba pendekatan terstruktur, coba bisa tidak disinergiskan dengan requirement modul? Modul ini punya requirement apa, lalu dipikirkan beberapa unit testnya, jadi hal yang penting dikerjakan terlebih dahulu. Misalnya seperti ini:
Modul login:
a. Menerima user name dan password
b. User name minimal 8 karakter
c. Password minimal 8 karakter, tidak boleh cuma huruf saja.
Dikembangkan menjadi seperti ini
Modul login:
A. Menerima user name dan password
- Test input blank
- Test username tidak ada password ada
- Test username ada password tidak ada
2. User name minimal 8 karakter
- Test input username pendek
- Test input username sangat panjang >255
3. Password minimal 8 karakter, tidak boleh cuma huruf saja.
- Test input password pendek
- Test input password sangat panjang >255
- Test input password huruf saja
Lumayan, 5 menit cukup untuk test case sederhana
BTW kalau untuk pemula seperti saya, biasanya belum-belum sudah panik. Wah test case sebanyak itu ? Waktu bisa habis hanya untuk bikin test case saja dong ? Tapi seiring waktu, ternyata tidak juga. Waktu yang habis untuk membuat test case ternyata lebih pendek daripada waktu debugging waktu modul dinyatakan selesai dengan menggunakan habit yang chaos yaitu “Code ASAP much debugging later”, perhatikan kata “much” yang sering berganti menjadi “no time for”
)
Dengar-dengar ada versi TDD yang seperti diatas, tapi apa ya lupa keywordnya
Goal oriented (Begin With End in Mind), hal yang penting dikerjakan terlebih dahulu (First Thing First), dan disinergiskan (Synergy), 7 Habits beneran deh
Lalu buku 8 Habits gimana? Hehehe that’s another story.
Ref:
Dari berbagai sumber.