GoDasturchi
Reproduce Before You Fix

Reproduce Before You Fix

Tuzatishdan oldin qayta hosil qiling

Avtomexanikni tasavvur qiling: mijoz "mashinam ba'zan g'alati tovush chiqaradi" deb olib keladi. Agar mexanik mashinani ochib, "ehtimol bu detal" deb uni almashtirsa-yu, tovush qachon paydo bo'lishini bilmasa — u qimmat detalni bekorga almashtirishi, va tovush baribir qolishi mumkin. Yaxshi mexanik AVVAL tovushni QACHON, QANDAY sharoitda paydo bo'lishini aniqlaydi — uni ISHONCHLI ravishda qayta hosil qiladi — va faqat SHUNDAN keyin ta'mirlashga kirishadi.

Guessing vs Forming a Hypothesis darsida gipoteza qurishni ko'rdik — lekin gipotezani tekshirish uchun xatoni istalgan vaqtda qayta chaqira olish kerak. Xatoni ISHONCHLI qayta hosil qilmasdan turib tuzatishga urinish — "tuzatdim shekilli" degan noaniq holatga olib keladi: xato haqiqatan yo'qolganmi, yoki shunchaki hozircha ko'rinmayaptimi — bilib bo'lmaydi.

Xatoni qayta hosil qilish — ko'pincha eng ko'p vaqt oladigan, lekin eng muhim qadam. Foydali savollar: Xato HAR SAFAR sodir bo'ladimi, yoki ba'zan? Ma'lum bir kirish (input) bilanmi, yoki tasodifiymi? Ma'lum bir tartibda amallar bajarilgandami? Bitta foydalanuvchidami, ko'p foydalanuvchi bir vaqtda ishlaganda ediMi?

  • Xatoni eng KICHIK, eng SODDA holatga qisqartiring — butun ilovani ishga tushirmasdan, faqat muammoli qismni ajratib oling
  • Xatoni QADAM-BAQADAM yozib boring: "1. shu funksiyani chaqirdim, 2. shu qiymatni berdim, 3. shu natija chiqdi, kutilgani esa boshqa edi"
  • Agar xato "ba'zan" sodir bo'lsa — bu odatda concurrency (bir vaqtda ishlash) yoki tashqi holatga (vaqt, tarmoq, tasodifiy sonlar) bog'liqlik belgisi

Real dunyoda xatoni ISHONCHLI qayta hosil qilish uchun ko'pincha avtomatik test yozish eng yaxshi vosita — Professional Go Testing kursida ko'rgan go test bilan xatoni ko'rsatadigan kichik testni yozib qo'yish, xatoni qo'lda, qayta-qayta takrorlashdan ancha ishonchli va tezroq. Bu test — keyinchalik xato tuzatilganini ISBOTLASH uchun ham xizmat qiladi: test o'tsa, xato ketgan; o'tmasa, hali qolgan.

Ba'zan xatoni darhol qayta hosil qilib bo'lmaydi — masalan, u faqat production serverida, kamdan-kam holatlarda ko'rinadi. Bunday vaziyatda maqsad — xato yuz berganda YETARLICHA ma'lumot (jurnal yozuvlari, xato konteksti) qoldirishni ta'minlash, shunda keyingi safar xato chiqqanda uni tushunish uchun kerakli iz allaqachon mavjud bo'ladi. Bu — Writing Up the Root Cause darsida yana ko'rasiz.

Key Takeaway

Key Takeaway:

Xatoni tuzatishdan oldin, uni ISHONCHLI ravishda, xohlagan vaqtda qayta hosil qilishni o'rganing — imkon bo'lsa, buni avtomatik test sifatida yozib qo'ying. Bu sizga gipotezani tekshirish imkonini beradi va tuzatish HAQIQATAN ishlaganini isbotlaydi.

NEXT UP

Binary Search for Bugs

Reproduce Before You Fix

Tuzatishdan oldin qayta hosil qiling

Avtomexanikni tasavvur qiling: mijoz "mashinam ba'zan g'alati tovush chiqaradi" deb olib keladi. Agar mexanik mashinani ochib, "ehtimol bu detal" deb uni almashtirsa-yu, tovush qachon paydo bo'lishini bilmasa — u qimmat detalni bekorga almashtirishi, va tovush baribir qolishi mumkin. Yaxshi mexanik AVVAL tovushni QACHON, QANDAY sharoitda paydo bo'lishini aniqlaydi — uni ISHONCHLI ravishda qayta hosil qiladi — va faqat SHUNDAN keyin ta'mirlashga kirishadi.

Guessing vs Forming a Hypothesis darsida gipoteza qurishni ko'rdik — lekin gipotezani tekshirish uchun xatoni istalgan vaqtda qayta chaqira olish kerak. Xatoni ISHONCHLI qayta hosil qilmasdan turib tuzatishga urinish — "tuzatdim shekilli" degan noaniq holatga olib keladi: xato haqiqatan yo'qolganmi, yoki shunchaki hozircha ko'rinmayaptimi — bilib bo'lmaydi.

Xatoni qayta hosil qilish — ko'pincha eng ko'p vaqt oladigan, lekin eng muhim qadam. Foydali savollar: Xato HAR SAFAR sodir bo'ladimi, yoki ba'zan? Ma'lum bir kirish (input) bilanmi, yoki tasodifiymi? Ma'lum bir tartibda amallar bajarilgandami? Bitta foydalanuvchidami, ko'p foydalanuvchi bir vaqtda ishlaganda ediMi?

  • Xatoni eng KICHIK, eng SODDA holatga qisqartiring — butun ilovani ishga tushirmasdan, faqat muammoli qismni ajratib oling
  • Xatoni QADAM-BAQADAM yozib boring: "1. shu funksiyani chaqirdim, 2. shu qiymatni berdim, 3. shu natija chiqdi, kutilgani esa boshqa edi"
  • Agar xato "ba'zan" sodir bo'lsa — bu odatda concurrency (bir vaqtda ishlash) yoki tashqi holatga (vaqt, tarmoq, tasodifiy sonlar) bog'liqlik belgisi

Real dunyoda xatoni ISHONCHLI qayta hosil qilish uchun ko'pincha avtomatik test yozish eng yaxshi vosita — Professional Go Testing kursida ko'rgan go test bilan xatoni ko'rsatadigan kichik testni yozib qo'yish, xatoni qo'lda, qayta-qayta takrorlashdan ancha ishonchli va tezroq. Bu test — keyinchalik xato tuzatilganini ISBOTLASH uchun ham xizmat qiladi: test o'tsa, xato ketgan; o'tmasa, hali qolgan.

Ba'zan xatoni darhol qayta hosil qilib bo'lmaydi — masalan, u faqat production serverida, kamdan-kam holatlarda ko'rinadi. Bunday vaziyatda maqsad — xato yuz berganda YETARLICHA ma'lumot (jurnal yozuvlari, xato konteksti) qoldirishni ta'minlash, shunda keyingi safar xato chiqqanda uni tushunish uchun kerakli iz allaqachon mavjud bo'ladi. Bu — Writing Up the Root Cause darsida yana ko'rasiz.

Key Takeaway

Key Takeaway:

Xatoni tuzatishdan oldin, uni ISHONCHLI ravishda, xohlagan vaqtda qayta hosil qilishni o'rganing — imkon bo'lsa, buni avtomatik test sifatida yozib qo'ying. Bu sizga gipotezani tekshirish imkonini beradi va tuzatish HAQIQATAN ishlaganini isbotlaydi.

NEXT UP

Binary Search for Bugs