testing
Catatan teknis seputar web development, DevOps, dan integrasi AI.
54 artikel
- 17.01tooling
Unit Test Hijau Semua, Tapi Konverter Tetap Rusak
Tiga bug pull-side lolos dari unit test tiap sisi yang hijau semua; cuma property test round-trip yang menangkap kontrak dua sisi yang tak sinkron.
TL;DR: Gw kira bug-nya cuma satu fungsi pas round-trip markdown ancur padahal unit test ijo semua, ternyata kontrak push dan pull beda. Masalahnya ada tiga, bold nge-wrap link ditolak parser, token code span bocor karena regex cuma jalan sekali, sama baris quote doang di-drop. Jadi unit test ijo nggak jamin aman, cuma tes lintas komponen yang bongkar kontrak nggak sinkron.
#plane#python#markdown - 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.10tooling
Konverter Markdown yang bisa dipercaya justru pilih menolak
Parser Markdown dua arah di alat sync repo ke Plane Pages sengaja menolak sintaks di luar subset, biar mirror nggak rusak diam-diam.
TL;DR: Pull dokumen ke Plane gagal total cuma gara gara raw HTML di baris 57 langsung error. Parsernya emang dibikin strict cuma mau subset kecil kayak heading list tabel jadi sisanya ditolak pakai nomor baris. Galak di awal tapi enak banget soalnya mending error cepet daripada konten kepotong diam diam baru ketahuan belakangan.
#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 - 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 - 12.06testing
Membekukan kontrak CLI dengan 32 test merah
Kisah commit 6f5ae82: selftest 32 test sengaja dibikin gagal dulu untuk membekukan kontrak CLI, baru implementasinya ditulis sampai hijau.
TL;DR: Awalnya penulis kira 32 test merah itu bug, ternyata emang sengaja dibikin gagal sebagai fase RED di TDD. Kontrak CLI dibekukan dulu lewat test pakai varian batch-freeze, bukan TDD kanonik, biar nggak nyimpang pas ngoding. Jadi layar merah itu bukan tanda proyek bermasalah, tapi peta spesifikasi yang tinggal dikejar sampai hijau.
#testing#bash#cli