Birlik 5 / 12

Nosozliklarni tuzatish va muammolarni bartaraf etish

Daromadlar:

  • Xato xabari, stek izi va eng kichik takrorlash misoli bilan AI uchun xatoni samarali tasvirlash qobiliyati
  • Gipoteza qilish va bosqichma-bosqich qisqartirish orqali ildiz sababini topish uchun AI bilan tizimli disk raskadrovka oqimini boshqarish qobiliyati
  • AI taklif qilgan tuzatish muammoni haqiqatan ham takrorlash va regressiya testlari orqali hal qilganligini tekshirish qobiliyati

Nosozliklarni tuzatish - bu dastur nima uchun kutilganidan boshqacha harakat qilayotganini aniqlash va uni tuzatish vazifasi bo'lib, ko'pchilik muhandislarning ko'p vaqtini oladi. Yaxshi disk raskadrovka taxmin qilish o'yiniga emas, balki tizimli ravishda toraytirishga asoslanadi: simptomni aniqlang, faraz qiling, gipotezani sinab ko'ring, asosiy sababga o'ting. AI bu tsiklda juda kuchli hamkordir; Ammo agar siz unga to'g'ri ma'lumot bersangiz. “Kod ishlamayapti, tuzating” deyish AIni taxmin qilishga va oddiy takliflar berishga majbur qiladi. Unga to'liq xato xabari, stek izi va eng kichik ko'paytirish namunasini bering, shunda siz birgalikda asosiy sababni topasiz.

Ushbu bo'limda biz sun'iy intellektdagi xatoni qanday qilib samarali tasvirlashni, gipotezalarni bosqichma-bosqich qisqartirishni va taklif qilingan tuzatish haqiqatda muammoni hal qilishini regressiya testi orqali tekshirishni ko'rib chiqamiz. Esingizda bo'lsin: xatoni "tuzatish" va "xatolik alomatini bostirish" ikki xil narsadir; Asl sababni topmasdan qilingan tuzatish xatoni boshqa joyga ko'chiradi.

Tushunchalar: Stack trace: Xato vaqtida qaysi funksiyalar qanday tartibda chaqirilganligini ko'rsatadigan dump. Minimal takrorlash: xatoni keltirib chiqaradigan eng oddiy, eng qisqa kod/kirish. Ildiz sababi: simptom emas, balki muammoning haqiqiy manbai. Regressiya testi: Xuddi shu xato takrorlanmasligini ta'minlaydigan test.

AI uchun xatoni tavsiflash

AIning asosiy sababni topish ehtimoli siz taqdim etgan ma'lumot sifatiga to'g'ridan-to'g'ri proportsionaldir. Yaxshi xato tavsifi quyidagilarni o'z ichiga oladi: nima qilmoqchi bo'lganingiz, nima kutgan edingiz, nima sodir bo'ldi, aniq xato matni va stek izi, kiritilgan kod, atrof-muhit (til/versiya/OS) va xatoga sabab bo'lgan eng kichik namuna.

  1. Semptomni aniqlang. "Kutilayotgan X, aktuallashtirilgan Y" formatida.
  2. To'liq xato matnini va stek izini joylashtiring. Uni qisqartirmang, tsenzura qilmang, lekin strukturani buzmang.
  3. Eng kichik reproduktsiyani bering. Xatoni keltirib chiqaradigan minimal kirish va kod.
  4. Atrof-muhitni belgilang. Til versiyasi, kutubxona versiyasi, ish vaqti muhiti.

Samarali xato tavsifi so'rovi: "Men xatolikni tuzatmoqdaman. Ma'lumot:- Men nima qilmoqchiman: [X]- Kutilayotgan xatti-harakatlar: [Y]- Haqiqiy xatti-harakat: [Z]- To'liq xato xabari va stek izi: [qo'yish]- Atrof: [til/versiya, kutubxona/versiya]- Minimal kiritilgan kod: [kod] Birinchi bo'lib ro'yxatdagi ildiz sababini tuzatish tartibini bering. ehtimollik va har biri uchun qanday tekshiruvni tekshirish kerakligini ayting."

Gipoteza orqali oqimning torayishi

