详述白盒测试的逻辑覆盖的条件覆盖及其优缺点

详述白盒测试的逻辑覆盖的条件覆盖及其优缺点:

条件覆盖的定义:

设计测试用例,使得判定中的每个条件至少有一次取得真值,一次取得假值。所以,不仅程序中的每个语句至少被执行一次,而且使每个判定表达式中的每个条件都取到各种可能的结果。

与判定覆盖的区别:

  1. 判定覆盖要求的是满足判定的每个真值和假值,而条件覆盖是要求满足每个判定中的每个条件的真值和假值。
  2. 条件覆盖比判定覆盖增加了对判定中所有条件的测试,对于条件来说更加全面。

条件覆盖率:

条件覆盖率=每个真假值至少出现一次/条件结果的总数
eg: 案例代码中有判定两个,条件4个,条件结果8个,假如测试用例执行8个条件结果,条件覆盖率就为100%。

测试实例:

如下图中例子所示:图中共有两个判定表达式,每个判定表达式中有两个条件,为了做到条件覆盖,应选取测试数据使得在a点有下述各种结果出现。
A>1,A<=1,B=0,B!=0
在b点有下述各种结果出现:
A=2,A!=2,X>1,X<=1
只需要用下面两组测试数据就可以达到标准:

  1. A=2,B=0,X=4;
    满足A>1,B=0,A=2和X>1的条件,执行路径ace
  2. 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,X
		Scanner 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 ==0
		if (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%。

优缺点:

优点:条件覆盖比判定覆盖增加了对判定中所有条件的测试,对于条件来说更加全面
缺点:但条件覆盖并不能完全保证判定覆盖。

发布了10 篇原创文章 · 获赞 34 · 访问量 1145

猜你喜欢

转载自blog.csdn.net/hanhanwanghaha/article/details/105653347