Unit, integration, API, dan end-to-end test — Vibe Coding dan Security: Dari Prompt ke Aplikasi Aman

MATERI 21 DARI 28

Unit, integration, API, dan end-to-end test

Pilih lapisan test sesuai risiko dan boundary yang ingin dibuktikan.

Tujuan pembelajaran

  • Membedakan jenis test.
  • Menghindari terlalu banyak mock.
  • Menguji kontrak HTTP nyata.

Konsep utama

Unit

Cepat untuk logika murni.

Integration

Menguji database, file, atau service boundary.

E2E

Menguji alur pengguna kritis dengan biaya lebih tinggi.

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

Unit test tanpa dependency eksternal

def total(items):
    if any(x < 0 for x in items):
        raise ValueError("Nilai negatif")
    return sum(items)

def test_total():
    assert total([10, 20]) == 30

API test dengan assertion

const response = await fetch("http://localhost:3000/health");
if (response.status !== 200) throw new Error("health check gagal");
const body = await response.json();
console.assert(body.status === "ok");

Aspek keamanan

  • Fixture harus unik dan dibersihkan dalam finally.
  • Jangan menguji production dengan destructive payload.
  • Pastikan test benar-benar dapat gagal pada bug yang ditargetkan.

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

Pilih lapisan test sesuai risiko dan boundary yang ingin dibuktikan.