Tizimli nosozliklarni tuzatish - bu imkoniyatlarni birma-bir yo'q qilish san'ati. Gipotezalarni yaratish va har bir gipotezani sinab ko'rish uchun eksperimentni loyihalash uchun AIdan foydalaning; Keyin tajribani bajaring va natijani qaytaring. Bu tsikl tasodifiy o'zgarishlar qilish va to'xtash odatiga qaraganda ancha tezroq bo'lib, "ov miltig'ini tuzatish" deb ataladi.

Ikkilik qidiruv (biseksiya) yordamchi soʻrovi: "Bu xato kecha yoʻq edi, bugun bor. Men oxirgi 20 ta oʻzgarishdan qaysi biri bisect bilan xatolik keltirganini bilmoqchiman. Menga bosqichma-bosqich reja bering: natijaga qarab qaysi nuqtani sinab koʻrishim kerak, qaysi yarmiga borishim kerak. Shuningdek, har bir bosqichda nimani tekshirish kerakligini ayting."

Jurnal kiritish strategiyasi soʻrovi: "Men xatoni topa olmayapman, chunki bu funksiyadagi oraliq qiymatlarni koʻra olmayapman. Qaysi nuqtalarda qaysi oʻzgaruvchilarni chop etadigan jurnal qatorlarini qoʻshishim kerakligini ayting. Har bir jurnal uchun “bu jurnaldan nimani oʻrganaman” tushuntirishini qoʻshing. Shuningdek, maxfiy maʼlumotlarni jurnalga kiritishimga toʻsqinlik qiladigan ogohlantirishlarni ham belgilang."

Maslahat: Agar xatoni hal qila olmasangiz, muammo ko'pincha siz noto'g'ri taxmin qilgan joyda bo'ladi. AIdan so'rang: "Mening qanday taxminim noto'g'ri bo'lishi mumkin?" So'rash sizning ko'rligingizni buzadi. Eng qiyin xatolar siz "Bu to'g'ri ishlayotganiga aminman" degan joyda yashirinadi.

Zaif taklif / Kuchli taklif

ZAFSIZ:"Mening kodim xatolik berdi, uni tuzating: [200 satr kod]"(Natija: AI qanday xato ekanligini, nima kutilayotganini bilmaydi; taxminlarga asoslangan umumiy takliflarni beradi, ularning aksariyati foydasiz.)STRONG:"Men NullPointerExceptionni olaman. Kutilayotgan: foydalanuvchi roʻyxati qaytarilishi kerak. Haqiqiy: [Java: TrackUs to get. 17. Minimal takrorlash: Bu foydalanuvchilar roʻyxati boʻsh boʻlganda sodir boʻladi, lekin u toʻla boʻlganda emas.

Kuchli so'rov xatoni kontekstga qo'yadi: qaysi holatda bu sodir bo'ladi (bo'sh ro'yxat), qaysi holatda u sodir bo'lmaydi (to'liq ro'yxat). Bu bitta maslahat ("bo'sh bo'lganda sodir bo'ladi") deyarli to'g'ridan-to'g'ri asosiy sababga ishora qiladi. Ushbu ma'lumot zaif ko'rsatmalarda mavjud emasligi sababli, AI ko'r-ko'rona taxmin qiladi.

Tuzatishni tekshirish

Tuzatish faqat uchta narsani bajarsa, haqiqiy tuzatishdir:

nazorat qilish

Savol

Qanday tekshirish kerak

Xato yo'qoldimi?

Xuddi shu kirish hozir ishlaydimi?

Yana minimal repro-ni ishga tushiring

Yangi xatolar yo'qmi?

Yana biror narsa buzilganmi?

To'liq sinov to'plamini ishga tushiring

Bu takrorlanmaydimi?

Xuddi shu xato yana takrorlanadimi?

Ushbu stsenariy uchun regressiya testini qo'shing

Asl sababni topmasdan qilingan tuzatishlar ko'pincha simptomni bostiradi. Misol uchun, null xatosini "o'tkazib yuborish bo'lsa, null" bilan yoritib berish, "nega ma'lumotlar null bo'lib qoldi?" ko'rinmas va xato boshqa joyda takrorlanadi.

Mini korpuslar

