白盒测试之逻辑覆盖

PS:课程笔记(里面有余九九课本里的举例)

首先, 逻辑覆盖是一种基于程序内部逻辑结构的动态白盒测试方法;其次,根据逻辑覆盖的强度由低到高可以分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖

语句覆盖(可执行语句)

在使用语句覆盖设计测试用例时,要求程序中可执行的语句必须至少被执行一次。它只关注每个判定表达式的最终结果逻辑值(Y或N),并不关注判定表达式中不同条件的取值情况,所以,某些测试用例是无法检测出错误的(eg:如果判定表达式是“if((x>0)&&(y>0))”错将“&&”写成“||”输入“x=1,y=1”程序结果还是Y,就无法检测出错误)。

设计测试用例:

void test(int x,int A,int B){
    if(A>1)&&(B==0)     //语句①
        x=x/A;          //语句②
    if(A==2)||(x>1)     //语句③
        x++;            //语句④
}
测试用例 输入数据 (A>1)&&(B==0)① (A==2)||(x>1)③ 覆盖语句
x A B
Test Case1 1 2 0 Y Y ②④

判定覆盖(判定表达式)

又称分支覆盖,要求程序中每个判定表达式的Y和N分支至少被执行一次。

设计测试用例:

测试用例 输入数据 (A>1)&&(B==0)① (A==2)||(x>1)③ 覆盖语句
x A B
Test Case1 1 2 0 Y Y ②④
Test Case2 1 3 1 N N
或者
测试用例 输入数据 (A>1)&&(B==0)① (A==2)||(x>1)③ 覆盖语句
x A B
Test Case1 1 3 0 Y N
Test Case2 2 2 2 N Y

条件覆盖(判定条件)

要求程序中每个判定表达式里的每个判定条件的Y和N都要至少被执行一次。

设计测试用例(只写一组)

测试用例 输入数据 (A>1) (B==0) (A==2) (x>1) 覆盖语句
x A B
Test Case1 1 2 0 Y Y Y N ②④
Test Case2 2 1 1 N N N Y
# 判定/条件覆盖(里外) 要求每个判定表达式和每个判定表达式里的每个判定条件的Y和N都需要至少被执行一次。

设计测试用例(只写一组)

测试用例 输入数据 (A>1)&&(B==0)① (A==2)||(x>1)③ (A>1) (B==0) (A==2) (x>1) 覆盖语句
x A B
Test Case1 2 2 2 N Y N N Y Y
Test Case2 1 4 0 Y N Y Y N N

条件组合覆盖(里外组合)

要求每个判定表达式里的判定条件的Y和N的组合(就是1下面有11和12两个条件,那么组合有“YY”,"YN","NY","NN"四种组合)至少被执行一次。

设计测试用例(只写一组)

测试用例 输入数据 (A>1) (B==0) (A==2) (x>1) 覆盖语句
x A B
Test Case1 4 2 0 Y Y Y Y ②④
Test Case2 1 1 1 N Y N N
Test Case3 2 2 1 Y N Y N
Test Case4 2 1 1 N N N Y

路径覆盖(路径)

要求所有路径至少被执行一次。(对于较复杂的循环结构程序很难做到)

设计测试用例(只写一组)

————————————————
版权声明:本文为CSDN博主「天上星水中月」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/shanliyiyeren/article/details/120068034

posted @ 2023-03-19 11:32    阅读(124)  评论(0编辑  收藏  举报