知识卡片
两种覆盖互补
内容
输入覆盖从API契约出发,代码覆盖从实现执行路径出发;前者指导测试设计,后者校验测试是否真的触达代码。发散:只追求代码覆盖率,容易测到代码却没测到需求。
参考来源
- 位置:《你真的会写代码吗-2021》第6章《别对我撒谎:通过测试保证可靠性》"6.1.1 测试的覆盖率"(源文件:_epub-src/OEBPS/Text/0016.xhtml)
- 结论依据:原文明确"基于输入的覆盖率则忽略了被测程序的内部,只关注其API",而"基于代码的覆盖率……传统上是与白盒测试联系在一起的",并说明"这两种类型的覆盖率是相辅相成的……把基于输入的覆盖率作为设计目标,而把基于代码的覆盖率作为测试计划本身的一种验证形式"。
- 原始内容:基于代码的覆盖率指的是给定测试集至少执行一次的源代码百分比……基于输入的覆盖率则忽略了被测程序的内部,只关注其API……这两种类型的覆盖率是相辅相成的……你将把基于输入的覆盖率作为设计目标,而把基于代码的覆盖率作为测试计划本身的一种验证形式。