The Pragmatic Programmer

Tulisan iseng kalo ada waktu.
See also: Other Geeks@INDC

December 2008 - Posts

PBU (TDD) & TCN

PBU (Pengembangan Berbasis Ujian atau Test Driven Development) pasti sudah banyak yang dengar. TCN (Tau Cara Ngujinya) pasti baru kali ini didengar :)

Saya menulis ini karena melihat banyak orang yang sudah terpengaruh dengan TDD. Anggapan mereka dengan TDD mereka kualitas kode sumber yang mereka tulis jauh lebih baik dari orang-orang atau mereka sendiri yang/tidak menggunakan TDD. Tetapi begitu diminta buktinya apakah benar dengan TDD kualitas kode sumber yang mereka tulis jauh lebih baik, mereka kemudian mengelak dengan mengatakan TDD tuh bukan untuk QA atau menggantikan QA tapi TDD tuh salah satu instrumen dalam merancang perangkat lunak. Memang ada benarnya, kenapa? Karena saya pribadi dalam mendesain sebuah kelas/API selalu mencoba untuk menulis di atas notepad, contohnya begini: Misal saya mau mendesain library untuk pemasangan steker (plug-in). Pertama saya coba ketik di Notepad:

      PluginManager.LoadFromFolder("plugins").Extensions(".dll").ImplementingInterface("IPlugin");

Setelah itu baru saya coba implementasikan kode-kode sumbernya. Teknik ini bisa disebut juga pemrograman atas-bawah (top-down programming). Nah, PBU juga menggunakan teknik yang sama, yaitu pertama kita ketik dulu kode sumber untuk pengujinya kemudian baru kita lanjut dengan mengimplementasikan kode sumber dari fungsi yang kita uji. PBU memang terdengar dan terlihat lebih baik, namun dalam praktik, saya selalu menggunakan metode Notepad karena PBU terlalu menyita waktu. Sehingga kesimpulan yang saya dapatkan, ada cara lain untuk mendesain perangkat lunak selain dengan PBU yang menurut saya sudah lebih dari cukup dan sangat efisien. Namun saya masih belum mengerti kenapa masih banyak orang yang tetap saja mengagungkan PBU. Munkin ada yang bisa memberikan penjelasan?

Hal kedua yang ingin saya bahas adalah argumen para Penangkas(Agilista) bahwa dengan PBU maka kualitas kode sumber mereka lebih baik dibandingkan tidak menggunakan PBU. Namun pengalaman pribadi saya, dalam menulis kode sumber, yang paling penting bukan PBU namun TCN (Tau Cara Ngetesnya). Karena kalau kita sudah TCN maka selama proses menulis dan mencari kutu (debugging) kita dapat melakukan pengujian-pengujian yang harus dilakukan, karena ktia sudah Tau Cara Ngetesnya. Ini berbeda dengan PBU karena TCN memaksa kita untuk memikirkan segala kemungkinan yang dapat terjadi dan kita bisa melakukan pengujian dengan cara tercepat dan paling efisien. Namun dengan PBU kita terperangkap dengan paradigma harus menulis kode untuk melakukan pengujian, sungguh hal yang sangat naif karena banyak hal dalam pengembangan software yang sulit untuk diemulasikan menjadi kode sumber PBU.

Dari kedua hal di atas yang bisa saya simpulkan adalah kita tidak butuh PBU. Yang penting adalah kita tau bagaimana cara merancang perangkat lunak dengan alat-alat yang ada dan kita tahu bagaimana mengujinya. Karena hal terpenting dalam semua bidang rekayasa adalah pengujian (testing).

Mari kita kobarkan apinya (Let's start the flame)!

NB: Karena ada yang protes banyak yang posting di daftar surat-menyurat (mailing list) menggunakan Bahasa Inggris maka posting ini ditulis dengan susah payah menggunakan Bahasa Indonesia Untuk

Share this post: | | | |
TDD is bullshit

Ini lah kenapa gw menganggap TDD is bullshit (http://ayende.com/Blog/archive/2008/12/21/the-tests-has-no-value-by-themselves-my-most-successful.aspx). Orang-orang yang mengagungkan TDD pasti belom pernah ngerasain painfullnya TDD dan tekanan deadline. Bagi gw mereka seperti kaum fundamentalist agama yang sudah terdoktrin dan tidak bisa berfikir dan melihat realita lagi.

Share this post: | | | |