条件判定覆盖的定义:
设计足够多的测试用例,使被测程序中每个判定的每个条件的所有可能取值(真假)至少执行一次,并且每个判定的所有可能(真假)分支也至少执行一次 。通俗来讲,就是条件和判定覆盖的升华!
与判定覆盖、语句覆盖的关系:
满足判定覆盖就一定能够满足语句覆盖,满足条件判定覆盖就一定能够满足判定覆盖,语句覆盖及其条件覆盖,所以,条件判定覆盖是语句覆盖、条件覆盖、判定覆盖及条件判定覆盖中最全面的覆盖。
条件判定覆盖率:
条件判定覆盖率=每个判定真假值和条件真假值至少出现一次/判定结果的总数和条件结果的总数
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宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
如有转载,请注明出处(如不注明,盗者必究)