软件测试系列-白盒测试覆盖率的问题
作者:网络转载 发布时间:[ 2015/9/24 13:55:41 ] 推荐标签:单元测试 黑盒测试
覆盖率
一、覆盖率的概念
覆盖率是用来度量测试完整性的一个手段,现在有越来越多的测试工具能够支持覆盖率测试,但是它们本身并不包含测试技术,只是测试技术有效性的一个度量。白盒测试中经常用到的覆盖率是逻辑覆盖率。
二、覆盖率的目的
覆盖率对于软件测试有着非常重要的作用,通过覆盖率我们可以知道我们的测试是否充分,我们测试的弱点在哪些方面,进而指导我们设计能够增加覆盖率的测试用例,有效的提高测试质量。
一方面覆盖率技术可以指导测试用例的设计;另一方面,可以通过覆盖率来衡量白盒测试的力度。
三、逻辑覆盖率主要有以下六种:
(1)语句覆盖;
(2)判定覆盖;
(3)条件覆盖;
(4)判定条件覆盖;
(5)条件组合覆盖;
(6)路径覆盖。
1、语句覆盖(Statement Coverage)
语句覆盖的含义是,在测试时,运行被测程序后,程序中被执行到的可执行语句的比率。
语句覆盖=(至少被执行一次的语句数量)/可执行的语句总数。
*语句覆盖是弱的一种覆盖方式。
2、判定覆盖(Decision Coverage)
判定覆盖也叫分支覆盖(Branch Coverage),含义是:在测试时,运行被测程序后,程序中所有判断语句的取真分支和取假分支被执行到的比率。
判定覆盖=(判定结果被评价的次数)/判定结果的总数。
3、条件覆盖(Condition Coverage)
条件覆盖的含义是:在测试时,运行被测程序后,所有判断语句中每个条件的可能取值(真值和假值)出现过的比率。
条件覆盖=(条件操作数值至少被评价一次的数量)/(条件操作数值得总数)
4、判定条件覆盖(Decision Condition Coverage)
判定条件覆盖也叫分支条件覆盖(Branch Condition Coverage)它的含义是:在测试时,运行被测程序后,所有判断语句中每个条件的所有可能值(为真为假)和每个判断本身的判定结果(为真为假)出现的比率。
判定条件覆盖=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果总数)
*判定条件覆盖率实际上是判定覆盖率和条件覆盖率的组合。
5、条件组合覆盖(Condition combination coverage)
条件组合覆盖的含义是,在测试时,运行被测程序后,所有语句中子条件所有可能的取值结果组合出现过的比率。
条件组合覆盖=(至少被执行到一次的条件组合)/总的可能的条件组合数。
*条件组合覆盖是除路径覆盖以外,强的一种覆盖方式。
6、路径覆盖(Path Coverage)
路径覆盖的含义是:在测试时,运行被测程序后,程序中所有可能的路径被执行过的比率。
路径覆盖=(至少被执行到一次的路径数)/总的路径数。
四、总结五种逻辑覆盖率。
1、语句覆盖是弱的一种覆盖方式。
2、条件组合覆盖是除路径覆盖以外,强的一种覆盖方式。
3、百分百的条件组合覆盖一定包含:百分百的语句覆盖、百分百的判定覆盖、百分百的条件覆盖以及百分百的判定条件覆盖;但不一定包含百分百的路径覆盖。
4、百分百的判定覆盖(分支覆盖)一定包含:百分百的语句覆盖。
5、百分百的条件覆盖不一定包含:百分百的语句覆盖。
五、举例说明。
图1
范例一:
1、分析图1(被测程序流程图)
(1)语句:有两条语句,分别为,X=X/A 和 X=X+1。
(2)判定:有两个判定,分别为(A>1)AND(B=0) 和 (A=2)OR(X>1);这两个判定,分别都有两种可能,true或者false,图中我们用F或者T来表示,所以说这个流程中判定结果的总数为四。
(3)条件:每个判定里面都包含了两个子条件,每个子条件都有两种可能性,true或者false,图中我们分别用T1 F1;T2 F2...来表示,每个判定里面有四种可能,这样,这个流程图中的条件操作数值的总数为八。
(4)判定条件:判定条件覆盖率实际上是判定覆盖率和条件覆盖率的组合。
(5)条件组合:上面我们在条件里面提到过的,每个判定里面都包含了两个子条件,每个子条件都有两种可能性,true或者false,图中我们分别用T1、F1、T2、F2...来表示,但是和条件覆盖不一样的是,每个子条件里面的两种可能性(T或者F)都要进行两两组合,即进行排列组合,那么,条件组合的总数为八种组合。分别为:T1T2,F1F2,T1F2,F1T2;T3T4,F3F4,T3F4,F3T4.
**【 这个时候大家不能混淆这两个概念,只是因为2个判定比较特殊而已,因为2乘以2和2的2次方是相等的,条件里面是八种条件,而条件组合里面是八种组合。如果一个判定里面有三个子条件的话,这一个判定里面的条件总值成为2乘以3;而条件组合是2的3次方。】
(6)路径:图1中路径共有四条,即:abd,ace,abe,acd。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11