动态白盒测试——逻辑覆盖测试法

本文详细介绍了逻辑覆盖测试法的六种类型:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖,并通过代码示例解释了每种覆盖方法的执行路径和测试用例设计,强调了它们在确保程序逻辑正确性方面的局限性。
摘要由CSDN通过智能技术生成

逻辑覆盖测试法

定义

以程序内部的逻辑结构为基础的用例设计方法,它通过对程序逻辑结构的遍历实现程序的覆盖。
逻辑覆盖测试法分为:语句覆盖、判定覆盖(分支覆盖)、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖六种。

//以下代码用于测试六种逻辑覆盖测试法
IntlogicExample(int x, int y){
	int magic=0;
	if(x>0&&y>0)
		magic=x + y + 10;	  //语句1
	else			
		magic = x + y - 10;  //语句2
	
	if(magic<)		
		magic=0;			//语句3
		return magic;		//语句4
}

代码流程图如下
在这里插入图片描述

语句覆盖

定义

语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每条语句至少被执行一次。

实例

测试用例编号输入数据预期输出覆盖语句
CASE1x=3 y=3magic=16语句1、4
CASE2x=-3 y=0magic=0语句2、3

(测试用例不唯一)
在这个实例中,无法判断运算中逻辑关系错误。当第一个判断语句if(x>0&&y>0)被错写成if(x>0||y>0)也能达到100%的语句覆盖,所以语句覆盖不能发现上述的逻辑错误。

判定覆盖

满足判定覆盖,则满足语句覆盖。

定义

判定覆盖,又称”分支覆盖“;要求设计足够多的测试用例,运行被测程序,使得程序中每个判断的”真“和”假“都至少被执行一次。

实例

在本例共有两个判断条件:if(x>0&&y>)if(magic<0)

测试用例编号输入数据预期输出执行路径
CASE1x=3 y=3magic=16b–>c–>e
CASE2x=-3 y=0magic=0a–>c–>d–>e

通过着两个测试用例,两个判断的真、假分支都已经被执行过,所以满足了判定覆盖的标准。
在这个实例中,无法判断运算中逻辑关系错误。当第一个判断语句if(x>0&&y>0)被错写成if(x>0||y>0)也能达到100%的语句覆盖,所以判定覆盖也无法发现上面的逻辑错误。

条件覆盖

定义

条件覆盖要求设计足够多的测试用例,运行被测程序,使得判定中的每个条件获得各种可能的结果;即每个条件至少有一次为真,有一次为假。

实例

本例共有两个判断条件:if(x>0&&y>)if(magic<0)共计三个条件x>0、y>0、magic<0

测试用例编号输入数据预期输出执行路径
CASE1x=3 y=0magic=0a–>c–>d–>e
CASE2x=-3 y=15magic=2a–>c–e

通过这两个测试用例,三个条件的各种可能取值都满足了一次,达到了100%条件覆盖的标准。
条件覆盖职能保证每个条件至少有一次为真,而不考虑所有的判定结果。因此条件覆盖不能保证满足判定覆盖。

判定-条件覆盖

同时满足判定覆盖和条件覆盖

定义

判定-条件覆盖要求设计足够多的用例,运行被测程序,使得被测程序中的每个判断本身的结果(真、假)至少满足一次,同时,每个逻辑条件的可能值也至少满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。

实例

测试用例编号输入数据预期输出执行路径
CASE1x=3 y=3magic=16b–>c–e
CASE2x=-3 y=0magic=0a–>c–>d–>e

通过这两个测试用例,所有条件的可能取值都满足了一次,而且所有的判断本身的判定结果也都满足了一次。
判定-条件覆盖满足了判定覆盖准则和条件覆盖准则,弥补了二者的不足。但未考虑条件组合的情况。

条件组合覆盖

条件组合覆盖同时满足语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖

定义

条件组合覆盖要求设计足够多的测试用例,运行被测程序,使得被测程序中每个判定中条件结果的所有可能组合至少执行一次。

其测试用例需要注意三点:
1. 条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合;
2. 不同的判断语句内的条件取值之间无须组合;
3. 对于单条件的判断语句,只需要满足自己所有的取值即可。

实例

测试用例编号输入数据预期输出执行路径
CASE1x=3 y=3magic=16b–>c–e
CASE2x=-3 y=0magic=0a–>c–>d–>e
CASE3x=3 y=0magic=0a–>c–>d–>e
CASE4x=-3 y=15magic=2a–>c–>e

通过这四个测试用例,程序中所有条件取值的组合都被满足了一次。

路径覆盖

100%满足路径测试,一定能100%满足判定覆盖标准,单并不一定能100%满足条件覆盖,也就不能满足100%条件组合覆盖。

定义

路径覆盖要求设计足够的测试用例,运行被测程序,覆盖程序中所有可能的路径。

实例

测试用例编号输入数据预期输出执行路径
CASE1x=3 y=3magic=16b–>c–e
CASE2x=-3 y=0magic=0a–>c–>d–>e
CASE3x=-3 y=15magic=2a–>c–>e

本例中共有4条路径,其中路径a-->c-->e不可能实现,通过这三个测试用例,所有可能的路径都被满足了一次。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值