TDD dengan AI Coding Agent: Alur Kerja Praktis

Sebuah test yang gagal memberi agen target presisi dan sinyal lolos atau gagal yang tak ambigu yang bisa dicek setelah setiap perubahan. Itu menghapus ambiguitas yang ditinggalkan prompt berupa prosa, sehingga agen beriterasi menuju perilaku yang benar alih-alih menebak. Test suite sekaligus menjadi spesifikasi yang dapat dieksekusi dan verification loop bawaan.
Panduan best-practices Claude Code menyarankan meminta agen menulis test dari input dan output yang diharapkan, menjalankannya untuk memastikan mereka gagal, meng-commit test-nya, lalu meminta agen mengimplementasi hingga setiap test lolos. Aturan pentingnya adalah menginstruksikan agen untuk tidak mengubah test demi memaksanya menjadi hijau.
Boleh, tetapi tinjau sebelum Anda memercayainya. Ketika agen yang sama menulis baik test maupun kodenya, keduanya bisa berbagi asumsi salah yang sama dan lolos padahal perilakunya keliru. Menulis atau setidaknya meninjau test itu sendiri menjaganya sebagai pengecekan independen alih-alih cerminan implementasi.
Liput jalur tempat kode AI paling lemah. Menurut Skyramp, kode buatan AI memiliki tingkat cacat yang jauh lebih tinggi pada error handling, edge case, dan concurrency, jadi tulis test itu sebelum happy path. Sambungan integrasi, tempat unit terisolasi bertemu database atau API sungguhan, juga layak diuji sejak dini.
Commit test-nya sebelum implementasi agar mereka menjadi kontrak yang beku, dan perlakukan setiap suntingan berikutnya pada test yang sudah di-commit sebagai tanda bahaya untuk ditinjau. Waspadai assertion yang dilemahkan, kasus yang dihapus, atau nilai harapan yang di-hardcode, dan baca diff test seteliti diff implementasi sebelum Anda merge.

Ringkasan Utama
Test-driven development memberi AI coding agent sesuatu yang tidak bisa dibantahnya: sebuah test yang gagal yang mendefinisikan selesai. Tulis test-nya dahulu, konfirmasi bahwa mereka gagal, minta agen tidak menyentuhnya, lalu biarkan ia menulis kode hingga semuanya lolos. Test itu menjadi spesifikasi yang dapat dieksekusi sekaligus verification loop bawaan.
AI coding agent itu cepat, percaya diri, dan sesekali salah dengan cara yang tampak benar. Mereka dengan senang hati menyerahkan kode yang bisa dikompilasi, enak dibaca, dan diam-diam salah menangani satu input yang lupa Anda sebutkan. Test-driven development adalah pertahanan tertua dan termurah terhadap mode kegagalan itu.
Idenya tidak berubah dari TDD klasik, tetapi imbalannya lebih besar dengan seorang agen dalam loop. Sebuah test suite adalah spesifikasi yang tidak bisa dielakkan agen dengan kata-kata, dan sebuah run yang hijau adalah sinyal yang bisa dikejarnya sendiri. Panduan ini menelusuri alur kerjanya dan di mana ia paling menguntungkan.
Seorang agen bekerja paling baik ketika ia punya target jelas dan cara memeriksa kemajuannya sendiri. Sebuah test yang gagal adalah keduanya sekaligus: ia menyatakan perilaku yang diharapkan secara presisi dan memberi sinyal lolos atau gagal yang tak ambigu setelah setiap perubahan.
Dibanding prompt berupa prosa, test menghapus ambiguitas yang jika tidak akan diisi agen dengan tebakan. Tiga sifat membuatnya ideal:
Panduan best-practices Claude Code merekomendasikan urutan TDD yang konkret: minta agen menulis test dari input dan output yang diharapkan, jalankan untuk memastikan mereka gagal, commit test-nya, lalu minta agen mengimplementasi hingga setiap test lolos. Instruksi kuncinya adalah agen tidak boleh mengubah test agar menjadi hijau.
Mulailah dengan menulis test merah itu sendiri, atau minta agen membuat draftnya dan tinjau sebelum Anda memercayainya. Sebuah contoh kecil yang tak ambigu menetapkan nadanya:
// invoice.test.ts — write this FIRST, watch it fail
import { describe, it, expect } from "vitest";
import { calcLateFee } from "./invoice";
describe("calcLateFee", () => {
it("charges 1.5% per month on an overdue balance", () => {
expect(calcLateFee(1000, 2)).toBe(30);
});
it("returns 0 when nothing is overdue", () => {
expect(calcLateFee(1000, 0)).toBe(0);
});
});Commit test-nya sebelum agen menulis implementasi apa pun. Sebuah test yang sudah di-commit adalah kontrak yang beku, dan jika agen kemudian melemahkannya Anda akan melihat perubahan itu di diff alih-alih menemukannya di produksi.
Arahkan agen ke jalur kode tempat keluaran AI paling lemah, bukan happy path yang sudah benar dikerjakannya. Menurut Skyramp, kode yang dihasilkan AI menunjukkan tingkat cacat yang jauh lebih tinggi di area tertentu, dan area itulah tempat test pertama Anda seharusnya berada.
TDD hanya berfungsi jika test tetap bermakna. Seorang agen yang tertekan untuk membuat sebuah suite lolos kadang mengambil jalan pintas yang tidak Anda maksudkan, dan tanda centang hijau menyembunyikannya.
Waspadai agen yang menyunting assertion, menghapus kasus yang menyulitkan, atau meng-hardcode nilai persis yang diharapkan sebuah test. Masing-masing mengubah test sungguhan menjadi stempel karet, jadi meninjau diff test sama pentingnya dengan meninjau implementasi.
Sebuah suite yang lolos itu perlu, tetapi tidak cukup. Seorang agen bisa membuat setiap test hijau dengan melemahkan test-nya, jadi jangan pernah menerima run yang hijau tanpa membaca apa yang berubah di dalam berkas test itu sendiri. Perlakukan setiap suntingan pada test yang sudah di-commit sebagai tanda bahaya.
TDD adalah satu tahap dalam alur kerja agen yang disiplin, bukan keseluruhannya. Ia terselip secara alami di antara perencanaan dan review, dan pipeline seperti Superpowers menyusun tahap-tahapnya persis dalam urutan itu.
TDD mengubah seorang AI agent dari penebak yang percaya diri menjadi sistem yang harus membuktikan hasil kerjanya. Tulis test yang gagal, bekukan, dan buat agen mendapatkan hijaunya. Ini adalah disiplin yang sama yang membuat TDD berharga bagi manusia, dan ia makin penting, bukan makin kurang, ketika kode ditulis oleh sebuah mesin.