前言
代码覆盖率,是一种通过计算测试过程中被执行的源代码占全部源代码的比例,进而间接度量软件质量的方法。它在保证测试质量的时候潜在保证实际产品的质量,可以基于此在程序中寻找没有被测试用例测试过的地方,进一步创建新的测试用例来增加覆盖率。按性质,它属于白盒测试的范畴,即主要依据源代码的内部结构来设计测试用例,通过设计不同的输入来测试软件的不同部分。常见的编程语言,如C/C++,python和Java等,都有相应的代码覆盖率测试工具。
分类
根据评价的标准和方法不同,代码覆盖率测试又可以细分为语句覆盖(statement coverage)、判定覆盖(decision coverage)、条件覆盖(condition coverage)、条件判定组合覆盖(condition decision coverage)、路径覆盖(path coverage)、多条件覆盖(multi-condition coverage)和修正条件判定覆盖(modified condition / decision coverage)等。
针对不同测试层次,代码覆盖率主要有单元级或架构级。前者较为基础,而且使用更为方便,所以应用非常广泛。单元级测试常用的指标主要有:语句覆盖、判定覆盖和修正条件判定覆盖。接下来对这三种评价指标进行详细介绍。
- 语句覆盖
它是最常用也是最简单的一种代码覆盖率度量方式,就是度量被测代码中每个可执行语句是否被执行到了。“可执行语句”,并不包括C++的头文件声明、代码注释和空行等。但是,单独一行的花括号