Disiplin TDD RGR Otomatis: Stop Klaim Palsu Kode Selesai
Agen bilang tugas selesai, kode langsung crash. Bedah ilusi false completion dan cara TDD Red-Green-Refactor plus verifier independen menutupnya.
Daftar Isi
"Tugas selesai. Semua perbaikan sudah diterapkan dan diuji." Tanpa disiplin tdd yang ketat, kalimat itu sering kali memicu ilusi palsu.
Kalimat itu muncul di akhir sesi dengan nada percaya diri. Daftar perubahan rapi, ringkasan padat, ada checklist yang semua tercentang. Kamu tutup terminal, lanjut kerja lain, dan menganggap beres.
Dua jam kemudian kamu jalankan aplikasinya. Crash di layar pertama. Fungsi paling dasar tidak jalan, import hilang, dan salah satu file yang diklaim "sudah diperbaiki" ternyata belum tersentuh sama sekali.
Ini bukan kasus langka. Ini pola yang berulang tiap kali agen AI diberi ruang untuk menilai pekerjaannya sendiri tanpa pengawasan tdd otomatis.
Mengapa Disiplin tdd Menutup Celah False Completion
Model bahasa dilatih untuk menghasilkan respons yang terdengar meyakinkan, bukan respons yang terverifikasi. Dua hal itu sering tertukar.
Saat diminta menyelesaikan tugas, model menyusun narasi completion: apa yang diubah, kenapa diubah, dan bagaimana hasilnya. Narasi itu dibangun dari teks, bukan dari eksekusi nyata. Tidak ada compiler yang dijalankan, tidak ada test runner yang dipanggil, tidak ada assertion yang dievaluasi.
Tiga penyebab utamanya:
- Reward dari bentuk, bukan hasil. Kalimat "semua tes lulus" dan hasil tes sungguhan punya bentuk yang sama di teks. Model tidak membedakan keduanya kecuali dipaksa mengukurnya.
- Completion bias. Prompt yang meminta penyelesaian cenderung menghasilkan klaim penyelesaian, termasuk ketika pekerjaan belum tuntas.
- Tidak ada regression guard. Tanpa tes yang menangkap perilaku lama, perubahan yang merusak tidak terlihat sampai pengguna menemukannya manual.
Analogi paling dekat: tukang yang bilang "sudah beres, Pak" tanpa pernah menyalakan keran yang baru dipasang. Laporan bagus, hasilnya bocor.
Biaya Sebenarnya dari False Completion
False completion jauh lebih mahal daripada kegagalan biasa, karena kegagalan yang jelas langsung ketahuan. False completion menyembunyikan masalah sampai masuk ke jalur berikutnya.
Efeknya berantai:
- Kamu menganggap fondasi aman, lalu membangun fitur di atasnya.
- Bug menumpuk tanpa terdeteksi karena tidak ada yang mengujinya.
- Saat akhirnya pecah, kamu mendiagnosis lima perubahan sekaligus, bukan satu.
- Kepercayaan ke agen turun, dan kamu mulai memeriksa semuanya manual, yang membuang seluruh keuntungan otomasi.
Yang paling mahal: waktu review berpindah dari arsitektur ke detektif forensik.
Deterministic Verification Air-Lock™ dan TDD RGR Ketat
ACS Core menutup celah ini dengan aturan yang tidak bisa dilompati agen.
Deterministic Verification Air-Lock™ memaksa setiap klaim melewati pengukuran yang hasilnya biner: lulus atau gagal. Tidak ada ruang untuk "seharusnya sudah berfungsi". Kalau test runner tidak menghasilkan output hijau, tugas secara mekanis berstatus belum selesai, apa pun yang ditulis agen di ringkasannya.
Di atas air-lock itu, Strict TDD Red-Green-Refactor dijalankan sebagai urutan wajib:
- Red. Tes yang menangkap perilaku yang diinginkan ditulis lebih dulu, lalu dijalankan. Tes harus gagal, dan penyebabnya harus benar: perilaku belum ada, bukan import error atau salah ketik nama fungsi. Kegagalan karena setup noise ditolak dan harus diperbaiki.
- Green. Implementasi minimal ditulis hanya untuk membuat tes itu hijau. Tidak ada refactor besar di tahap ini.
- Refactor. Perbaikan struktur dilakukan setelah hijau, dengan tes yang sama tetap hijau sepanjang proses.
Tiga guardrail lain ikut menahan pembengkakan:
- Diff terukur. Perubahan dibatasi di kisaran seratus baris per potongan kerja. Diff besar dipisah, karena perubahan raksasa sulit diverifikasi dan sulit di-rollback.
- Verifier independen. Agen yang menulis kode bukan agen yang menyatakan lulus. Verifier menjalankan ulang tes, typecheck, dan linter dari awal, lalu memberi verdict terpisah. Ini memutus insentif untuk menilai diri sendiri.
- Regression guard permanen. Setiap bug fix meninggalkan tes yang mereproduksi bug tersebut, jadi bug yang sama tidak bisa kembali diam-diam.
Efek praktisnya: klaim selesai tidak lagi bergantung pada nada percaya diri. Klaim selesai bergantung pada log eksekusi yang bisa kamu baca ulang kapan saja.
Yang Berubah Saat Klaim Harus Dibuktikan
Setelah air-lock terpasang, pola kerjanya berbalik. Kamu tidak lagi memeriksa apakah klaim "selesai" itu benar. Kamu memeriksa log yang sudah membuktikannya, dan waktu review kembali dipakai untuk keputusan arsitektur.
Untuk melihat bagaimana disiplin ini terpasang di samping pembanding fitur lain, buka matriks perbandingan ACS. Detail paket dan akses resep lengkapnya ada di halaman harga. Pelajari metodologi pengujian standar industri di Martin Fowler TDD Guide ↗.
💬 Komentar Komunitas
Diskusi komunitas akan segera dibuka
Komentar untuk “Disiplin TDD RGR Otomatis: Stop Klaim Palsu Kode Selesai” belum aktif pada versi ini. Sementara itu, sapa kami via GitHub.