Dalam salah satu komentar balik dalam posting tentang ‘etos kerja yang tinggi‘, saya berjanji mau share ‘benang merah’ dari presentasi saya dalam satu acara yang saya ceritakan disana. Materi yang saya sampaikan waktu itu, sesuai dengan permintaan, adalah tentang UAT (User Acceptance Test). UAT adalah prosedur baku yang biasanya dilakukan untuk menguji perangkat lunak yang dibangun, dan akhirnya setelah melalui proses tertentu, pada akhirnya memberikan pernyataan bahwa perangkat lunak tersebut layak digunakan.
Saya ingin share dan mengingatkan saja (mungkin sebagian besar pembaca sudah mengetahuinya) bahwa
pengujian sebuah perangkat lunak idealnya dilakukan tersebar sejak awal pengembangan sampai menjadi produk yang dinyatakan selesai secara engineering.
Mengapa? Mari kita perhatikan gambar berikut.
Grafik sederhana tersebut memperlihatkan bahwa effort relatif yang harus dikeluarkan untuk memperbaiki sebuah perangkat lunak akan membesar luar biasa jika kita biarkan terus. Jika pada saat DEFINITION (menentukan user requirement) kita melakukan pengujian user requirement dengan teliti, maka effort relatifnya adalah 1 (satu). Jika kita biarkan lolos begitu saja sampai tahap development (design, programming), maka effort tersebut bisa bengkak sampai 6 kali lipat. Nah, lebih mengerikan lagi! Jika kita biarkan sebuah software tidak diuji secara serius dan ada kesalahan yang baru disadari setelah release, maka effort relatif yang harus kita lakukan untuk memperbaiki dampaknya bisa mencapai 100 kali lipat. Jadi pilih mana?
UAT biasanya dilakukan setelah proses development selesai. Jika kita mengharapkan manfaat maksimum dari pengembangan software di perusahaan atau organisasi kita, maka sebaiknya jangan hanya mengandalkan proses UAT, tetapi juga meningkatkan pengawasan (pengujian) software pada tahap-tahap sebelumnya.
Diharapkan pada saat proses UAT, tidak ditemukan lagi kelemahan engineering, tapi hanya sedikit perbaikan dari perspektif user dan pengoperasian. Error teknis seharusnya sudah terdeteksi dan diperbaiki pada tahap sebelumnya!
Mudah-mudahan bermanfaat.
Wow saya menyimak saja … belum mampu berkomen. Makasih pembelajarnnya.
Great banget!
Ini dia blog yang saya tunggu-tunggu…
Blog yang benar-benar profesional!
Semoga menular kepada blogger lain, Amin!
Insya Allah berguna buat yang mencari informasi dan ilmu
terus berkarya seperti ini ya pak
saya dukung
@apiqquantum dan @realylife, terima kasih, Insya Allah membuat saya lebih bersemangat untuk berbagi pengalaman.
Wah pak Arry, artikel ini dari hasil pengalaman pribadi ya ? Teknik software testing ini saya baru coba-coba praktekkan. Yang sudah saya coba cukup lama adalah SCM (Software Code Management). Sayangnya di EL kurang diajarkan tools pemrograman semacam ini (Testing, SCM, Project Management, dsb).
Saya setuju sekali dengan grafik yang anda tampilkan dan proses UAT yang anda presentasikan.
Saya hanya ingin mengomentari sedikit :
Harus diingat juga proses pendefinisian yang sempurna akan memakan waktu yang luar biasa juga. Karena begitu banyak faktor yang harus diperhitungkan. Dan selama waktu ini juga harus diperhitungkan berapa jumlah programmer yang menganggur karena tanpa spesifikasi mereka tidak bisa bergerak.
Itu sebabnya biasanya dalam praktek semuanya berjalan bersamaan atau paralel. Maka dari itu konsep modulasi sangat penting. Satu définisi modul selesai, kita langsung mulai untuk programasi. Dan setiap modul prgrammer harus bertanggung jawab terhadap aspek teknik dan fungsi, hal ini sering disebut unit test.
Di akhiri dengan proses integrasi. Yaitu menggabungkan semua modul modul yang ada dengan mengetest secara teknik dan fungsi. Disinilah UAT dapat diaplikasikan.
Dan lebih rumit lagi apabila aplikasi tadi masih terhubung dengan aplikasi lain yang proses testnya membutuhkan integrasi yang lebih global lagi :). Dan terpaksa kita merelease tanpa bisa mengetest semua kasus.
Waduh jadi ngalor ngidul. Intinya terkadang kita tidak mampu memisahkan tahap tahap tersebut. Dan sebagai akibatnya kita harus siap menanggung resiko adanya bugs.
Semoga bermanfaat.
Yang menarik juga adalah pendekatan TFD (test first development)-nya Extreme Programming… Development diawali dengan membuat test case. Berikutnya, analisis-design-coding dibuat dalam rangka mencapai hasil yang baik apabila test case yang telah dibuat akhirnya di-run…
Assalamualaikum … mas tolong jelasin tahap tahap nya lbih detail ,, apa” ajaa gtuu metode software testing , terbagi berapa gtuu mas ,, trus perannya sebagai apaa ??? dalam softwware testing..
stuu lagii mas trus mamfaat padaaa arsitektur dalam rekayasa perangkat lunak ,,, apaa ajaa metodenya mas .. mksiii sblom nya ….
IT auditor masuk dalam proses UAT tidak ya? Bagaimana sih posisi it auditor?
dsfsdfs67877 test test
yuup mendukung pak sama yang kamri rasakan pun demikian … tapi ada kalanya konsumen atau user selalu testing dilakukan setelah implementasi pada saat user requerment iya-iya saja tidak dipikirakan dampak keinginan lebih lanjut … setelah jadi baru kurang ini .. kurang itu dan hampir semua kesalahan disalah kepada developer karena dianggap kurang mengakomodir permintaan user … mungkin sedikit curhat ya itulah nasib Developer dinegeri ini mungkin yang kami rasakan kami bukan dianggap sebagai mitra kerja akan tetapi dianggap sebagai tukang saja …
makasih gan atas artikelnya,sangat bermanfaat dalam pengerjaan tugas akhir saya