测试覆盖率及其特点
测试覆盖率的含义
测试覆盖率既不是测试的一种方法,而是衡量测试完整性的一种手段。通过测试覆盖率我们可以知道测试是否充分,还存在哪些潜在的风险和弱点,指导测试人员有目的补充增加覆盖率的测试用例。当然,也不用一味的追求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上下文数)