白盒测试用例设计方法之逻辑覆盖

逻辑覆盖

通过对程序逻辑结构的遍历实现程序的覆盖。

示例(C语言):

int function1 (bool a,bool b,bool c)
{
int x;
x=0;
if (a && (b || c))
	x=1;
return x;
}

流程图如下:

Created with Raphaël 2.2.0 开始 x=0 (a) AND (b OR c) x=1 结束 yes no

语句覆盖(SC)

statement coverage

  • 覆盖:每条语句至少应该执行一次。
  • 测试用例:a=T,b=T,c=T
  • 特点:程序执行逻辑的覆盖很低。如果判断条件写成a || (b || c),测试用例仍可用,无法发现逻辑错误。很弱的逻辑覆盖。

判定覆盖(DC)

decision coverage

  • 覆盖:程序中的每个判定获得每一次可能的结果至少一次。
  • 测试用例:
    • a=T,b=T,c=T
    • a=F,b=F,c=F
  • 特点:满足了判定覆盖的同时满足了语句覆盖。如果判断条件写成a || (b || c),测试用例仍可用,无法发现逻辑错误。比语句覆盖更强一些。

条件覆盖(CC)

condition coverage

  • 覆盖:每一个判定语句的每个逻辑条件的可能值至少满足一次。

  • 测试用例:

    • a=T,b=T,c=T
    • a=F,b=F,c=F

    或者

    • a=T,b=F,c=F
    • a=F,b=T,c=T
  • 特点:参考第二组用例,达到条件覆盖不一定达到判定覆盖。

条件判定组合覆盖(CDC)

  • 覆盖:判定中每个条件的所有可能至少出现一次,且每个判定本身的判定结果也至少出现一次。
  • 测试用例:
    • a=T,b=T,c=T
    • a=F,b=F,c=F
  • 特点:如果判断条件写成a || (b || c),测试用例仍可用,无法发现逻辑错误。存在一定的缺陷。

多条件覆盖/条件组合覆盖(MCC)

  • 覆盖:每个判定中条件的各种可能组合都至少出现一次。
  • 测试用例:3个逻辑条件,每个条件2种取值,2 3=8
    • a=T,b=T,c=T
    • a=T,b=T,c=F
    • a=T,b=F,c=T
    • a=T,b=F,c=F
    • a=F,b=T,c=T
    • a=F,b=F,c=T
    • a=F,b=T,c=F
    • a=F,b=F,c=F
  • 特点:程序判定语句较多时,测试用例的数目非常大**。满足多条件覆盖的测试用例一定满足判定覆盖,条件覆盖,和条件判定组合覆盖。**

修订判定条件覆盖(MCDC)

  • 覆盖:
    MC/DC首先要求实现条件覆盖、判定覆盖,在此基础上,对于每一个条件C,要求存在符合以下条件的两次计算:

    • 条件C所在判定内的所有条件,除条件C外,其他条件的取值完全相同;
    • 条件C的取值相反;
    • 判定的计算结果相反。
  • 测试用例:a&(b|c)

    • a=T,b=T,c=T
    • a=F,b=T,c=T
    • a=T,b=T,c=F
    • a=F,b=T,c=F
    • a=F,b=F,c=T
    • a=F,b=F,c=F
  • 特点:每个条件都要独立影响判定结果。

参考:http://www.kailesoft.com/help/testbox/mcdc.htm
《软件评测师教程》

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值