Purpose
Unit Test Coverage shows a percentage of a source code covered by unit tests. It is a mix of Line coverage and Condition coverage. The metric can be also calculated for a new code only.
How metric helps
Unit Test Coverage may be a guide for indicating a lack of coverage via Automated Testing - just because Unit Testing is the essential part of the Testing Pyramid. A trend helps to understand how a coverage is changing over time, if it is actually growing or falling and how those trends correlate with plans/investments about appropriate development efforts related to Unit Tests. Lack of coverage is typically a key obstacle for implementing the Continuous Integration and Continuous Delivery (CI/CD) on a project.
Metric:
- shows a percentage of a source code covered by unit tests;
- shows quality of application;
- shows quality of testing;
- shows how the project is ready for implementation of CI/CD;
- shows if the projects meets the industry quality standards;
- highlights the risk of bugs being detected at a later stage of development;
- helps to understand how much of your source is tested;
- shows the quality of test suite.
TOP-5 problems metric identifies
- No focus on quality of software
- Quality Debt / Tech Debt / EngX processes are not included into delivery
- There is no Test Plan and/or Strategy
- Too many defects are found during manual and / or automated testing
- Team misbalance (skills ratio)
How metric works
Chart overview
Chart shows Unit Tests Coverage in %:
Calculation
Unit Test Coverage = (CT + CF + LC) / (2*B + EL),
where
- CT = conditions that have been evaluated to 'true' at least once
- CF = conditions that have been evaluated to 'false' at least once
- LC = covered lines = lines_to_cover - uncovered_lines
- B = total number of conditions
- EL = total number of executable lines (lines_to_cover)
RAG thresholds: Red <= 40%, Amber > 40%, Green > 80 %.
Unit Test Coverage for a New Code, % calculation is Identical to Unit Test Coverage but restricted to new/updated source code.
Data source
Data for the metric can be collected from Sonar.