测试覆盖率常被用来衡量测试的充分性和完整性,也是测试有效性的一个度量。敏捷开发的大潮之下,如何在快速迭代的同时保证对被测代码的覆盖度和产品质量,是一个非常有挑战性的话题。本文依次介绍代码覆盖率的基本知识、工具和应用场景。
代码覆盖率的基本知识
概念
代码覆盖率测试技术是一种常见的白盒测试技术,是衡量软件测试工作充分性和完整性的重要指标之一。代码覆盖率指在测试的时候已经被测试过了的代码占准备被测试总代码量的比例和程度,它关注的是在执行测试用例时,有哪些代码被执行到了,有哪些代码没有被执行到。
代码覆盖率的指标
简单介绍最常用的几种代码覆盖率指标。
行覆盖率:又称为语句覆盖率,指已经被执行到的语句占总的可执行语句(不包含类似 C++ 的头文件声明、代码注释、空行等等)的百分比。这是最常用也是要求最低的覆盖率指标。实际项目中通常会结合判定覆盖率或者条件覆盖率一起使用。
判定覆盖率:又称分支覆盖率,用以度量程序中每一个判定的分支是否都被测试到了,即代码中每个判断的取真分支和取假分支是否各被覆盖至少一次。比如,对于 if(a>0 && b>0),就要求覆盖“a>0 && b>0”为 TURE 和 FALSE 各一次。
条件覆盖率:判定中的每个条件的可能取值至少满足一次,度量判定中的每个条件的结果 TRUE 和 FALSE 是否都被测试到了。比如,对于 if(a>0 && b>0),就要求“a>0”取 TRUE 和 FALSE 各一次,同时要求“b>0”取 TRUE 和 FALSE 各一次。
<