testing
Catatan teknis seputar web development, DevOps, dan integrasi AI.
33 artikel
- 16.16tooling
Konverter dua arah: konservatif saat push, toleran saat pull
Bug garis horizontal yang hilang diam-diam mengungkap desain konverter dua arah yang sehat: push kanonik, pull toleran tapi tetap menolak keras.
TL;DR: Gue kira Plane yang ngapus garis horizontal pas pull, ternyata parser pull gue sendiri yang diam-diam nelen <hr> karena cuma kenal <hr />. Sekarang yang nggak dikenal langsung dilempar error pakai nomor baris, nggak lagi hilang senyap. Dari situ desainnya dibikin push yang konservatif dan pull yang toleran tapi cuma di dialek sendiri, plus tes round-trip biar aman.
#plane#python#markdown - 15.57backend
Saat Saya Berhenti Memisahkan Kode Berdasarkan Lapisan Teknis
Commit d7f02b2 memperkenalkan aturan wajib vertical slice architecture dan 4-tier testing: setiap fitur dibangun end-to-end dalam satu iterasi, bukan layer-by-layer horizontal. Hasilnya development lebih cepat, bug tertangkap di layer murah via Testcontainers, dan isolasi fitur bersih tanpa efek samping.
TL;DR: Awalnya gue kira pisah kode per layer itu rapi, eh pas fitur nambah malah pusing karena ubah DB dikit API bisa error. Sekarang pakai vertical slice jadi satu fitur ngumpul dari migrasi sampai frontend, lebih aman nggak merembet kemana-mana. Testingnya dibagi empat level pakai Testcontainers dan Playwright buat alur kritis, debuggingnya juga wajib urut biar nggak asal tebak.
#vertical-slice-architecture#testing#testcontainers - 14.58ai
Aturan Proses Universal untuk AI Coding Agent
Tiga file aturan proses yang saya paksa agent ikuti: vertical slice, empat tingkat testing dengan database nyata, debugging sistematis.
TL;DR: Gue pernah lihat AI ngoding semua layer sekaligus eh hasilnya nggak ada yang jalan. Terus gue bikin aturan tegas biar kerja per irisan fitur vertikal yang bisa dites langsung. Ditambah testing berlapis dan debugging urut jadi agent nggak asal ngasal lagi.
#ai-agents#testing#debugging - 23.32devops
Kenapa Selftest R97 Gagal Saat Audit Berjalan
Audit meng-hash ulang setelah render jalan, selftest pun gagal. Artefak turunan harus keluar dari digest kanonik dan urutan verifikasi menentukan arti hash.
TL;DR: Selftest R97 gagal gara-gara audit menghitung digest kanonik setelah render, padahal render ngubah isi direktori yang lagi di-hash, jadi hashnya salah bukan karena kontennya. Solusinya, artefak turunan kayak nav.json dan pages.json dikeluarin dari digest; yang dijaga cuma sumber kebenarannya. Fixture selftest yang flake juga diganti mutasi berbasis path, checksum di-freeze ulang biar jejaknya jelas.
#python#testing#ci - 22.08tooling
Selektor Otomasi Tiba-tiba Gagal Saat UI Berubah Bahasa
Profil browser ber-locale id-ID merender Tanya Qwen dan Salin, dan selector exact match langsung gagal. Pola regex alternation plus penguncian locale menyelesaikannya.
TL;DR: Skrip otomasi gua error gara-gara profil browser kebetulan pakai locale id-ID, jadi tombolnya dirender "Tanya Qwen" bukan "Ask Qwen", dan selector exact match langsung gagal. Solusinya pakai regex alternation kayak (?:Ask|Tanya) biar dua bahasa kecakup, plus kunci locale browser. Tambah juga tes assert sederhana biar tahu cepat kalau polanya pecah lagi.
#automation#playwright#regex - 20.52devops
Dua Konstanta, Satu Kebohongan Diam: Deteksi Drift Pakai ast Tanpa Import
Konstanta turunan drift di hari sumbernya berubah. ast.parse membandingkannya tanpa mengeksekusi satu baris pun.
TL;DR: Tambah satu nilai di CLOSE_ACTIONS ternyata bikin job lama masih dianggap aktif, soalnya STATE_ACTIONS di kernel nggak kebagi update, dua konstanta itu drift diam-diam. Solusinya skrip check-close-actions-drift.sh yang baca dua file sebagai teks pakai ast Python, tanpa import. Skrip ngitung proyeksi STATE_ACTIONS minus EXTRACT_TIME dan NONSTATE, lalu bandingin sebagai set; beda dikit aja langsung exit 1.
#python#testing#debugging - 13.54testing
Triase Merah 14 dari 19: Saat Fixture Bash yang Cacat Menipu Validator
Dari 19 test yang harusnya hijau, 14 lulus. Sisanya gagal bukan karena validator lemah, tapi karena fixture bash yang menghasilkan JSON invalid — cacat yang perlu ditriase, bukan ditutupi.
TL;DR: Gue nambah 330 baris validator buat banyak aturan tapi hasilnya cuma 14 dari 19 lolos. Awalnya ngira logika validator yang error, ternyata fixture bash-nya yang ngaco ngasih JSON invalid. Jadi skornya gue biarin aja segitu dan catet detail gagalnya di laporan T3a biar transparan.
#testing#bash#fixture - 13.54testing
Saat Validator Mulai Salah Tuduh
Validator yang terlalu sensitif menuduh data valid sebagai pelanggaran. Saya pasang kontrol negatif + positif + reason-code eksak supaya setiap penolakan bisa diverifikasi secara programatik.
TL;DR: Validator awalnya ngaco nuduh data padahal sumbernya emang kosong jadi presisinya ancur. Makanya dibikin tes R80b buat ngecek false positive maksimal 2 dari 20 kasus plus R97 yang maksa reason-code jelas. Ada juga kontrol positif biar yang harusnya lolos tetap lolos dan digest nggak dihitung ulang.
#testing#bash#quality-assurance - 12.56testing
Implementasi palsu wajib gagal: menguji selftest sendiri
Suite hijau semua belum tentu bagus. Saya suapkan tiga implementasi palsu ke selftest 32 test biar grader terbukti nggak bisa dibodohi.
TL;DR: Suite test hijau semua bisa bohong, soalnya validator yang isinya cuma exit 0 tetap lolos tanpa ngetes apa-apa. Jadi penulis bikin tiga skrip palsu (selalu sukses, selalu gagal, emit semua kode alasan) yang wajib ditolak dengan PASS=0, plus sha256-nya dikunci biar grader nggak bisa dibobol. Ini mutation testing versi manual: kalau suite nggak nolak yang salah, berarti test-nya nggak berguna.
#testing#bash#python