Minggu 09 — Testing dan Quality Assurance
Unit, integration, dan end-to-end test; edge case; regression; linting.
Kenapa test sangat penting di era AI
AI menulis kode dengan cepat, dan bisa mengubah hal yang bekerja tanpa kamu sadari. Test adalah jaring pengaman otomatis: setelah setiap perubahan, satu perintah memberi tahu apakah ada yang rusak.
Piramida test
| Jenis | Yang diuji | Kecepatan |
|---|---|---|
| Unit test | Satu function atau class | Sangat cepat, jumlah banyak |
| Integration test | Beberapa bagian bekerja sama (API + database) | Sedang |
| End-to-end (E2E) | Alur pengguna sungguhan di browser | Lambat, jumlah sedikit |
Positive, negative, dan edge case
- Positive: input benar menghasilkan hasil benar (login dengan sandi benar berhasil).
- Negative: input salah ditolak dengan benar (sandi salah gagal, tanpa membocorkan alasan rinci).
- Edge case: nilai tepi — kosong, nol, negatif, sangat panjang, karakter khusus.
Pola Arrange – Act – Assert
// Arrange: siapkan data
const keranjang = [{ harga: 10000, qty: 2 }];
// Act: jalankan
const total = hitungTotal(keranjang);
// Assert: periksa hasil
console.assert(total === 20000, 'total harus 20000');
Regression testing
Regression = fitur lama yang rusak karena perubahan baru. Jalankan seluruh test setiap selesai perubahan dari AI. Bug yang pernah ada → tambahkan test-nya.
Static analysis dan dependency
- Linter (ESLint, golangci-lint, PHPStan): menemukan masalah tanpa menjalankan program.
- Audit dependency (
npm audit,composer audit): mencari library dengan celah keamanan.
Mengevaluasi test buatan AI
Test yang lulus belum tentu bagus. Periksa: apakah ada assert yang sebenarnya? Apakah mencakup kasus gagal? Coba merusak kode sengaja — kalau test tetap hijau, test-nya tidak berguna.
Praktik minggu ini
Uji proses login, CRUD kursus, validasi form, dan akses role. Target: test suite dan laporan bug yang sudah diperbaiki.