AI untuk Testing
Memakai AI untuk membuat test: unit test, edge case, dan strategi kapan test ditulis AI vs manual.
Kenapa Testing Adalah Pasangan Ideal AI
Menulis test itu penting, membosankan, dan berpola: tiga sifat yang membuatnya tugas sempurna untuk AI. Test yang baik mengikuti pola yang jelas (siapkan input, jalankan fungsi, cek output), dan AI sangat pandai menghasilkan pola semacam itu dalam jumlah banyak. Tapi ada jebakan: test yang ditulis AI bisa memberi rasa aman palsu kalau kamu tidak memahami strateginya. Modul ini tentang strategi: kapan memakai AI, apa yang harus kamu putuskan sendiri.
Prinsip pembagian kerja: kamu yang menentukan APA yang di-test (strategi), AI yang membantu menulis BAGAIMANA test-nya (eksekusi). Jangan pernah biarkan AI memutuskan strategi testing sendirian.
Contoh 1: Meminta AI Membuat Unit Test (Langkah Bertahap)
Kamu punya fungsi hitungDiskon(harga, persen) dan ingin test dasar.
Langkah 1, beri konteks fungsi + aturan main:
Buatkan unit test untuk fungsi ini (pakai Jest): [paste fungsi hitungDiskon] Aturan:
- Test kasus normal: harga 100000, diskon 10% = 90000
- Test batas: diskon 0%, diskon 100%, harga 0
- Test input tidak valid: harga negatif, persen di atas 100, input bukan angka
- Tiap test beri nama yang menjelaskan skenarionya dalam bahasa Indonesia
Langkah 2, review test-nya dengan kritis. Tanyakan ke diri sendiri: apakah test ini menguji perilaku yang benar, atau hanya mengabadikan perilaku saat ini (termasuk bug-nya)? Ini jebakan terbesar test buatan AI: kalau fungsinya punya bug, AI menulis test yang "lolos" dengan bug tersebut. Selalu baca ekspektasi test-nya: expect(hitungDiskon(100000, 10)).toBe(90000), apakah 90000 memang benar menurut logika bisnis? Kamu yang tahu, bukan AI.
Langkah 3, minta AI mencari lubang di test-mu:
Lihat test yang kamu buat. Kasus penting apa yang belum ter-cover? Daftar 3 saja, jangan langsung tulis kodenya.
AI sering menemukan edge case yang kamu lewatkan (misal: persen desimal seperti 12.5%, harga dalam bentuk string "100000"). Tambahkan yang relevan, abaikan yang tidak.
Contoh 2: Strategi Kapan AI vs Manual
Tidak semua test cocok ditulis AI. Panduan praktis:
Cocok untuk AI: unit test fungsi murni (input-output jelas), test validasi form (banyak kombinasi input), test parsing/format (tanggal, mata uang), dan boilerplate setup test. Minta AI generate, kamu review ekspektasinya.
Wajib pikir manual: test untuk logika bisnis yang kompleks ("diskon member tidak bisa digabung dengan promo"), test integrasi antar modul, dan test keamanan. Untuk ini, KAMU tulis dulu daftar skenarionya (dalam bahasa sehari-hari), baru minta AI menerjemahkan jadi kode test. Contoh prompt: "Berikut skenario yang harus di-test: [daftar]. Ubah jadi test Jest. Jangan tambah skenario sendiri tanpa bertanya."
Jangan pakai AI: memutuskan BERAPA BANYAK test yang cukup dan test apa yang paling kritis. Itu keputusan engineering yang butuh pemahaman risiko bisnis.
Catatan teknis: Test yang baik punya sifat FIRST: Fast (cepat), Independent (tidak saling tergantung), Repeatable (hasil sama tiap dijalankan), Self-validating (jelas lolos/gagal tanpa dibaca manusia), Timely (ditulis dekat dengan kode). Saat meminta AI membuat test, sebutkan sifat ini: "buatkan test yang independent (tidak tergantung urutan) dan repeatable (tanpa random/tanggal hari ini)". AI yang tidak diberi tahu sering membuat test yang rapuh: tergantung urutan eksekusi, memakai waktu sekarang, atau mengakses network asli. Minta juga: "jangan akses network/jam sistem asli, pakai mock".
Kesalahan Umum
- Percaya test lolos = kode benar. Test buatan AI menguji apa yang AI pahami dari kodemu, bukan apa yang seharusnya terjadi. Test lolos 100% dengan logika bisnis yang salah = rasa aman palsu.
- Tidak menjalankan test-nya. Kode test dari AI kadang tidak jalan (salah import, salah sintaks framework). Selalu jalankan. Test yang tidak pernah dijalankan = tidak ada test.
- Test terlalu terikat implementasi. AI cenderung menulis test yang menguji detail internal (misal: fungsi X memanggil fungsi Y) bukan perilaku. Test seperti ini rusak setiap refactor. Minta: "test perilakunya dari sudut pandang pemakai fungsi, bukan implementasi internalnya."
- Menambah test tanpa menghapus yang usang. Saat kode berubah, test lama bisa basi. Minta AI membantu audit: "test mana yang sudah tidak relevan dengan kode terbaru ini?"
Rangkuman
AI adalah penulis test yang cepat, tapi kamu adalah arsitek strateginya. Alur yang benar: kamu tentukan skenario (terutama edge case bisnis) > AI menulis kode test > kamu verifikasi ekspektasinya benar > AI bantu cari lubang. Ingat sifat FIRST dan selalu jalankan test-nya. Test yang baik bukan yang banyak, tapi yang memberi kepercayaan diri saat kamu mengubah kode.
Tantangan
Test yang Dibuat AI, Diverifikasi Kamu
Ambil satu fungsi dari projectmu (atau tulis fungsi isValidEmail sederhana). Minta AI buatkan unit test lengkap dengan edge case. Lalu lakukan: (1) baca tiap test, (2) jalankan, (3) sengaja rusakkan fungsinya sedikit, pastikan test-nya GAGAL. Kalau test tetap lolos padahal fungsi rusak, test-nya sampah: minta AI perbaiki.