Bosh sahifa Wiki Test failure

Test failure

Test failure — test assertion’i bajarilmagani yoki tekshiruv davomida kutilmagan xato yuz bergani sabab test muvaffaqiyatsiz yakunlangan holat. Failure tekshirilayotgan xatti-harakat expected natijaga mos emasligini bildiradi, ammo uning sababi production kodi, test kodi, test ma’lumoti, muhit yoki infratuzilmada bo‘lishi mumkin.

Failure va error

Ba’zi frameworklar assertion mismatch’ni failure, testni bajara olmagan exceptionni error deb alohida ko‘rsatadi. Masalan, expected 200, actual 500 failure; database ulanishi yo‘qligi esa setup error bo‘lishi mumkin. Boshqa vositalar ikkalasini umumiy failed statusida birlashtiradi.

Skipped test shart bajarilmagani uchun ataylab ishlatilmagan; xfailed test ma’lum xatoni kutadi. Unexpected pass ham muhim: tuzatilgan xato belgilangan xfail ortida yashirinib qolmasligi kerak.

Tahlil qatlamlari

Failure tekshirilganda avval eng aniq dalil olinadi:

  1. assertion xabari va diff;
  2. stack trace’dagi birinchi loyiha kodi;
  3. test inputi, seed va environment;
  4. tegishli log, trace va artefakt;
  5. shu commitda yoki dependency’da o‘zgarish.

Darhol testni qayta ishga tushirish transient holatni ko‘rsatishi mumkin, lekin birinchi run dalillarini o‘chirib yubormasligi kerak. Retry asl failure’ni reportda saqlaydi.

Asosiy sabablar

Sabab Belgisi
Product regression Barqaror va ma’lum o‘zgarishdan keyin
Noto‘g‘ri expected Talab o‘zgargan, test yangilanmagan
Flaky timing Qayta bajarishda natija o‘zgaradi
Shared state Test tartibiga yoki parallel run’ga bog‘liq
Environment Port, disk, network yoki service muammosi
Test data Eskirgan fixture yoki schema mos emas

Failure sababini bilmasdan snapshotni yangilash yoki assertionni yumshatish regressionni yashirishi mumkin.

Flaky test

Bir xil kod va inputda ba’zan o‘tib, ba’zan yiqiladigan test flaky hisoblanadi. Fixed sleep, real vaqt, tartibsiz collection, port collision, shared database va tashqi tarmoqqa bog‘liqlik odatiy sabablar. Flaky test CI signaliga ishonchni pasaytiradi.

Quarantine asosiy pipeline’ni vaqtincha himoya qilishi mumkin, ammo test owner, muammo yozuvi va muddat bilan kuzatiladi. Testni doimiy o‘chirib qo‘yish qamrovni sezdirmasdan kamaytiradi. Deterministik clock, unique resource va event-based wait tuzatishning asosiy vositalaridir.

Failure xabari

Yaxshi xabar test nomi, scenario, expected, actual va semantik diffni beradi. assertTrue(response) kabi umumiy assertion sababni yashiradi. assert response.status == 401 frameworkga qiymatlarni ko‘rsatish imkonini beradi.

Katta output alohida artefaktga yozilib, reportda qisqa link yoki path beriladi. Screenshot, network trace yoki received golden fayl failure bilan birga saqlanishi mumkin. Credential va shaxsiy ma’lumot redaction qilinadi.

CI dagi boshqaruv

Fail-fast birinchi xatoda pipeline’ni to‘xtatib resursni tejaydi, lekin boshqa mustaqil failurelarni ko‘rsatmaydi. Batch yakunigacha davom etish to‘liqroq signal beradi. Tez unit testlarda barcha natija, qimmat destructive testlarda fail-fast tanlanishi mumkin.

Parallel shard yiqilganda uning aniq test ro‘yxati, shard seed’i va worker logi saqlanadi. Faqat failed testni qayta bajarish tez, ammo suite-order dependency’ni yashirishi mumkin; kerak bo‘lsa asl shard tartibi qayta tiklanadi.

Failure statistikasi

Failure rate, flaky rate, mean time to repair va eng ko‘p yiqiladigan testlar suite sog‘ligini ko‘rsatadi. Faqat yashil pipeline foizi yetarli emas, chunki ko‘p retrydan keyingi yashil natija beqarorlikni yashirishi mumkin.

Failure’ni product defect, test defect va infrastructure defect sifatida tasniflash investitsiyani yo‘naltiradi. Tasnif avtomatik taxmin bo‘lishi mumkin, yakuniy sabab dalil bilan tasdiqlanadi.

Bog‘liq tushunchalar

Assertion, Expected value, Actual value, Flaky test, Stack trace, Continuous integration, Test report