Bosh sahifa Wiki Function coverage

Function coverage

Function coveragetest bajarilishi davomida dasturdagi funksiyalar yoki metodlarning nechta qismi kamida bir marta chaqirilganini ko‘rsatadigan code coverage o‘lchovi. U odatda chaqirilgan funksiyalar / jami instrumented funksiyalar nisbatida ifodalanadi. Funksiya chaqirilgani uning ichidagi barcha yo‘l yoki natijalar tekshirilganini anglatmaydi.

Hisoblash birligi

Coverage tool tilga qarab function declaration, method, constructor, lambda yoki closure’ni alohida birlik deb hisoblaydi. Compiler yaratgan synthetic methodlar denominatorga kirishi ham mumkin. Shu sabab turli tool bergan foizlar bir xil source uchun farq qilishi ehtimol.

Birlik Odatdagi talqin
Named function Birinchi instruction bajarilganda covered
Method Instance yoki static chaqiruvda covered
Constructor Obyekt yaratilganda covered
Lambda/closure Tanasiga control kirganda covered
Getter/setter Property o‘qish yoki yozishda covered

Function faqat reference sifatida olinsa, ammo chaqirilmasa covered hisoblanmasligi kerak. Instrumentation semantikasi vosita hujjatida aniqlanadi.

Line coverage bilan bog‘lanishi

Funksiyaning birinchi qatori bajarilsa function coverage oshadi, lekin ichidagi if, error handling va loop ishlamasligi mumkin. Aksincha, generated wrapper uncovered bo‘lib function foizini tushirsa ham asosiy biznes kodining line coverage’i yuqori bo‘lishi mumkin.

Function coverage katta modulda umuman chaqirilmaydigan API yoki dead code’ni tez topadi. Keyin branch va condition report o‘sha funksiya ichidagi qamrov chuqurligini ko‘rsatadi.

Callback va event handler

Callback ro‘yxatdan o‘tkazilishi uning bajarilganini bildirmaydi. UI click handler, signal handler yoki queue consumer testda haqiqiy event bilan chaqirilishi kerak. Faqat registration kodi covered, callback esa uncovered bo‘lishi mumkin.

Async funksiya obyektini yaratish yoki coroutine qaytarish tanani to‘liq bajarmasligi mumkin. Uni await qilish, event loopni yuritish va kerakli state transitionni assertion qilish zarur.

Overload va polymorphism

Overloaded funksiyalar compilerda alohida signature yoki bitta dispatch body sifatida namoyon bo‘lishi mumkin. Interface method chaqirilganda faqat tanlangan concrete implementation covered bo‘ladi. Boshqa implementationlar alohida test talab qiladi.

Dynamic dispatchda coverage qaysi class methodi ishlaganini ko‘rsatadi. Faqat umumiy interface test barcha plugin yoki strategy variantini qamramaydi.

Generated va trivial funksiyalar

Data class getterlari, serializer generatori yoki framework proxy’lari ko‘p funksiya yaratishi mumkin. Ularni denominatorga kiritish biznes signalini suyultiradi. Scope build output emas, jamoa boshqaradigan source mapping asosida sozlanadi.

Trivial funksiya ham security yoki mapping contracti uchun muhim bo‘lishi mumkin. Exclusion avtomatik “kichik” degan mezon bilan emas, code generation va risk asosida qilinadi.

Threshold va diff

Global function threshold yangi qo‘shilgan, hech qachon chaqirilmaydigan funksiyani katta repository ichida yashirishi mumkin. Changed-function coverage pull requestdagi yangi yoki o‘zgargan funksiyalarni tekshiradi. Public API va kritik handlerlar uchun alohida gate bo‘lishi mumkin.

Foizni oshirish uchun funksiyani faqat chaqirib, natijani tekshirmaslik ma’nosiz. Test observable behavior va side effectni assertion qiladi. Mutation testing funksiya ichidagi o‘zgarish test tomonidan seziladimi, degan savolga javob beradi.

Dead code tahlili

Uzoq vaqt davomida hech bir test va production profilingda chaqirilmagan funksiya dead code bo‘lishi mumkin. Coverage yolg‘iz bu xulosani bermaydi: platformaga xos, emergency yoki plugin orqali chaqiriladigan kod test run’da ishlamasligi mumkin. Static call graph va runtime telemetry bilan birga tekshiriladi.

Bog‘liq tushunchalar

Code coverage, Line coverage, Branch coverage, Instrumentation, Dead code, Callback, Mutation testing