testing
Catatan teknis seputar web development, DevOps, dan integrasi AI.
54 artikel
- 01.00backend
Filter Status yang Tidak Dikenal Harus Ditolak, Bukan Diabaikan
Filter status yang nilainya tak dikenal sempat mengembalikan semua baris hidup dengan 200. Kini endpoint itu menolaknya dengan 400 VALIDATION.
TL;DR: Jadi ternyata API-nya nge-drop filter status kalau nilainya nggak dikenal, alias ngasih semua data dengan 200 OK, dan tesnya malah ngunci perilaku salah itu. Penulis ganti ke switch fail-closed: string kosong boleh (tab semua), nilai whitelist lolos, sisanya error ErrValidation jadi 400. Pelajarannya: tes hijau belum tentu kontraknya bener, sesekali baca ulang assertion yang aneh.
#golang#api#rest-api - 20.05testing
Satu Daftar Temuan untuk Satu Keputusan Owner
Empat laporan QA jadi satu tabel induk: 18 menunggu keputusan, 4 tak terulang. Keputusan owner lebih menentukan dari umur tiket.
TL;DR: Empat laporan QA bikin pusing karena semuanya kerasa mendesak. Solusinya cuma satu file FINDINGS.md isinya tabel: 18 nunggu keputusan owner, sisanya selesai, tidak terulang, atau malah bukan bug. Prioritas diurutkan dari risiko, bukan umur tiket, jadi yang bahaya dikerjain duluan, sisanya nyusul.
#testing#tooling - 19.59testing
Menguji Respons Antarmuka terhadap Kode Status API
Toast email sudah dipakai muncul bahasa Inggris di UI Indonesia. API benar pakai kode status RFC; yang gagal lapisan penerjemahannya.
TL;DR: Jadi pas test form tambah user, pesan error "email already in use" muncul dalam bahasa Inggris mentah. Ternyata API-nya nggak salah, malah bener banget pakai kode status RFC kayak 409 buat konflik; yang keliru cuma frontend yang nggak nerjemahin ke bahasa Indonesia. Sisanya aman sih, cuma ada satu bug file yatim pas hapus via entitas induk.
#testing#ux#api - 19.50testing
Konfirmasi yang Menghilang Sendiri: Pelajaran QA Modul Wisata
Sesi QA modul wisata: tombol hapus lewat skrip membuat dialog konfirmasi native langsung hilang, penghapusan dibatalkan diam-diam.
TL;DR: Tombol hapus di wisata kelihatannya mati, ternyata dialog confirm otomatis di-dismiss Playwright karena nggak ada handler dialog; lewat MCP pakai browser_handle_dialog aman. Dua temuan QA, validasi telepon dan media orphan, akar masalahnya sama dengan modul announcement, jadi dilipat jadi satu keputusan owner lintas modul. Semua hasil diverifikasi langsung ke database dan file, bukan cuma lihat UI.
#playwright#testing#mcp - 18.46testing
Laporan QA Dua Lapis: Sesi Append-Only, Modul Living
Format laporan QA dua lapis: laporan sesi append-only log-as-you-go plus berkas modul living, dengan angka hanya dari artefak mesin.
TL;DR: Jadi ceritanya, laporan pengujian sering nggak bisa dipercaya karena angkanya cuma diketik ulang dari ingatan, bukan dari bukti asli. Solusinya: catat sesi sambil jalan (append-only) plus berkas modul yang terus di-update, semua angka wajib dari artefak mesin. Hasilnya, 31 skenario keuji, temuan gampang dilacak balik, nggak ada lagi rekonstruksi di akhir hari.
#qa#testing#dokumentasi - 18.45security
Baseline ZAP: Nol Kegagalan Bukan Angka Terpenting
Baseline ZAP pasif sebelum QA backfill: nol FAIL, empat WARN, dan tabel delta aturan yang membuktikan OAuth baru tidak menambah alert.
TL;DR: ZAP baseline dijalan ulang abis ada surface baru dari Google OAuth, hasilnya nol FAIL, empat WARN, 57 PASS. Yang keren tuh dibandingin per aturan sama baseline sehari sebelumnya, semua angka turun atau diam, gak ada alert baru. Tapi inget, ini cuma scan pasif tanpa login, jadi bukan audit, cuma tripwire buat halaman publik.
#zap#security-testing#owasp - 18.36testing
Crawler 192 Halaman, Satu 404, dan Sitasi yang Salah Sasaran
Audit tautan internal lewat crawler Playwright: 192 halaman dirayapi, satu dynamic404, dan rujukan next.js#58421 yang ternyata PR polyfill.
TL;DR: Crawler ngecek 192 halaman, cuma satu 404 dinamis gara-gara slug ada tanda kutip satu. Rujukan issue di commit ternyata salah sasaran, akar masalahnya sih double-encoding dari encodeURIComponent. Pelajarannya, referensi di catatan kerja itu cuma hipotesis, mesti dicek dulu sebelum dipercaya.
#playwright#e2e#nextjs - 17.50testing
Assertion Login yang Tidak Pernah Gagal: Ketika URL Selalu Cocok
Mengganti pemeriksaan rute dengan penanda visual pada fixture E2E untuk mendeteksi kegagalan login yang sebelumnya terlewat oleh sistem pengujian.
TL;DR: Helper login E2E keliatannya aman karena ngecek URL /admincms, padahal rute itu sama aja mau login sukses atau gagal jadi tesnya nggak pernah merah. Akhirnya assertion diganti jadi ngecek chip admin yang cuma muncul kalau sesi beneran valid, jadi kalau gagal langsung ketahuan. Intinya assertion yang nggak bisa gagal tuh nggak ada gunanya sama sekali.
#playwright#e2e#testing - 17.31testing
Baseline QA Sebelum Perbaikan: Merah Bukan Berarti Kode Rusak
Baseline QA pertama menampilkan layar merah penuh: database pengujian menyimpan revisi migrasi lebih baru dari kode. Environment drift, bukan kode rusak.
TL;DR: Gue jalanin baseline QA terus test integrasi langsung merah semua gara-gara volume database nyangkut skema lama bukan kode error. Abis beresin pakai docker compose down -v test jadi hijau 28 paket lolos tapi coverage masih banyak yang bolong. Frontend aman, E2E ada yang fail tapi sengaja dicatat dulu biar nggak ngerusak angka baseline.
#testing#golang#docker