如何计算MC/DC覆盖率, 怎样编写case才能覆盖

有两种coverage.一种是对需求的覆盖,一种是对代码的覆盖。对代码的覆盖包括语句覆盖、分支覆盖、条件覆盖、分支条件覆盖、LSACJ覆盖、MC/DC覆盖、路径覆盖等。

MC/DC(修订的条件/判定覆盖)(Modified Condition Decision Coverage)准则是一种实用的软件结构覆盖率测试准则, 已被广泛地应用于软件验证和测试过程中. 修正条件判定覆盖方法要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变.

condition 和 decision 的概念:

if A or B and C then
   Statement;
else
   Statement2;

A,B,C都是一个条件,而(A or B and C)叫一个Decision,如果是判定覆盖的话只需两个case就能覆盖,就是让这个decision为true和false各一次就能达到即为 0 1 1 ,  0 1 0

如果是MC/DC的话就得四个case,而且只比条件数目多一个而已,怎么计算的呢?

定义: 在每个判定中的每个条件都曾独立的影响判定的结果至少一次, (独立影响意思是在其他的条件不变的情况下,改变一个条件);

总结一句:每个条件对结果都独立起作用

比如A对结果起作用的话, B 必须为 false, C必须为 true   -- 1  0  1 和 0 0 1,     这样结果就独立受A的值影响.

同理如果B对结果独立起作用的话,A必须为false, C必须为 true, 两种情况B为true,false各一. 即为 0  1  1  和  0 0 1

而C独立对结果起作用的话就是让(A or B) 为 true, 为了减少case, 上面的case 已经含有这样的case了,我们就取A为false,B为true, 这样c独体起作用的case为: 0  1  1 和 0 1 0

可以看出每个条件各走了一次true和false, 这样三个变量条件就会有六个case, 我们看出其中里面还有两个是重复的,

 

起作用

Case序号

A

B

C

结果

A

1

1

0

1

1

2

0

0

1

0

B

3

0

1

1

1

4

0

0

1

0

C

5

0

1

1

1

6

0

1

0

0

case 2 case 4重复, case 3 case5 重复,这样去掉两个 剩四个case,我们发现我们的判定里面的条件数为N, 那么这个判定就需要N+1case,不信你试试!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值