
Here’s a comprehensive list of the main types of code coverage metrics used in software testing, ranging from basic to advanced:
✅ 1. C0: Line Coverage (Statement Coverage)
- What it measures: Whether each line of code has been executed.
- Goal: Make sure all lines run at least once.
- Example:
if is_valid(user): # Covered if condition is evaluated send_email(user) # Covered if executed
✅ 2. C1: Branch Coverage (Decision Coverage / Condition Coverage)
- What it measures: Whether each decision (like
if
,else
,case
, loop conditions) has been evaluated bothtrue
andfalse
. - Goal: Ensure all branches of control structures are tested.
✅ 3. C2: Path Coverage
- What it measures: Whether all possible execution paths through a function are executed.
- Goal: Ensure every unique route through the code is tested.
- Note: Path coverage grows exponentially with complexity, so it’s often impractical for large methods.
✅ 4. Condition Coverage (or Predicate Coverage)
- What it measures: Whether each boolean sub-expression in a decision has been evaluated to both
true
andfalse
. - Example:
if (A && B)
- You must test:
- A = true, B = false
- A = false, B = true
- A = true, B = true
- A = false, B = false
- You must test:
✅ 5. Modified Condition/Decision Coverage (MC/DC)
- What it measures: Whether each condition in a decision has been shown to independently affect the outcome of that decision.
- Used in: Aviation, automotive, medical systems (critical systems testing).
- Example:
- For
if (A && B)
, test cases must show that togglingA
while keepingB
fixed changes the decision result—and vice versa.
- For
✅ 6. Function Coverage
- What it measures: Whether each function or method is called during execution.
- Useful for: High-level view, especially in unit testing.
✅ 7. Loop Coverage
- What it measures: Whether loops are executed:
- Zero times (e.g. empty loop case)
- One time
- Multiple times
- Example:
for i in range(n): print(i)
- Test with
n = 0
,n = 1
, andn > 1
.
- Test with
✅ 8. Call Coverage
- What it measures: Whether function calls between modules/classes are exercised.
- Used for: Integration-level or system-level tests.
✅ 9. Exception Coverage
- What it measures: Whether exception-handling code is covered (e.g.
try
,catch
,finally
blocks). - Goal: Ensure error paths are tested.
✅ 10. Data Flow Coverage
- What it measures: Tracks variables to see:
- Where they’re defined (assigned),
- Where they’re used (referenced),
- And whether they’re used correctly.
- Types include:
- Definition-use (DU) chains
- All-defs, all-uses, all-paths
✅ 11. Toggle Condition Coverage
- What it measures: Ensures that each condition’s change (toggle from true to false or vice versa) influences the outcome at least once.
Summary Table
Metric | Focus Area | Practical Use |
---|---|---|
C0 (Line Coverage) | Statements | Basic test coverage |
C1 (Branch Coverage) | Conditions/branches | Ensures if/else tested |
C2 (Path Coverage) | Execution paths | Exhaustive, mostly theoretical |
Condition Coverage | Boolean sub-conditions | Logic safety |
MC/DC | Independence of conditions | Safety-critical industries |
Function Coverage | Methods/functions | High-level view |
Loop Coverage | Loop bodies | Loop logic correctness |
Call Coverage | Inter-module function calls | Integration testing |
Exception Coverage | Error-handling code | Robustness validation |
Data Flow Coverage | Variable definition/use paths | Detects potential bugs or dead code |
Would you like a diagram or sample report showing how these look in real tools like SonarCloud, JaCoCo, or Istanbul?
I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Do you want to learn Quantum Computing?
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND