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

条件判定覆盖的定义:

设计足够多的测试用例,使被测程序中每个判定的每个条件的所有可能取值(真假)至少执行一次,并且每个判定的所有可能(真假)分支也至少执行一次 。通俗来讲,就是条件和判定覆盖的升华!

与判定覆盖、语句覆盖的关系:

满足判定覆盖就一定能够满足语句覆盖,满足条件判定覆盖就一定能够满足判定覆盖,语句覆盖及其条件覆盖,所以,条件判定覆盖是语句覆盖、条件覆盖、判定覆盖及条件判定覆盖中最全面的覆盖。

条件判定覆盖率:

条件判定覆盖率=每个判定真假值和条件真假值至少出现一次/判定结果的总数和条件结果的总数
eg: 案例代码中有判定3个,条件3个,则条件结果就有6个(每个条件结果有两个真假值),判定结果就有6个(因为每个判定结果有两个真假值),假如测试用例执行了5个条件结果,6个判定结果,则判定覆盖率就为(5+6)/(6+6)≈92%。

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)

测试实例:

我们来说一个最简单的例子:
判定如下:
x>1 && y>1
则满足条件判断覆盖的用例需要满足:
a. 判定为真
b. 判定为假
c. x>1
d. x<=1
e. y>1
f. y<=1
我们根据以上用例取得数据为:x=2 y=2 满足以上的ace x=2 y=0满足以上的bcf x=0 y=2 满足以上的bde x=0 y=0满足以上的 bdf 。
以java为例,我们可以用下面的代码进行验证:

package kunlin;

import java.util.Scanner;

public class Cook {
     
	public static void main(String[] args) {
		
		//两个不定值变量xy
		Scanner sc =new Scanner(System.in);
		System.out.println("请输入x,y的值");
		
		//两个变量都是整形
		int x =sc.nextInt();
		int y =sc.nextInt();	
		
		//判定x>1  和 y>1
		if (x>1 && y>1) {
			
			System.out.println("xy的值为正确值,且为"+x+y);
		}
		else
			System.out.println("xy的值为错误值!");
		
	}
}

当我们执行ace路径时得到正确答案:
在这里插入图片描述
当我们执行另外三条路径时:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们分别执行了这四条路径,每个判定的真假,每个条件的真假,可得测试覆盖率为100%。

优缺点:
优点:判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。
缺点:判定/条件覆盖准则的缺点是未考虑条件的逻辑情况,以上为例,我们将if (x>1 && y>1)改写为if (x>1 || y>1),在xy都取22和00的情况下,所得结果是一样的。

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值