测试覆盖率及其特点

测试覆盖率的含义

测试覆盖率既不是测试的一种方法,而是衡量测试完整性的一种手段。通过测试覆盖率我们可以知道测试是否充分,还存在哪些潜在的风险和弱点,指导测试人员有目的补充增加覆盖率的测试用例。当然,也不用一味的追求100%的覆盖率,因为这不仅提高了成本,而且即便覆盖率达到了100%也仍会有未被用例设计到潜在BUG。

白盒测试覆盖率

白盒测试覆盖率一般是逻辑覆盖率,常见的逻辑覆盖率有:语句覆盖率、判定覆盖率、条件覆盖率、判定条件覆盖率、条件组合覆盖率、路径覆盖率等。

语句覆盖率

语句覆盖率=(至少被执行一次的语句)/(总的语句数量)

特点:即使语句覆盖率达到100%,仍有可能对判定或者条件有遗漏。

判定覆盖率

判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)

特点:即使判定覆盖率达到100%,仍有可能对条件有遗漏。

条件覆盖率

条件覆盖率=(条件操作值至少被评价一次的数量)/(条件操作值的总数)

特点:即使条件覆盖率达到100%,仍有可能对判定有遗漏。

判定条件覆盖率

条件覆盖率=(条件操作值或判定结果至少被评价一次的数量)/(条件操作值的总数+判定结果的总数)

特点:即使判定条件覆盖率达到100%,仍有可能对条件组合有遗漏。

条件组合覆盖率

条件覆盖率=(被至少执行一次的条件组合)/(总的可能的条件组合的数量)

特点:即使条件组合覆盖率达到100%,仍有可能对路径有遗漏。

路径覆盖率

条件覆盖率=(被至少执行一次的路径数目)/(总的路径数目)

特点:即使路径覆盖率达到100%,仍有可能对条件有遗漏。

实际中,路径覆盖率常用来衡量基本路径的测试方法的结果。

基本路径测试方法

1.画出程序的程序流程图

测试覆盖率及其特点

2.将程序流程图转化成控制流图

测试覆盖率及其特点

3.通过控制流图计算复杂度

复杂度=控制流图节点+1

上图例子中,复杂度=3+1=4

4.写出基本路径

路径1:28→30→34→56 路径2:28

→30→39→42→48→56

路径3:28→30→39→42→44→56

路径4:28→30→39→53→56

灰盒测试覆盖率

函数覆盖率

函数覆盖率=(至少被执行一次的函数数量)/(系统中函数的总数)

接口覆盖率

接口覆盖率=(至少被执行一次的接口数量)/(系统中函数的接口)

黑盒测试覆盖率

需求覆盖率

需求覆盖率=(被验证的需求数量)/(需要验证的需求数量)

面向对象测试覆盖率

基于继承的上下文覆盖率

基于继承的上下文覆盖率=(累加在每个上下文内被执行到的判定结果数)/(上下文结果判定总数X上下文数)

基于状态的上下文覆盖率