Dari ide ke spesifikasi dan acceptance criteria — Vibe Coding dan Security: Dari Prompt ke Aplikasi Aman

MATERI 2 DARI 28

Dari ide ke spesifikasi dan acceptance criteria

Ubah permintaan yang kabur menjadi kebutuhan yang dapat diuji sebelum meminta AI menulis kode.

Tujuan pembelajaran

  • Menulis user story yang fokus.
  • Mendefinisikan acceptance criteria positif dan negatif.
  • Memisahkan kebutuhan fungsional dan nonfungsional.

Konsep utama

Spesifikasi yang bisa diuji

Kalimat “buat login aman” terlalu kabur. Nyatakan input, output, kondisi gagal, sesi, rate limit, dan data yang dilindungi.

Definition of done

Fitur selesai ketika perilaku, test, keamanan, dokumentasi, dan rollback memenuhi kriteria.

Alur kerja teknis

  1. Tulis tujuan dan acceptance criteria.
  2. Buat perubahan kecil yang dapat ditinjau.
  3. Jalankan test dan baca diff sebelum menerima hasil AI.

Contoh implementasi

Acceptance criteria sebagai test sederhana

function normalizeEmail(value) {
  const email = String(value ?? "").trim().toLowerCase();
  if (!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) {
    throw new Error("Email tidak valid");
  }
  return email;
}

console.assert(normalizeEmail(" USER@Example.COM ") === "user@example.com");

Aspek keamanan

  • Acceptance criteria harus mencakup penolakan input invalid.
  • Tuliskan kebutuhan privasi, logging, authorization, dan batas ukuran.
  • Jangan menganggap validasi browser cukup; server tetap otoritatif.

Kesalahan umum

  • Menerima kode AI tanpa membaca diff dan memahami alur data.
  • Menguji hanya happy path dan mengabaikan input salah atau batas nilai.
  • Menyimpan secret, token, atau data nyata di prompt dan source code.

Pengujian dan verifikasi

  1. Jalankan contoh dengan input normal.
  2. Ulangi dengan input kosong, tipe salah, dan nilai batas.
  3. Pastikan error tidak membocorkan secret atau detail internal.

Latihan

  1. Modifikasi contoh dengan satu kebutuhan baru dan tulis acceptance criteria-nya.
  2. Tambahkan satu negative test lalu jelaskan risiko yang dicegah.

Checklist

  • Tujuan dan batas pekerjaan jelas.
  • Input divalidasi di server.
  • Secret tidak berada di source/prompt.
  • Test lulus dan diff sudah dibaca.

Rangkuman

Ubah permintaan yang kabur menjadi kebutuhan yang dapat diuji sebelum meminta AI menulis kode.