Ketika Pembayaran yang Seharusnya Berhasil Justru Ditolak
Satu transaksi, beberapa masalah
Bayangkan Anda sedang membantu menguji TOKOWARGA, aplikasi kasir untuk koperasi warga. Seorang anggota bernama Aulia hendak membayar belanja senilai Rp75.000 dengan saldo anggota sebesar Rp75.000. Aturan usaha menyatakan bahwa pembayaran boleh dilanjutkan apabila saldo sama dengan atau lebih besar daripada total belanja.
Kasir menekan tombol Bayar dengan Saldo. Aplikasi menampilkan pesan Saldo tidak mencukupi. Transaksi berhenti, antrean bertambah panjang, dan Aulia akhirnya membayar tunai. Dari sudut pandang pengguna, masalahnya sederhana: pembayaran yang semestinya berhasil telah ditolak.
Bagi penguji, kejadian ini perlu diuraikan lebih teliti. Pesan yang salah adalah sesuatu yang terlihat ketika aplikasi dijalankan. Namun, penyebabnya mungkin sudah masuk jauh sebelumnya: seseorang dapat salah menerjemahkan aturan, kondisi dalam program dapat ditulis keliru, atau data pengujian sebelumnya tidak pernah menyentuh keadaan ketika saldo tepat sama dengan total belanja.
Mengapa pengamatan saja belum cukup
Catatan seperti fitur pembayaran bermasalah terlalu kabur untuk ditindaklanjuti. Pengembang belum tahu keadaan yang memicu masalah. Pengelola produk belum tahu transaksi mana yang terdampak. Penguji lain juga belum dapat mengulang kejadian tersebut.
Catatan yang berguna harus menjawab beberapa pertanyaan konkret:
- Versi aplikasi apa yang dijalankan?
- Kapan dan di lingkungan apa pengujian dilakukan?
- Data anggota dan transaksi apa yang digunakan?
- Langkah apa yang dijalankan?
- Hasil apa yang seharusnya muncul?
- Hasil apa yang benar-benar muncul?
- Bukti apa yang menunjukkan hasil tersebut?
Rincian ini mengubah keluhan menjadi informasi yang dapat diperiksa.
Tiga lapisan dalam satu insiden
Insiden Aulia dapat ditulis sebagai tiga kalimat yang berbeda.
- Kesalahan manusia: pembuat logika pembayaran keliru menerjemahkan aturan bahwa saldo yang sama dengan total masih mencukupi.
- Cacat dalam produk: kondisi pemeriksaan di aplikasi hanya menerima saldo yang lebih besar daripada total belanja.
- Kegagalan teramati: ketika saldo Rp75.000 dipakai untuk membayar belanja Rp75.000, aplikasi menolak transaksi dan menampilkan pesan saldo tidak mencukupi.
Ketiganya berkaitan, tetapi tidak dapat dipertukarkan. Kesalahan adalah tindakan atau keputusan manusia. Cacat adalah masalah yang tertanam dalam produk kerja, misalnya aturan, rancangan, kode, atau konfigurasi. Kegagalan adalah perilaku salah yang tampak ketika produk dijalankan dalam keadaan tertentu.
Dampak di dunia nyata merupakan hal berikutnya yang perlu dicatat, tetapi bukan pengganti salah satu dari tiga lapisan tersebut. Dalam kasus ini, dampaknya adalah antrean bertambah dan anggota harus mengganti cara pembayaran.
Mengapa waktu penemuan penting
Cacat yang ditemukan sebelum dipakai kasir biasanya melibatkan lebih sedikit pihak dan lebih sedikit data nyata. Ketika cacat baru ditemukan saat koperasi sedang ramai, tim perlu menangani transaksi gagal, pertanyaan pengguna, pemeriksaan data, perbaikan aplikasi, serta pengujian ulang. Besarnya pekerjaan tidak selalu sama pada setiap kasus, tetapi ruang masalah cenderung melebar setelah produk digunakan.
Karena itu, tugas penguji bukan sekadar mencari sesuatu yang salah. Penguji menjalankan keadaan yang bermakna, membandingkan hasil aktual dengan hasil yang diharapkan, menyimpan bukti, lalu menyampaikan temuannya kepada pihak yang dapat mengambil tindakan.