(MC/DC :ModifiedCondition/Decision Coverage)程序中的每个入口点和出口点至少被调用一次;判定中每个条件的所有取值至少出现一次;每个判定的所有可能结果至少出现一次;每个条件都能独立地影响判定的结果,即在其它所有条件不变的情况下改变该条件的值,使得判定结果改变。
通过多次计算MC/DC的覆盖率,现总结一下两点快速计算结果的方法:
1:有多个IF语句,并且没有嵌套关系。
只需要得到IF语句中所有不重复的条件个数n,然后加1。就是结果值
例如:
if(A and B)
{
section;
}
if(C and D)
{
section;
}
有A, B, C, D 四个条件,所以n = 4
则最终结果为 n+1 = 5
n是不重复条件的个数,如果有重复的条件则只计数一个
例如:
if(A and B)
{
section;
}
if(A and D)
{
section;
}
这个例子中有两个一样的条件A,只计数一次,所以n=3
最终结果为n+1 = 4
2:多个IF语句,有嵌套关系。
那么就分别计算每个IF语句的MC/DC的值,取最大值作为多个有嵌套关系IF语句的 MC/DC的值
例如:
if(A and B or C)
{
if(E and F)
{
section;
}
}
第一个if的 条件个数n = 3 , mc/dc的值为 n+1 = 4;
第二个if的 条件个数n = 2 , mc/dc的值为 n+1 = 3;
取最大值,则整体的mc/dc的值为4;