testing
Catatan teknis seputar web development, DevOps, dan integrasi AI.
62 artikel
- 03.45tooling
Auditor Pakai Penggaris yang Sama dengan Gerbang
Laporan audit menuduh delapan commit dokumen tanpa trailer; semuanya false positive. Satu baris filter menyelaraskan kebijakan auditor dengan gerbang.
TL;DR: Laporan audit nandain 19 commit tanpa trailer Security-review, tapi 8 di antaranya cuma file QA atau screenshot yang emang dikecualikan gerbang commit. Akar masalahnya auditor gak baca daftar pengecualian yang sama, jadi hasilnya banyak false positive. Fixnya cuma satu baris filter git show, dan tes nomor 18 jadi hijau semua.
#git#bash#testing - 02.58testing
Checksum Bukti: Angka Test Lulus Itu Klaim Sampai Di_checksum
Output mentah perintah verifikasi dibungkus checksum sha256 otomatis, dan gerbang fail-closed menolak irisan tanpa putusan review terjangkar.
TL;DR: Agen coding bilang tests passed dan coverage 42%, tapi ternyata cuma klaim, nggak ada bukti output mentahnya. Solusinya, skrip shell nyimpen bundel bukti plus checksum sha256, jadi kalau angkanya disunting, ketahuan. Ada juga gerbang fail-closed: irisan nggak boleh disebut selesai kalau review-nya belum PASS semua.
#ai-agents#testing#qa - 00.57testing
Tes yang tak bisa gagal
Assert exit code bisa dilalui jalur lain yang tidak diuji. Perbaikannya mengikat assert ke output yang diperlebar.
TL;DR: Test CLI itu cuma ngecek exit code, jadi walau fitur ekspansi dihapus, test tetap hijau alias mutannya selamat. Artinya testnya nggak bisa gagal dan lulus gara-gara jalur lain. Solusinya tangkap stdout terus assert hash beneran melebar jadi ID tugas, biar ikut mati kalau fiturnya dimatikan.
#testing#python#mutation-testing - 23.42database
Jalan Mundur ke Nol: Down Migration yang Tak Pernah Dijalankan
Checkpoint v56 dibangun di atas teori yang salah. Dua bug di file down, error 1553 dan 1364, baru ketahuan saat down-to-0 dijalankan lagi.
TL;DR: Ceritanya checkpoint versi 56 yang selama ini jadi pegangan ternyata cuma teori yang nggak pernah diuji. Pas down-to-0 dicoba, dua file down kena error: satu lupa kolom slug, satu lagi buang index yang masih ditumpang FK. Solusinya, balik urutan index, perbaiki insert, terus bikin test roundtrip biar rantai migration bisa dibuktikan bolak-balik.
#database-migration#mysql#golang-migrate - 21.24backend
Batas Aman Migrasi: Tes Roundtrip Berhenti di Checkpoint 56
Tes roundtrip migrasi tidak turun ke nol: rantai down patah di tengah karena ENUM hilang. Checkpoint 56 menjadi batas aman yang terkunci tes.
TL;DR: Jadi migrasi turun gak bisa sampai nol, mentok di versi 56 karena file turun 51 butuh nilai INFORMASI yang cuma ada dari migrasi 45. Buat itu tes roundtrip dikunci buat ngecek skema balik utuh di checkpoint itu. Sekalian tes devauth mastiin rute login dev hilang, 404, kecuali env development beneran.
#golang#golang-migrate#mysql - 20.39testing
Persen Cakupan Bukan Tameng: Amankan Jalur Penolakan
Audit cakupan middleware Go dari 27 ke 96,7 persen: pelajaran uji lengan penolakan dengan httptest, dari JWT sampai CORS.
TL;DR: Cakupan test middleware cuma 27 persen padahal itu gerbang auth, jalur penolakan kayak token expired dan role mismatch nggak pernah disentuh test. Penulis nambahin 850 baris test ke tujuh file pakai httptest, tanpa ngubah kode produksi. Hasilnya middleware naik ke 96,7 persen, tapi pelajarannya: angka berhenti di tempat mock mulai bohong, yang penting tiap jalur risiko punya saksi.
#golang#testing#security - 13.45security
Lima Celah yang Dikunci, Bukan Dibenahi
Lima kelemahan autentikasi dikunci sebagai characterization test bermarker keputusan, dipetakan sebelum diperbaiki.
TL;DR: Lagi riset tes autentikasi, ketemu 5 celah keamanan tapi nggak langsung dibenerin, malah dikunci jadi characterization test lengkap sama penanda keputusan pemilik proyek. Alasannya jujur aja: benerin diam-diam itu ngehapus jejak kenapa perilakunya ada. Jadi mending dipetain dulu semua risikonya, baru owner yang mutusin urutan prioritasnya.
#testing#security#authentication - 13.06backend
Mesin Status Moderasi Ulasan: Validasi Transisi State Melalui Pengujian Integrasi
Uji integrasi membuktikan mesin status moderasi: seed agregat salah 9.9/999, Remove mengisi audit, Restore membersihkannya, agregat dihitung ulang dua arah.
TL;DR: Jadi sistem review ini punya mesin status: hapus review langsung ganti status jadi dihapus plus isi kolom audit, bukan cuma nunggu proses belakang. Batasannya ketat banget, alasan hapus cuma enam pilihan, rating harus 1-5, komentar maksimal 2000 karakter. Semua transisi diuji pakai table-driven test, makanya perilakunya dijamin konsisten, bukan sekadar asumsi.
#go#testing#mysql - 12.12testing
Assertion LIKE yang Licik: Saat Nomor 1 Kena Nomor 19
Pola LIKE atas JSON ter-serialisasi membuat assertion integration test melenceng: nomor 1 tertukar nomor 19 karena collision substring.
TL;DR: Test assertion pakai LIKE '%"no":1%' buat nyari JSON, eh taunya nyangkut ke objek nomor 19 gara-gara 16 dan 19 sama-sama diawali "no":1. Jadi flake-nya murni soal substring dan urutan data, bukan race condition. Solusinya bandingin nilai hasil parsing atau pakai JSON_SEARCH, jangan LIKE buat predikat identitas.
#testing#mysql#flaky-tests