Bosh sahifa Wiki Coverage threshold

Coverage threshold

Coverage threshold — code coverage ko‘rsatkichi belgilangan minimal darajadan past bo‘lsa test yoki CI bosqichini muvaffaqiyatsiz deb belgilaydigan sifat darvozasi. Threshold line, branch, function yoki condition coverage uchun global, modul, fayl yoki o‘zgargan kod kesimida qo‘yilishi mumkin. Uning vazifasi qamrovning sezdirmasdan pasayishini cheklashdir.

Threshold shakllari

Global threshold butun codebase foizini tekshiradi. Per-file yoki per-package threshold past qamrovli yangi modulning katta repository o‘rtachasi ichida yashirinishini kamaytiradi. Diff coverage faqat pull requestda qo‘shilgan va o‘zgartirilgan executable qatorlarga qaraydi.

Shakl Kuchli tomoni Cheklovi
Global Soddalik va umumiy trend Legacy massasi yangi bo‘shliqni yashiradi
Per-module Owner va riskka mos Sozlash ko‘proq
Per-file Aniq lokal gate Kichik generated faylda shovqin
Diff coverage Yangi kodni nazorat qiladi Eski xavfli kodni tuzatmaydi

Foizga qo‘shimcha “uncovered line soni oshmasin” kabi ratchet siyosati ishlatilishi mumkin.

Tanlash mezoni

Threshold tasodifiy 100% qilib qo‘yilmaydi. Joriy baseline, kod turi, testlash narxi va xavf hisobga olinadi. Financial calculation yoki authorization moduli umumiy UI glue kodidan yuqoriroq branch talabiga ega bo‘lishi mumkin.

Juda past darvoza signal bermaydi. Juda yuqori darvoza esa ma’nosiz getter testlari, exclusion va coverage gamingni rag‘batlantirishi mumkin. Maqsad raqamning o‘zi emas, muhim xatti-harakatlarning tekshirilishini saqlashdir.

CI ishlashi

Coverage report standard formatda yaratiladi va threshold checker shu artefaktni o‘qiydi. Test shardlar parallel bo‘lsa avval barcha raw natija birlashtiriladi; har shardga alohida 80% talab qo‘yish noto‘g‘ri, chunki shard source’ning faqat qismini bajaradi.

Build path va source map bir xil bo‘lmasa merge qatorlarni takrorlaydi. Thresholddan oldin report validligi, testlarning o‘zi o‘tganligi va expected source soni tekshiriladi. Bo‘sh reportni 100% deb talqin qilish xavfli.

Yangi kod va ratchet

Legacy loyiha 45% coverage bilan birdan 80%ga chiqolmasligi mumkin. Ratchet joriy darajani pastlatmaslik va yangi kod uchun masalan 80% diff coverage talab qilish orqali bosqichma-bosqich yaxshilaydi. Baseline o‘zgarsa review va sabab kerak.

Refactoring qator soni va mappingni o‘zgartirib foizni kutilmagan ko‘tarishi yoki tushirishi mumkin. Trend absolute covered/uncovered son va branch bilan birga qaraladi.

Exclusion boshqaruvi

Generated code, platformaga xos unreachable block yoki defensive assertion exclude qilinishi mumkin. Har exclusion source’da ko‘rinadi va review qilinadi. “Thresholddan o‘tish” uchun biznes error handlingni chiqarish gate ma’nosini buzadi.

Configuration file exclusion patternlari versiyalanadi. Pattern juda keng bo‘lsa butun package reportdan yo‘qolishi mumkin. CI kutilgan fayllar sonini tekshirishi bu xatoni topadi.

Cheklovlar

80% coverage 80% talab tekshirildi degani emas. Qator assertion’siz bajarilishi mumkin, noto‘g‘ri expected esa xatoni tasdiqlaydi. Threshold mutation score, test failure tarixi, review va risk tahlili bilan to‘ldiriladi.

Coverage pasayishi har doim sifat pasayishi emas: redundant covered kod o‘chirilsa denominator o‘zgaradi. Gate failure review boshlash uchun signal, avtomatik semantik hukm emas.

Governance

Thresholdni o‘zgartirish oddiy feature commit ichida yashirilmaydi. Owner tasdig‘i, sabab va muddatli istisno yoziladi. Temporary waiver expiry bilan tugaydi; aks holda darvoza doimiy chetlab o‘tiladi.

Dashboard global va diff coverage, threshold breach hamda exclusion trendini ko‘rsatadi. Jamoa faqat foizni emas, qaysi kritik modul uncovered ekanini ko‘radi.

Bog‘liq tushunchalar

Code coverage, Line coverage, Branch coverage, Diff coverage, Continuous integration, Quality gate, Mutation testing