Keuntungan:
- Kemampuan untuk mengurangi bug ke instance terkecil yang dapat direproduksi dan memindahkannya ke AI dengan bukti penuh
- Kemampuan untuk menguji hipotesis berbasis bukti dengan kontrol termurah dan menemukan akar permasalahan
- Kemampuan untuk mengatasi akar permasalahan dan mengamankannya dengan uji regresi daripada menambal gejalanya
Debugging adalah proses mencari tahu mengapa perangkat lunak berperilaku tidak terduga dan memperbaikinya. Ini adalah pekerjaan di mana seorang pengembang menghabiskan sebagian besar waktunya dan paling lelah; Karena sering kali kesalahannya tidak terlihat, tetapi tersembunyi beberapa langkah di belakang. AI adalah mitra berpikir yang kuat yang mempercepat penelitian ini — tetapi hanya jika Anda memberikan bukti yang benar. Melakukan debug tanpa bukti adalah area di mana AI paling banyak menghasilkan halusinasi.
Dalam unit ini, kami menetapkan alur yang disiplin mulai dari menghasilkan kesalahan hingga mencapai akar permasalahan: mengklarifikasi gejala, mengumpulkan bukti (pesan kesalahan, pelacakan tumpukan, log, entri), menghasilkan hipotesis, menguji hipotesis, dan memvalidasi perbaikan. AI membantu di setiap langkah; tetapi keputusan "tetap" dibuat dengan melihat bahwa bug tersebut benar-benar telah hilang.
Mengapa Bukti Adalah Segalanya?
LLM tidak melihat kesalahan seperti yang Anda lihat; Dia hanya tahu apa yang kamu katakan padanya. Kalimat seperti "Aplikasi mogok" hampir tidak memberikan informasi apa pun kepada model, dan model tersebut mengisi kekosongan tersebut dengan prediksi - yaitu halusinasi. Pada gilirannya, pesan kesalahan lengkap, pelacakan tumpukan - perincian pemanggilan fungsi mana yang menyebabkan kesalahan terjadi, masukan yang memicu kesalahan, dan apa yang diharapkan, dll. Berdasarkan perilaku yang diamati, model dapat menentukan peringkat probabilitas sebenarnya.
Dalam proses debug, anggaplah AI sebagai asisten seorang detektif: semakin banyak bukti yang Anda berikan, semakin akurat hipotesis yang dihasilkannya. Jika tidak ada bukti, asisten hanya akan menebak-nebak dan mungkin membawa Anda ke jalan yang salah.
Tip: Sebelum mem-porting bug ke AI, kurangi bug tersebut menjadi contoh terkecil yang dapat direproduksi. Kode dan masukan terkecil yang memicu kesalahan membuat segalanya lebih mudah bagi Anda dan model; paling sering selama pengurangan ini Anda menemukan penyebabnya sendiri.
Langkah demi Langkah: Alur Analisis Akar Penyebab
- Perjelas gejalanya. “Apa yang terjadi, apa yang kamu harapkan akan terjadi?” Tulis keduanya dalam satu kalimat.
- Kumpulkan bukti. Pesan kesalahan lengkap, pelacakan tumpukan, baris log yang relevan, entri pemicu, informasi versi.
- Buatlah hipotesis dihasilkan. Dari AI “3 kemungkinan penyebab yang menjelaskan gejala ini dan bagaimana cara mengujinya?” bertanya.
- Uji hipotesis termurah terlebih dahulu. Tambahkan log, cetak nilai, jalankan pengujian. Apakah bukti mendukung hipotesis tersebut?
- Perbaiki akar masalahnya, bukan gejalanya. Daripada membungkam gejalanya dengan pengobatan, atasi akar masalahnya.
- Validasi dan tambahkan pengujian regresi. Lihat kesalahannya hilang; Kemudian tulis tes yang akan menangkap kesalahan itu sehingga tidak muncul kembali.
Tiga Kasus Mini
Kasus 1 — Pelacakan tumpukan mengarah ke file yang benar. Aplikasi mengembalikan kesalahan 500 pada permintaan tertentu. Pengembang memberikan pelacakan tumpukan penuh dan permintaan pemicu ke AI; Model tersebut berhipotesis bahwa kesalahan disebabkan oleh nilai Tidak Ada di lapisan penguraian tanggal. Pengembang menambahkan log ke baris itu, memverifikasinya dan menyelesaikannya dalam 15 menit; 2 jam terbuang sehari sebelumnya dengan eksperimen yang belum terbukti.
Kasus 2 — Halusinasi menyebabkan salah jalur. Pengembang lain hanya menulis "koneksi database terputus". AI menuduh pengaturan kumpulan koneksi tanpa bukti apa pun; Pengembang menghabiskan 40 menit untuk mengutak-atik pengaturan ini. Penyebab sebenarnya adalah waktu tunggu di sisi jaringan dan hanya terungkap dengan melihat log. Pelajaran: hipotesis yang diambil tanpa bukti hanya mungkin, tidak dapat diandalkan.
Kasus 3 — Kesalahan tidak jelas tertangkap. Ada ujian yang terkadang gagal. AI diberi kode pengujian, pesan kegagalan, dan informasi "kadang lolos, kadang gagal"; model menunjukkan ketergantungan waktu/urutan pengujian bersama. Tinjauan tersebut mengonfirmasi bahwa pengujian didasarkan pada waktu setempat sistem. Setelah jam diperbaiki (diolok-olok), tes menjadi stabil.
Empat Templat yang Dapat Disalin
Pembuatan hipotesis berbasis bukti:
Saya sedang men-debug bug. Bukti di bawah ini.- Perilaku yang diharapkan: {{expected}}- Perilaku yang diamati: {{observed}}- Pesan kesalahan / pelacakan tumpukan: {{trace}}- Input pemicu: {{input}}- Lingkungan/versi: {{version}}Cantumkan 3 akar permasalahan yang PALING MUNGKIN menjelaskan gejala ini. Untuk masing-masing : bagaimana cara tesnya (cek paling murah) dan bagaimana cara memperbaikinya jika benar. Jika buktinya tidak cukup, beri tahu saya informasi tambahan apa yang Anda perlukan.
Menafsirkan jejak tumpukan:
Baca jejak tumpukan ini. Bedakan antara baris mana kesalahan MUNGKIN dimulai (akar) dan baris mana yang hanya merupakan kelanjutan dari rantai. Sarankan 1-2 tempat untuk dilihat terlebih dahulu. Kode terkait:{{code}}Jejak:{{jejak}}
Pengurangan repro minimal:
Kode di bawah ini menghasilkan kesalahan. Kurangi ke contoh TERKECIL yang masih memicu kesalahan tetapi membuang apa pun yang tidak perlu. Jangan berasumsi bahwa setiap bagian yang Anda hapus tidak memengaruhi kesalahan, tetapi tambahkan catatan yang mengatakan "jika kesalahan hilang saat Anda menghapus ini, itulah alasannya".{{code}}
Validasi pasca-koreksi dan pengujian regresi:
Asumsikan akar masalahnya adalah {{cause}} dan saya melakukan perbaikan berikut: {{fix}}.1) Apakah perbaikan ini benar-benar memperbaiki gejalanya, apakah akan ada efek sampingnya? 2) Tulis uji regresi yang akan mendeteksi bug ini di masa mendatang.
Perintah lemah / Perintah kuat
Lemah: "Kodenya tidak berfungsi, kenapa?"
Kuat: "Node 20 / Ekspres. POST /orders mengembalikan 500 ketika item adalah string kosong di badan; seharusnya mengembalikan 400. Pelacakan tumpukan: TypeError: Tidak dapat membaca properti yang tidak ditentukan (membaca '0') — terlampir adalah jejak lengkap dan penangan yang terkait. Beri saya 3 penyebab paling mungkin yang menjelaskan gejala ini dan cara menguji masing-masing. [jejak + kode]"
Versi yang kuat; Ini memberikan lingkungan, titik akhir, masukan pemicu, jenis kesalahan yang tepat, dan perilaku yang diharapkan. Model tidak lagi dapat membuat prediksi, melainkan analisis.
langkah
kontribusi AI
kendali Anda
mengumpulkan bukti
Bukti apa yang dibutuhkan, ingatkan
Benar-benar mengumpulkan bukti
generasi hipotesis
Buat daftar kemungkinan alasannya
Prioritaskan dengan konteks
pengujian hipotesis
Merekomendasikan metode pengujian
Mengoperasikan dan mengamati secara pribadi
koreksi
tambalan merekomendasikan
Apakah ini menyelesaikan akar permasalahannya? Itu benar.
regresi
menulis tes
Memverifikasi bahwa tes tersebut rusak
Menyelesaikan Akar Penyebabnya, Bukan Gejalanya
Seringkali AI akan menyarankan patch yang dengan cepat membungkam gejalanya: tambahkan coba/tangkap, beri tanda centang nol, telan kesalahannya. Hal ini terkadang benar, seringkali berbahaya; karena penyebab aslinya tetap ada dan muncul lagi dari tempat lain. Dengan setiap perbaikan, tanyakan pada diri Anda: “Apakah ini memperbaiki penyebab kesalahan, atau membuatnya tidak terlihat?” Setelah Anda menemukan akar masalahnya, perbaikannya biasanya lebih kecil, lebih kuat, dan permanen.
Perhatian: Menelan pengecualian secara diam-diam (tangkapan kosong) tidak menyelesaikan kesalahan; itu hanya menyembunyikan dan membuat diagnosis di masa depan menjadi tidak mungkin. Jika AI menyarankan “solusi” seperti itu, jangan menerimanya tanpa mempertanyakan akar permasalahannya.
Kesalahan umum
- Mengajukan pertanyaan tanpa bukti. Kalimat yang ambigu mendorong model ke dalam halusinasi; Berikan kesalahan penuh, lacak dan masukan.
- Mengunci hipotesis pertama. Saran pertama AI mungkin bukan yang paling mungkin; Mulailah dengan hipotesis termurah yang dapat dikontrol.
- Memperbaiki gejala dan menghilangkan akar permasalahannya. Kesalahan yang dibungkam kembali.
- Menutup perbaikan tanpa memverifikasinya. Lihat dalam kondisi seperti produksi bahwa kesalahan benar-benar hilang.
- Tidak menulis tes regresi. Jika tidak ada pengujian yang ditambahkan, kesalahan yang sama akan muncul secara diam-diam di versi yang lebih baru.
Singkatnya
Dalam proses debug, kekuatan AI berbanding lurus dengan bukti yang Anda berikan: tanpa pesan kesalahan lengkap, pelacakan tumpukan, masukan pemicu, dan perilaku yang diharapkan, model hanya berspekulasi. Alur yang disiplin—mengklarifikasi gejala, mengumpulkan bukti, menghasilkan hipotesis, menguji dengan kontrol termurah, memperbaiki akar permasalahan, memverifikasi, dan menambahkan pengujian regresi—menutup bug dengan cepat dan permanen. AI adalah penghasil hipotesis; Andalah yang memutuskan bahwa bug tersebut benar-benar telah teratasi.
Tugas aplikasi
Pilih bug nyata yang Anda temui baru-baru ini (atau buat ulang bug pengujian). Lakukan langkah "reproduksi minimum" terlebih dahulu; Hapus kode dan masukan terkecil yang memicu kesalahan. Kemudian dapatkan 3 kemungkinan penyebab dan metode pengujian dari AI dengan template “pembuatan hipotesis berbasis bukti”. Uji sendiri hipotesis termurah, temukan akar masalahnya, perbaiki, dan terakhir tulis uji regresi yang akan mendeteksi bug ini di masa mendatang dan verifikasi bahwa pengujian tersebut benar-benar rusak.
daftar periksa
- [ ] Saya mengurangi kesalahan ke sampel terkecil yang dapat direproduksi sebelum memindahkannya ke AI.
- [] Saya menambahkan pesan kesalahan lengkap, pelacakan tumpukan, masukan, dan perilaku yang diharapkan ke prompt.
- [ ] Saya mulai dengan yang termurah yang dapat dikontrol, tanpa terpaku pada satu hipotesis.
- [ ] Saya memverifikasi bahwa saya telah mengatasi akar permasalahannya dan bukannya memperbaiki gejalanya.
- [ ] Saya mengamati bahwa perbaikan tersebut benar-benar memperbaiki bug.
- [] Saya menambahkan tes regresi untuk setiap bug yang teratasi.