Semua Test Lulus. Pengguna Tetap Tidak Bisa Memainkan Gamenya
"API mengembalikan 200 OK!"
Saya bekerja di pekerjaan teknik pertama saya dan melihat masalah besar. Senior saya sangat menyukai dashboard. Mereka menyukai cakupan kode (code coverage) yang tinggi. Mereka berpikir jika tes berwarna hijau, maka produknya berfungsi.
Mereka salah.
Kode yang berfungsi dan manusia yang mendapatkan apa yang mereka butuhkan adalah dua hal yang berbeda. Sebuah tombol bisa saja mengembalikan kode sukses, namun tetap membuat pengguna terjebak di layar yang rusak.
Saya membangun sebuah cara untuk menemukan jalan buntu UX seperti ini tanpa menjalankan aplikasinya. Saya menyebutnya two-agent static walkthrough. Metode ini menggunakan dua agen AI yang saling berbicara dalam sebuah loop.
- Agen A adalah pengguna. Agen ini memiliki tujuan tertentu. Ia sangat gigih. Ia tidak menyerah setelah satu kesalahan. Ia terus mencoba berbagai jalur yang berbeda.
- Agen B adalah aplikasi. Ia memiliki akses baca ke kode sumber yang sebenarnya. Ia menelusuri jalur kode dari setiap tindakan pengguna. Ia melaporkan dengan tepat apa yang dilakukan kode tersebut. Ia mencantumkan nama file dan nomor barisnya. Ia tidak bisa membayangkan hal-hal yang tidak ada di dalam kode.
Saya mengujinya pada sebuah generator mini-game AI yang rusak. Inilah yang terjadi:
Giliran 1: Tombol gagal. Pengguna mengklik "Generate." Kode mengirimkan permintaan ke endpoint lama yang sudah mati, alih-alih ke yang baru. Tes lulus karena API lama tersebut masih berfungsi.
Giliran 2: Kekosongan yang tidak bisa diklik. Pengguna mencoba mengklik hasilnya. Kode menempatkan teks dalam kotak biasa tanpa click handler. Tidak terjadi apa-apa.
Giliran 3: Berkah palsu. Pengguna mencoba memperbaiki kesalahan tersebut. Backend gagal karena ID yang hilang. Layar menunjukkan pesan sukses berwarna hijau meskipun sistemnya mati.
Giliran 4: Harapan yang terpotong. Pengguna mencoba menyalin kode secara manual. API memotong teks di tengah jalan. Kodenya rusak.
Pengguna menyerah.
Kebanyakan unit test hanya memeriksa apakah sebuah endpoint mengembalikan 200. Mereka tidak memeriksa apakah pengguna benar-benar mencapai tujuannya.
Cara menggunakannya:
- Buat agen pengguna menjadi gigih. Bug yang nyata sering kali bersembunyi di balik kesalahan pertama.
- Berikan basis kode nyata pada agen aplikasi. Ini mengubah role-play menjadi laporan bug yang nyata.
- Gunakan ini sebagai pelengkap tes Anda. Ini menemukan celah di mana logika Anda bertemu dengan realitas.
Metode ini bersifat statis dan murah. Ini berjalan bahkan sebelum Anda menulis satu pun test fixture. Ini mengubah "kode berfungsi" menjadi "pengguna berhasil."
Sumber: https://dev.to/terum/every-test-passed-the-user-still-couldnt-play-the-game-388o
Komunitas belajar opsional: https://t.me/GyaanSetuAi
