Software Testing

Tentang Software Testing
Saya yakin, saat ini, tahun 2008, tidak banyak di negeri ini yang tahu apa itu software testing, apalagi software yang dibangun dengan test atau lebih tepatnya diguide dengan test. Di sekolah-sekolah diajarkan bahwa cara cepat membuat software adalah dengan mengambil salah satu IDE kemudian melakukan drag and drop didalam IDE itu, orang menyebutnya RAD (Rapid Application Development).

Untuk menjaga agar software yang dibangun dengan RAD itu tetap berkualitas maka diperkenalkanlah sebuah departement baru yang bernama QA. Setiap hari QA menguji semua program yang dibuat oleh programmer. Dengan pola ini, membangun program adalah sebuah siklus pekerjaan: mengumpulkan requirement, mendesign, membuat, menguji dan mendeploy. Semua pekerjaan ini dilakukan secara terpisah oleh departement berbeda atau mungkin orang yang berbeda.

Cara ini dikenal dengan istilah waterfall, air terjun, mungkin merujuk pada analogi air bah yang turun. Jika semua tahap air terjun ini dilewati maka diharapkan apa yang dibuat seuai dengan yang diinginkan pengguna. Sayangnya, waterfall memerlukan waktu yang lama untuk sampai pada pengguna. Waktu yang lama itu cukup untuk membuat pengguna berubah pikiran. Sehingga harus diubah lagi. Belum lagi bila ada kesalahan yang harus diperbaiki. Semuanya akan kembali ke proses awal.

Orang kemudian memperkenalkan cara baru. Dengan cara ini pengguna dilibatkan dalam pembuatan program. Kalau dulu program dibuat seperti air bah terjun, kini dibuat seperti air menetes. Setiap tetes air yang jatuh telah mengalami banyak ujian. Pengguna kemudian merasakan apakah tetesan itu cocok dengan yang diinginkan atau tidak. Jika tidak maka cepat-cepat tetesan itu dikembalikan untuk diperbaiki. Tetesan ini sama dengan fitur. Dengan cara ini program yang akan dibuat secara keseluruhan (seluruh tetesan) sesuai dengan yang diinginkan pengguna. Tidak ada satupun yang tidak sesuai dengan pengguna. Jika pun ada ia dikategorikan sebagai sampah. Orang menyebutnya sebagai Agile Development. Ada banyak metode yang mengaku agile, tapi yang saya sukai Xtreme Programming dan Scrum.

Untuk mendukung Agile, orang kemudian mengembangkan cara agar kode yang dibuat programmer itu bersih (clean code). Kode yang bersih adalah kode yang jelas, cerdas, berkualitas dan tidak duplikasi. Kopi-paste adalah indikasi adanya kode yang kotor. Salah satu syarat agar kodenya bersih adalah kode itu harus tertest setiap barisnya. Kemudian berkembanglah apa yang disebut dengan Test Driven Development (TDD). Development yang didrive dengan test berarti semua harus diawali dengan test. Orang harus membuat test terlebih dahulu baru membuat program. Dengan demikian terjamin semua kode yang dibuat tertest dengan baik.

Bagaimana menggunakan unit testting tool

Iklan

2 Tanggapan

  1. Hmmm.. “Orang harus membuat test terlebih dahulu baru membuat program. Dengan demikian terjamin semua kode yang dibuat tertest dengan baik.”
    Apakah ini juga tidak memerlukan waktu lama seperti metode waterfall yang dijelaskan di atas?? Karena bila ada perubahan requirement dari user, apa yg sudah ditest sebelumnya harus ditest lagi setelah memenuhi requirement, menurut saya…

  2. Pertanyaan yang bagus Mas Jaka. Namun kita harus membandingkan jeruk dengan jeruk dan apel dengan apel. Waterfall harus kita bandingkan dengan XP, Scrum atau methodoloy Agile lainnya.

    Sedangkan TDD saya lebih condong membandingkan dengan HB programming, RAD bahkan mungkin autogenerate code. Sebab didalam waterfall sendiri bisa juga diintroduce TDD. Demikian juga didalam TDD bisa dimasukkan autogenerate, misalnya menggunakan Resharper untuk menggenerate class atau interface. Tapi, lebih suka menggunkan TDD murni tanpa bantuan apapun(hand code).

    Hubungannya dengan lamanya waktu, saya akan menjelaskan dengan membandingkan waterfall dengan lean development (didalamnya ada XP dan Scrum). Mengapa waterfall lebih lama bisa Mas Jaka lihat dua gambar dibawah ini. Gambar ini dibuat oleh Popendieck, penulis buku Lean Software Development.

    Gambar. Waterfall Value Stream

    Gambar. Lean Value Stream

    Kedua gambar diatas mengatakan, waterfall membutuhkan waktu 55 minggu sedangkan lean membutuhkan waktu hanya 14 minggu, 3 kali lebih cepat. Kendala yang dihadapai waterfall kebanyakan adalah kendala teknis dan keterlambatan feedback dari pengguna. Product yang keluar dari lean adalah program yang 90% sudah siap dalam production. Product yang keluar dari waterfall, perlu beberapa waktu untuk stabil dan bebas bug.

    Demikian juga dengan TDD, TDD tanpa feedback ibarat manusia tanpa darah. Kecepatan release dan feedback menentukan kecepatan kematangan software. Saya akan tulis topik khusus mengenai siklus TDD.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: