56 lines
2.1 KiB
Markdown
56 lines
2.1 KiB
Markdown
---
|
||
title: "Test Coverage Analysis"
|
||
type: concept
|
||
tags: [testing, coverage, quality]
|
||
sources: [testing-test-results-analyzer]
|
||
last_updated: 2026-04-28
|
||
---
|
||
|
||
## Definition
|
||
|
||
测试覆盖率分析——通过量化代码被执行的比例来评估测试的全面性,识别测试缺口并按风险优先级排序改进方向。
|
||
|
||
## Coverage Dimensions
|
||
|
||
| 维度 | 说明 | 目标 |
|
||
|------|------|------|
|
||
| 行覆盖率 (Line Coverage) | 被执行代码行数 / 总代码行数 | ≥80% |
|
||
| 分支覆盖率 (Branch Coverage) | 已覆盖分支数 / 总分支数 | ≥75% |
|
||
| 函数覆盖率 (Function Coverage) | 被调用函数数 / 总函数数 | ≥90% |
|
||
| 语句覆盖率 (Statement Coverage) | 已执行语句数 / 总语句数 | ≥80% |
|
||
|
||
## Key Methods
|
||
|
||
- **Gap Analysis**:识别覆盖率 < 80% 的文件,结合文件变更频率和业务关键性计算改进优先级。
|
||
- **Risk-Based Coverage Prioritization**:按文件业务重要性 × 变更频率 × 当前覆盖率计算改进优先级。
|
||
- **Coverage Trend Tracking**:跨版本跟踪覆盖率变化,检测回归。
|
||
|
||
## Implementation (Python)
|
||
|
||
```python
|
||
# 来自 TestResultsAnalyzer 的参考实现
|
||
coverage_stats = {
|
||
'line_coverage': test_results['coverage']['lines']['pct'],
|
||
'branch_coverage': test_results['coverage']['branches']['pct'],
|
||
'function_coverage': test_results['coverage']['functions']['pct'],
|
||
'statement_coverage': test_results['coverage']['statements']['pct']
|
||
}
|
||
|
||
# 识别覆盖缺口
|
||
for file_path, file_coverage in uncovered_files.items():
|
||
if file_coverage['lines']['pct'] < 80:
|
||
gap_analysis.append({
|
||
'file': file_path,
|
||
'coverage': file_coverage['lines']['pct'],
|
||
'risk_level': assess_file_risk(file_path, file_coverage),
|
||
'priority': calculate_coverage_priority(file_path, file_coverage)
|
||
})
|
||
```
|
||
|
||
## Connections
|
||
|
||
- [[Quality-Metrics]]:覆盖率是核心质量指标之一。
|
||
- [[Defect-Prediction]]:覆盖缺口区域通常也是缺陷高发区域。
|
||
- [[Release-Readiness-Assessment]]:覆盖率是发布门控条件之一。
|
||
- [[Failure-Pattern-Analysis]]:低覆盖率与高失败率往往相关。
|