修正的判定条件覆盖例题_语句覆盖、判断覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖、修正条件覆盖...

本文详细介绍了程序测试中的不同覆盖标准,包括语句覆盖、判断覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正条件覆盖,并通过一个具体的例子展示了如何设计测试用例以满足这些覆盖要求。特别强调了修正条件覆盖,要求每个条件对判定结果的影响独立,以确保更严格的测试覆盖率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int function(bool a,bool b,boolc){intx;

x=0;if(a&&(b||c)){

x=1;returnx;

}

}

51ca6b0f76c64bddc4cfdb23e05cafa2.png

1、语句覆盖(SC)

选择足够多的测试数据,使得被测程序中的每条语句至少执行一次。

测试用例:a=T,b=T,c=T

2、判断覆盖(DC)

设计足够的测试用例,使得程序中的每个判定至少都获得一次真值或假值。或者使得程序中的每一个取真分支和取假分支至少经历一次,因此判定覆盖又称为分支覆盖。

序号

a

b

c

a&&(b||c)

a||(b||c)

判定覆盖率

1

T

T

T

T

T

50

2

F

F

F

F

F

50

上述两组测试用例不仅满足了判定覆盖,而且满足了语句覆盖,从这一点看,判定覆盖要比语句覆盖更强一些,但是同样的,假如这一程序段中判定的逻辑运算有问题。判定的第一个运算符  &&  错写成运算符  || 。或者第二个运算符 ||  错写成运算符 &&,这时使用上面的测试用例可以达到100%的判定覆盖,仍然无法发现上述的逻辑问题。

3、条件覆盖(CC)

构造一组测试用例,使得每一判定语句中,每个逻辑条件的可能是至少满足一次。

用例一:

a=F,b=T,c=F

a=T,b=F,c=T

用例一在满足条件覆盖的同时,把判定的两个分支也覆盖了。是否可以说,达到了条件覆盖就必然实现了判定覆盖呢?

用例二:

a=F,b=T,c=T

a=T,b=F,c=F

用例二覆盖了条件的测试用例并没有覆盖分支。

4、条件判定组合覆盖(CDC)

设计足够的测试用例,使得判定中的每个条件的所有可能真或假,至少出现一次,并且每个判定本身的判定结果真或假也至少出现一次。

bb41f4fb02256446390e8c63067224be.png

5、多条件覆盖(MCC)

设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然,满足多条件覆盖的测试用例是一定满足,判定覆盖、条件覆盖、条件判定组合覆盖的。

测试用例指数级增加(2**conditions)

4101d574dd87d1a1fff123c020d6f4a2.png

6、修正条件覆盖(MCDC)

它要求满足两个条件,首先,每一个程序模块的入口和出口都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次程序的判定被分解为通过逻辑操作符(and、or)连接的bool条件,每个条件对于判定的结果值是独立的。

ff0af1ff6b0838740613a7da46a1a640.png

从表中我们可以看出,布尔变量a可以通过用例1和5达到MCDC的要求(用例2和6或者用例3和7也可以满足相应要求)。变量b也可以通过用例2和4 达到MCDC的要求。变量c可以通过用例3和4达到MCDC的要求。因此用例集{1,2,3,4,5}即可满足MCDC的要求。显而易见,这不是唯一的用力结合

a  1,5 (TF)        2,6(TF)       3,7(TF)       4,8(FF)  ---->符合条件:1,5 (TF)        2,6(TF)       3,7(TF)

b   1,3 (TT)       2,4(TF)       5,7(FF)       6,8(FF)  ---->符合条件:  2,4(TF)

c   1,2(TT)        3,4(TF)       5,6(FF)       7,8(FF)  ---->符合条件:  3,4(TF)

用例集:{1,2,3,4,5}

{2,3,4,6}

{2,3,4,7}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值