1-holat - simptomlarni bostirish tuzog'i. Jamoa vaqti-vaqti bilan paydo bo'ladigan nol xatoni o'chirishga urinib ko'radi; Xato yo'qoladi, lekin 2 haftadan so'ng ma'lumotlar yo'qolgan ko'rinadi. Haqiqiy sabab shundaki, xizmat kutish vaqti tugashi bilan null qiymatini qaytaradi. AIdan "nima uchun u nol bo'lmoqda?" deb so'rasangiz, asosiy sabab paydo bo'ladi; Haqiqiy tuzatish 1 soat davom etadi, ammo doimiydir.

2-holat - Minimal qayta ishlash quvvati. Ishlab chiquvchi "u vaqti-vaqti bilan ishdan chiqadi" degan xatoni tuzata olmaydi. U AI taklifi bilan xatoni eng kichik kiritishgacha kamaytiradi: muammo faqat turkcha belgilarni o'z ichiga olgan fayl nomlarida yuzaga keladi (kodlash xatosi). 300 ta noaniqlik 5 satr aniq reproga kamaytirilsa, yechim aniq bo'ladi.

3-holat - Anti-regressiya testi. AI sanani hisoblash xatosini tuzatadi. Muhandis bundan qanoatlanmaydi; xato stsenariy uchun regressiya testini qo'shadi (oy oxiri, 31 yanvar + 1 oy). 4 oydan so'ng yana bir o'zgarish xuddi shu hududga tegsa, sinov qizil rangga aylanadi va xato ishlab chiqarishga yetguncha ushlanadi.

Umumiy xatolar

  • Bu "ishlamayapti, tuzating" degan ma'noni anglatadi. Xato matni, kutish va takrorlashsiz, AI taxmin qiladi.
  • Stack izini bermayapti. Stack izi ko'pincha to'g'ridan-to'g'ri asosiy sababni ko'rsatadi.
  • Tasodifiy o'zgarishlar qilishda davom eting. Gipotezani o'rnatmasdan tajribalar vaqtni behuda sarflaydi.
  • Semptomni bostirish va asosiy sababni yo'qotish. Xato boshqa joyda qayta tug'iladi.
  • Regressiya testi bilan tuzatishni ta'minlamaslik. Xuddi shu xato kelajakda jimgina qaytib keladi.

qisqa bayoni; yakunida

Samarali disk raskadrovka - bu taxmin qilish emas, balki tizimli ravishda toraytirishdir. AIga to'liq xato matni, stek izi, minimal ko'payish va atrof-muhit haqida ma'lumot berish ildiz sababini topish imkoniyatini eksponent ravishda oshiradi. Gipotezalarni yaratish va har bir gipotezani sinab ko'rish uchun eksperimentni loyihalash uchun AIdan foydalaning; Siz tajriba o'tkazasiz. Xato yo'qolganini, yangi xatoliklar kiritilmaganini va regressiya testi bilan himoyalanganligini ko'rganingizdagina tuzatishni "bajarildi" deb hisoblang.

Ilova vazifasi

Haqiqiy yoki sun'iy xatoni ko'rib chiqing. Avval xatoni eng kichik reproduktsiyaga kamaytiring (qaysi kirishda u sodir bo'ladi, qaysisida u yo'q). Samarali xato retsepti so'rovidan foydalanib, AIdan 3 ta asosiy gipoteza va har biri uchun tekshirish bosqichini so'rang. Gipotezalarni birma-bir sinab ko'rish orqali asosiy sababni toping, uni tuzating, so'ngra xato yo'qolganligini va sinov himoya qilishni ko'rsatish uchun ushbu stsenariy uchun regressiya testini yozing va o'tkazing.

nazorat ro'yxati

  • [ ] Men simptomni "kutilgan va amalga oshirilgan" deb aniqladim.
  • [ ] Men AIga toʻliq xato matni va stek izini berdim.
  • [ ] Men xatoni eng kichik reproduktsiyaga qisqartirdim.
  • [ ] Gipotezalarni birma-bir sinab ko'rib, men asosiy sababni topdim.
  • [ ] Alomatni bostirish o'rniga, men asosiy sababni aniqladim.
  • [ ] Xuddi shu xato uchun regressiya testini qo'shdim va o'tkazdim.