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 mungkin melihat cakupan (coverage) Anda meningkat, tetapi kode Anda tetap rusak.
AI sangat bagus untuk tugas-tugas tertentu. Gunakan untuk:
- Mengekstrapolasi dari contoh yang baik. Jika Anda menulis satu tes yang sempurna, AI dapat menulis sepuluh tes lagi dengan gaya yang persis sama.
- Menangani pengetikan yang berulang. Gunakan untuk blok
setup,teardown, dan pembantufactory. - Membuat scaffolding awal. Ini membantu Anda mencapai editor lebih cepat daripada file kosong.
Bahayanya dimulai saat Anda membiarkan AI menentukan "kontrak".
Jika Anda memberikan sebuah fungsi kepada AI dan meminta tes, ia akan membaca kode tersebut dan menguji apa yang dilakukan kode tersebut saat ini. Ia tidak menguji apa yang seharusnya dilakukan oleh kode tersebut. Ini menciptakan sebuah loop tertutup. AI membuat asumsi, menulis kode, lalu menulis tes yang menyetujui asumsi yang sama tersebut.
Ketika bug muncul di produksi, itu terjadi karena rangkaian tes (test suite) berada di pihak yang salah (berpihak pada bug).
Waspadai tiga jebakan ini:
Tes yang mengikuti bentuk implementasi AI sering kali menguji jalur logika alih-alih aturan bisnis. Jika Anda mengubah detail internal kecil, tes akan rusak meskipun hasilnya tetap benar. Ini membuat refactoring menjadi mimpi buruk.
Kasus tepi (edge cases) yang dangkal AI mahir dalam menguji
null, string kosong, dan angka nol. Ini hal yang sudah jelas. Ia tidak dapat menemukan "batas domain" (domain edges). Ia tidak mengetahui bug zona waktu spesifik Anda, keanehan database Anda, atau aturan bisnis unik Anda.Mock yang rapuh AI sangat suka melakukan mock pada segalanya. Ini menyebabkan dua masalah:
- Mock tersebut salah. Ia meniru versi palsu dari sebuah API yang tidak sesuai dengan kenyataan.
- Mock tersebut membekukan implementasi. Ia menguji bagaimana kode Anda memanggil fungsi lain, alih-alih menguji hasil akhirnya.
Cara menggunakan AI dengan benar:
Jauhkan "maksud" (intent) dari jangkauan AI.
- Tulis kontraknya terlebih dahulu. Tulis satu kalimat dalam bahasa yang lugas untuk setiap tes. Contoh: "Kode yang kedaluwarsa harus mengembalikan jumlah asli."
- Serahkan kalimat-kalimat tersebut kepada AI. Biarkan ia menulis assertion, tetapi Anda yang menyediakan maknanya.
- Lakukan mock pada batas-batas (boundaries). Hanya lakukan mock pada API eksternal atau database. Gunakan versi asli dari modul internal Anda sendiri.
- Tulis satu kasus tepi domain secara manual. Setiap kali Anda menyelesaikan sebuah fungsi, tuliskan satu hal yang membuat Anda khawatir. Gunakan hal tersebut sebagai prompt untuk AI.
AI adalah alat produktivitas, bukan pengganti pemikiran. Gunakan ia untuk menulis isi tes, tetapi jangan pernah biarkan ia memutuskan untuk apa tes tersebut dibuat.
Source: https://dev.to/nazar_boyko/ai-for-test-generation-where-it-helps-and-where-it-lies-jhm
Optional learning community: https://t.me/GyaanSetuAi
