Bosh sahifa Wiki Condition coverage

Condition coverage

Condition coverage — qaror ifodasidagi har bir elementar boolean shart testlar davomida kamida bir marta true va kamida bir marta false qiymat olganini o‘lchaydigan coverage turi. Masalan, is_admin and is_active ifodasida ikkala operandning har ikki qiymati kuzatilishi kerak. Bu branch coverage’dan boshqa savolga javob beradi.

Elementar shartlar

A or (B and C) qarorida A, B va C elementar condition hisoblanadi. Testlar A=true/false, B=true/false va C=true/false holatlarini hosil qilsa condition coverage to‘liq bo‘lishi mumkin. Biroq expressionning umumiy natijasi barcha branch yo‘llarini olganiga alohida qaraladi.

O‘lchov Tekshiradigan narsa
Line coverage Qator bajarildimi
Branch coverage Qaror true va false bo‘ldimi
Condition coverage Har operand true va false bo‘ldimi
MC/DC Har operand qarorga mustaqil ta’sir qildimi

To‘liq condition coverage to‘liq MC/DC degani emas. Operand qiymati o‘zgarsa ham boshqa operand natijani mask qilishi mumkin.

Short-circuit ta’siri

Ko‘p tillarda A and B ifodasida A false bo‘lsa B umuman baholanmaydi. A or Bda A true bo‘lsa B bajarilmaydi. Coverage tool “B false” bilan “B baholanmadi” holatini farqlashi kerak.

B’ni ikki qiymatda bajarish uchun A mos holatda bo‘lishi zarur. Side effectli condition test va production mantiqini qiyinlashtiradi; predicate’lar imkon qadar sof bo‘lishi ma’qul.

Misol to‘plami

Access is_member and not suspended bo‘lsa, quyidagi holatlar foydali:

  1. member=true, suspended=false — access beriladi;
  2. member=false, suspended=false — birinchi shart false;
  3. member=true, suspended=true — ikkinchi shart natijani rad qiladi.

Bu to‘plam har conditionni true va false qiladi hamda decisionning ikki natijasini ko‘rsatadi. member=false, suspended=true short-circuit sabab ikkinchi shart baholanmasligi mumkin.

Masking

A or Bda A doim true bo‘lgan testlarda B qiymati o‘zgarsa ham decision true qoladi. Tool B’ni true va false sifatida qayd etsa condition coverage oshadi, lekin B qarorga mustaqil ta’sir qilgani isbotlanmaydi. MC/DC aynan shu mustaqil ta’sirni talab qiladi.

Safety-critical software’da MC/DC talab qilinishi mumkin, chunki barcha kombinatsiyani sinamasdan har condition rolini ko‘rsatadi. Oddiy ilovalarda branch va riskka asoslangan test ko‘pincha yetarli, ammo tanlov domain standardiga bog‘liq.

Compiler va mapping

Compiler murakkab expressionni bir nechta jump instructionga aylantiradi. Macro, pattern matching va optional chaining generated conditionlar hosil qilishi mumkin. Source-level report toolning compiler mappingiga tayanadi.

Optimized build constant conditionni olib tashlashi mumkin. Coverage odatda debug yoki maxsus instrumented buildda yig‘iladi, ammo bu production control flow bilan farq qilishi hisobga olinadi.

Test dizayniga ta’siri

Coverage gap aniq condition qaysi qiymatda bajarilmaganini ko‘rsatadi. Test faqat kombinatsiya sonini ko‘paytirmasdan, biznes ma’noli holat tanlaydi. is_admin, account_locked va feature_enabled kombinatsiyasi security policy contractini ifodalaydi.

Impossible combination domain invariant sabab yuz bermasa, test generator shu constraintni hisobga oladi. Tooldagi uncovered belgi kodning unreachable yoki ortiqcha shart ekanini ko‘rsatishi mumkin; kod va requirement qayta ko‘riladi.

Cheklov

100% condition coverage assertion sifatini ko‘rsatmaydi. Test conditionlarni bajarib, access natijasini tekshirmasa regression yashirinadi. Coverage result, expected behavior assertion va mutation testing birga tahlil qilinadi.

Bog‘liq tushunchalar

Code coverage, Branch coverage, Decision coverage, MC/DC, Boolean expression, Short-circuit evaluation, Mutation testing