GoDasturchi
Testing Best Practices

Testing Best Practices

Testlashning yaxshi amaliyotlari

Shu kursda o'rgangan barcha vositalarni (jadval testlari, subtestlar, mocking) qachon va qanday ishlatishni jamlab, kursni yakunlaymiz.

Yaxshi testning belgilari

  • Tez — testlar soniyalar ichida o'tishi kerak, aks holda ularni ishga tushirishga erinib qolasiz.
  • Mustaqil — bitta test boshqa testning natijasiga yoki tartibiga bog'liq bo'lmasligi kerak.
  • Aniq nom — test nomi (yoki subtest nomi) nima tekshirilayotganini o'zi aytib turishi kerak: TestAbs/manfiy_sonTestCase3dan ancha tushunarli.
  • Chegara holatlarni qamrab olish — faqat "oddiy" holatni emas, bo'sh qiymat, nol, manfiy son, eng katta/kichik qiymatlarni ham tekshiring.

Keng tarqalgan xatolar

  • Faqat "baxtli yo'l"ni (happy path) tekshirish — xato holatlarni unutish.
  • Testni juda ko'p tafsilotga bog'lash (implementatsiya detali), natijada kodni biroz o'zgartirsangiz ham testlar buziladi — funksiyaning natijasini, ichki ishlash usulini emas, tekshiring.
  • t.Fatalf o'rniga har doim t.Errorf ishlatish — davom etib bo'lmaydigan xatolarda (masalan setup muvaffaqiyatsiz bo'lsa) t.Fatalf ishlatib, keyingi tekshiruvlar ma'nosiz ishlashining oldini oling.

Yaxshi test to'plami — loyihangizga qo'shimcha ishonch beradigan, uni o'zgartirishdan qo'rqmaslikka yordam beradigan "xavfsizlik to'ri". Kodni yozishdan oldin testni yozish ("test-driven development", TDD) ba'zilar uchun yaxshi ishlaydi, lekin majburiy emas — muhimi, kodni tugatgach testlarsiz qoldirmaslik.

Key Takeaway

Key Takeaway:

Yaxshi testlar tez, mustaqil, aniq nomlangan va chegara holatlarni qamrab oladi; ular implementatsiya detalini emas, funksiyaning haqiqiy natijasini tekshiradi.

Testing Best Practices

Testlashning yaxshi amaliyotlari

Shu kursda o'rgangan barcha vositalarni (jadval testlari, subtestlar, mocking) qachon va qanday ishlatishni jamlab, kursni yakunlaymiz.

Yaxshi testning belgilari

  • Tez — testlar soniyalar ichida o'tishi kerak, aks holda ularni ishga tushirishga erinib qolasiz.
  • Mustaqil — bitta test boshqa testning natijasiga yoki tartibiga bog'liq bo'lmasligi kerak.
  • Aniq nom — test nomi (yoki subtest nomi) nima tekshirilayotganini o'zi aytib turishi kerak: TestAbs/manfiy_sonTestCase3dan ancha tushunarli.
  • Chegara holatlarni qamrab olish — faqat "oddiy" holatni emas, bo'sh qiymat, nol, manfiy son, eng katta/kichik qiymatlarni ham tekshiring.

Keng tarqalgan xatolar

  • Faqat "baxtli yo'l"ni (happy path) tekshirish — xato holatlarni unutish.
  • Testni juda ko'p tafsilotga bog'lash (implementatsiya detali), natijada kodni biroz o'zgartirsangiz ham testlar buziladi — funksiyaning natijasini, ichki ishlash usulini emas, tekshiring.
  • t.Fatalf o'rniga har doim t.Errorf ishlatish — davom etib bo'lmaydigan xatolarda (masalan setup muvaffaqiyatsiz bo'lsa) t.Fatalf ishlatib, keyingi tekshiruvlar ma'nosiz ishlashining oldini oling.

Yaxshi test to'plami — loyihangizga qo'shimcha ishonch beradigan, uni o'zgartirishdan qo'rqmaslikka yordam beradigan "xavfsizlik to'ri". Kodni yozishdan oldin testni yozish ("test-driven development", TDD) ba'zilar uchun yaxshi ishlaydi, lekin majburiy emas — muhimi, kodni tugatgach testlarsiz qoldirmaslik.

Key Takeaway

Key Takeaway:

Yaxshi testlar tez, mustaqil, aniq nomlangan va chegara holatlarni qamrab oladi; ular implementatsiya detalini emas, funksiyaning haqiqiy natijasini tekshiradi.