AI untuk Pembuatan Tes: Di Mana Ia Membantu dan Di Mana Ia Menyesatkan

AI menulis tes dengan cepat. Ia juga menulis tes yang terlihat nyata tetapi memverifikasi hal yang salah.

Anda menempelkan sebuah fungsi ke dalam AI. Tiga puluh detik kemudian, Anda memiliki dua belas tes yang berhasil. Skor cakupan (coverage) Anda meningkat. Anda merasa produktif.

Kemudian sebuah bug muncul di produksi. Anda melihat dua belas tes tersebut dan menyadari bahwa tidak satu pun dari tes itu yang dapat menangkapnya.

AI menguji apa yang dilakukan kode Anda, bukan apa yang seharusnya dilakukan oleh kode Anda.

AI itu berguna, tetapi Anda harus tahu cara menggunakannya.

Di mana AI unggul:

  • Menghasilkan boilerplate seperti blok setup dan teardown.
  • Menulis factory helpers dan objek data yang repetitif.
  • Membuat banyak variasi dari satu pola tes yang baik.
  • Menangani edge case yang jelas seperti null, string kosong, atau nol.

Di mana AI gagal:

  • Tes berbasis implementasi: Ia menulis tes yang mengikuti struktur kode alih-alih logika bisnis. Jika Anda melakukan refactor pada kode, tes akan rusak meskipun hasilnya tetap benar.
  • Edge case yang dangkal: Ia menemukan kesalahan yang jelas tetapi melewatkan bug spesifik domain. Ia tidak mengetahui keunikan zona waktu Anda, batasan database Anda, atau aturan bisnis spesifik Anda.
  • Mock yang rapuh: Ia melakukan mock pada layanan internal yang seharusnya tetap nyata. Hal ini membuat tes lambat untuk dipelihara dan mudah rusak saat melakukan refactor.

Cara menggunakan AI tanpa menciptakan "test theater":

  1. Tentukan kontrak terlebih dahulu. Tulis satu kalimat dalam bahasa Inggris sederhana tentang apa yang harus dibuktikan oleh tes tersebut. Contoh: "An expired code must return the original amount."
  2. Berikan kalimat tersebut kepada AI. Biarkan AI menulis kodenya, tetapi Anda harus memegang kendali atas maksudnya (intent).
  3. Lakukan mock hanya pada batas (boundary). Gunakan instansi nyata untuk modul internal Anda. Hanya lakukan mock pada API eksternal atau database.
  4. Tulis satu edge case domain secara manual. AI menangani edge case yang "jelas". Anda harus menangani edge case "jam 3 pagi" yang benar-benar menyebabkan insiden produksi.

Jangan biarkan AI memutuskan apa yang diverifikasi oleh tes. Gunakan AI untuk mengetik kodenya, tetapi Anda yang menyediakan logikanya.

Sumber: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm