
1) 【一句话结论】测试覆盖率是测试项目覆盖设计规格的比例,合理增加有效测试项目能提升良率,需通过覆盖矩阵等工具避免测试冗余,控制成本。
2) 【原理/概念讲解】测试覆盖率(Test Coverage Rate)指测试项目(如测试用例、测试场景)覆盖设计规格(如功能、参数范围、边界条件)的比例。简单说,就像给芯片做“体检”,每个测试项目检查一个“症状”(规格点),覆盖率高意味着检查更全面,能发现更多潜在故障,减少良率损失。提升覆盖率的核心是增加能覆盖新规格点的测试项目,比如通过参数组合(如输入a、b的不同组合)、边界值分析(如输入范围的边界值)、场景扩展(如异常输入、极端条件)。避免冗余的关键是分析测试用例的覆盖矩阵,确保每个新测试用例覆盖至少一个未覆盖的规格点,不重复检查相同问题。例如,对于加法器芯片,若测试用例(0,0,0)和(0,1,1)都覆盖了“输入为0”的规格点,则冗余,应合并或删除。
3) 【对比与适用场景】
| 项目 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 测试覆盖率 | 测试项目覆盖设计规格的比例 | 反映测试的全面性,越高通常良率越高 | 芯片设计验证、量产测试 | 需结合实际故障模式,避免过度测试 |
| 测试冗余 | 测试用例重复覆盖相同规格点 | 测试成本增加,效率降低 | 量产阶段测试 | 通过覆盖矩阵分析,优化测试用例 |
4) 【示例】
假设芯片为8位加法器,设计规格:输入a、b∈[0,255],输出a+b(结果为8位)。测试项目包括:
伪代码生成测试用例:
def generate_adder_test_cases():
test_cases = []
# 正常值
test_cases.append((0, 0, 0))
test_cases.append((127, 128, 255))
# 边界值
test_cases.append((0, 255, 255))
test_cases.append((255, 0, 255))
test_cases.append((255, 255, 510)) # 超出8位范围,检查溢出
# 异常值
test_cases.append((256, 1, None)) # 超出范围,检查错误标志
return test_cases
5) 【面试口播版答案】
“测试覆盖率是指测试项目覆盖设计规格的比例,比如芯片的功能、参数、边界条件等。提升覆盖率的核心是通过增加能覆盖新规格点的测试项目,比如参数组合、边界值分析、场景扩展,但需避免冗余。具体来说,比如对于加法器芯片,除了正常值测试,还要测试边界值(输入范围的边界)和异常值(超出范围),用覆盖矩阵分析测试用例的冗余,确保每个新测试用例覆盖至少一个未覆盖的规格点,不重复检查相同问题。这样既能提升覆盖率,又能控制测试成本,最终提升良率。”
6) 【追问清单】
7) 【常见坑/雷区】