条件覆盖
- 详述白盒测试的逻辑覆盖的条件覆盖及其优缺点:
- 条件覆盖的定义:
- 与判定覆盖的区别:
- 条件覆盖率:
- 测试实例:
- 代码:
- 优缺点:
详述白盒测试的逻辑覆盖的条件覆盖及其优缺点:
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)
条件覆盖的定义:
设计测试用例,使得判定中的每个条件至少有一次取得真值,一次取得假值。所以,不仅程序中的每个语句至少被执行一次,而且使每个判定表达式中的每个条件都取到各种可能的结果。
与判定覆盖的区别:
- 判定覆盖要求的是满足判定的每个真值和假值,而条件覆盖是要求满足每个判定中的每个条件的真值和假值。
- 条件覆盖比判定覆盖增加了对判定中所有条件的测试,对于条件来说更加全面。
条件覆盖率:
条件覆盖率=每个真假值至少出现一次/条件结果的总数
eg: 案例代码中有判定两个,条件4个,条件结果8个,假如测试用例执行8个条件结果,条件覆盖率就为100%。
测试实例:
如下图中例子所示:图中共有两个判定表达式,每个判定表达式中有两个条件,为了做到条件覆盖,应选取测试数据使得在a点有下述各种结果出现。
A>1,A<=1,B=0,B!=0
在b点有下述各种结果出现:
A=2,A!=2,X>1,X<=1
只需要用下面两组测试数据就可以达到标准:
- A=2,B=0,X=4;
满足A>1,B=0,A=2和X>1的条件,执行路径ace - A=1,B=1,x=1
满足A<=1,B!=0,A!=2和X<=1的条件,执行路径abd
上面图片和用例举例引用了:https://baike.baidu.com/item/%E6%9D%A1%E4%BB%B6%E8%A6%86%E7%9B%96/9632173?fr=aladdin
以java为例,根据上图我们可以得到以下
代码:
package kunlin;import java.util.Scanner;public class Cook {public static void main(String[] args) {//三个不定值变量A,B,XScanner sc =new Scanner(System.in);System.out.println("请输入A,B,X的值");//三个变量都是整形int A =sc.nextInt();int B =sc.nextInt();int X =sc.nextInt(); //第一个判断当A>0 和 B ==0if (A>1 && B==0) {//符合按c路线X=X/A;}else if(A==2 || X>1) {//前面第一个是if判断,所以只要符合就执行不符合进行整个b阶段//如果符合这个判断,进入e阶段X=X+1;}System.out.println("X的值:"+X);}
}
当我们输入用例的值时得到以下两个结果:
分别执行了ace 和abd两条路径。完成了两个判定,判定覆盖率100%。
优缺点:
优点:条件覆盖比判定覆盖增加了对判定中所有条件的测试,对于条件来说更加全面
缺点:但条件覆盖并不能完全保证判定覆盖。
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)