Meminta AI Menulis Unit Test Python: Mulai dari Aturan, Bukan Sekadar Mengejar Hasil Hijau

Panduan menyusun spesifikasi, matriks kasus batas, pemeriksaan unittest, dan tinjauan perubahan untuk kode tes yang dibantu AI.
Ilustrasi meja pengujian kode dengan komponen kasus normal, kasus batas, dan pemeriksaan hasil oleh manusia.
Ilustrasi konseptual dibuat dengan AI.

Jika Anda memakai kecerdasan buatan (artificial intelligence atau AI) untuk membantu pemrograman, jangan hanya meminta “buatkan tes untuk fungsi ini”. Mulailah dari perilaku yang seharusnya terjadi. Panduan ini menunjukkan cara menyusun permintaan pengujian untuk fungsi Python kecil, menilai kasus batas, dan meninjau perubahan tanpa memberi AI kebebasan mengubah aturan agar tes lulus.

Dokumentasi resmi Python mendefinisikan test case sebagai pemeriksaan respons tertentu untuk masukan tertentu; unittest menyediakan TestCase untuk membuatnya.[2] Artinya, kebutuhan utama bukan banyaknya berkas tes, melainkan hubungan yang jelas antara aturan, masukan, dan hasil yang diharapkan. Langkah di bawah adalah saran kerja redaksi, bukan jaminan bahwa kode buatan AI bebas cacat.

1. Tulis spesifikasi sebelum menunjukkan implementasi

Contoh orisinal rekaan: sebuah fungsi bernama label_stok(jumlah) menerima bilangan bulat nonnegatif. Nilai nol menghasilkan teks “habis”; nilai positif menghasilkan “tersedia”; bilangan negatif menimbulkan ValueError. Untuk latihan ini, tipe selain int, termasuk bool, menimbulkan TypeError. Aturan terakhir sengaja ditetapkan eksplisit agar tidak bergantung pada tebakan model tentang kebutuhan bisnis.

Tuliskan spesifikasi tersebut dalam catatan terpisah. Jika kode sekarang bertentangan dengannya, jangan langsung mengubah spesifikasi mengikuti kode. Pastikan dahulu mana yang disetujui pemilik kebutuhan. Pada proyek nyata, jangan memasukkan kode rahasia atau data pelanggan ke alat yang belum mendapat izin organisasi.

2. Minta matriks kasus sebelum kode tes

Contoh prompt orisinal: “Berdasarkan SPESIFIKASI, susun matriks masukan, hasil atau exception yang diharapkan, serta alasan setiap kasus. Jangan menggunakan implementasi sebagai satu-satunya acuan. Sertakan kasus normal, batas, dan tipe salah. Jika aturan ambigu, ajukan pertanyaan. Jangan mengubah fungsi produksi atau menambah dependensi. Setelah matriks saya setujui, barulah tulis unit test dengan pustaka standar unittest.”

Untuk contoh tadi, matriks yang diharapkan mencakup nol, satu, bilangan bulat positif lain, bilangan negatif, string, None, pecahan desimal, dan bool. Kasus nol perlu berdiri sendiri karena berada pada peralihan perilaku. Jangan menerima jawaban yang hanya memeriksa bahwa fungsi mengembalikan string: pemeriksaan itu tidak membedakan label benar dari label salah.

3. Gunakan pemeriksaan yang sesuai tujuan

Dokumentasi Python menjelaskan assertEqual untuk hasil yang diharapkan dan assertRaises untuk exception tertentu.[2] Dalam latihan, minta AI memeriksa label nol dan positif dengan assertEqual, kemudian menulis pemeriksaan ValueError dan TypeError dengan assertRaises. Beri nama tes yang menunjukkan perilaku, misalnya test_nol_menghasilkan_habis, bukan nama kabur seperti test_fungsi_1.

Minta setiap tes independen dan mudah ditelusuri ke satu aturan. Jangan menerima expected value yang dihitung dengan memanggil fungsi yang sedang diuji; cara itu tidak menyediakan pembanding independen. Periksa juga apakah tes benar-benar memanggil kode produksi, bukan salinan fungsi buatan AI di berkas pengujian.

4. Jalankan di lingkungan uji, lalu baca kegagalannya

Setelah menyimpan modul tes sebagai test_stok.py yang dapat diimpor, jalankan python -m unittest -v test_stok dari direktori proyek yang sesuai. Dokumentasi Python mendukung pemanggilan modul tes melalui antarmuka tersebut; opsi -v menampilkan keluaran lebih terperinci.[2] Perintah ini adalah langkah yang dapat Anda jalankan, bukan laporan bahwa proyek Anda telah diuji oleh redaksi.

Jika tes gagal, cocokkan pesan kesalahan dengan spesifikasi. Jangan langsung meminta AI “perbaiki semuanya”. Kegagalan bisa berasal dari impor, kode tes, atau perilaku implementasi. Sebagai latihan tambahan pada salinan kerja, ubah sementara hasil untuk masukan nol menjadi label yang salah. Tes nol semestinya mendeteksi perubahan tersebut. Kembalikan salinan setelah percobaan; jangan mengerjakannya pada layanan produksi.

5. Tinjau perubahan sebelum digabung

Jika proyek memakai Git, git diff memperlihatkan perubahan yang belum masuk staging dibandingkan index; git diff --cached memperlihatkan perubahan yang sudah disiapkan untuk commit.[3] Periksa kedua tampilan sesuai keadaan kerja. Untuk berkas baru, pastikan isinya ikut ditinjau karena tampilan perubahan biasa bukan daftar lengkap semua berkas baru yang belum dilacak.

Tolak perubahan yang menghapus pemeriksaan penting, melewati tes, atau mengubah fungsi produksi di luar lingkup persetujuan. Simpan spesifikasi, matriks kasus, dan hasil eksekusi aktual bersama perubahan. Tes hijau hanya berarti kasus yang dijalankan memenuhi pemeriksaannya; itu bukan bukti semua perilaku, keamanan, atau integrasi sudah benar. Perluas pengujian ketika kebutuhan bertambah, bukan sekadar ketika AI menawarkan lebih banyak kode.

Sumber

[2] Python: unittest — Unit testing framework. Dokumentasi primer diakses 27 Oktober 2026.

[3] Git: git-diff. Dokumentasi primer diakses 27 Oktober 2026.

Komentar & Diskusi

Tulis Komentar

Bagikan pendapat Anda dengan sopan dan relevan. Alamat email tidak akan ditampilkan.