决策覆盖测试


决策覆盖测试(Decision Coverage Testing)

决策覆盖技术属于白盒测试,它为布尔值提供决策覆盖。该技术报告布尔表达式的真假结果。当 do while 语句、if 语句和 case 语句(控制流语句)等语句有可能产生两个或多个结果,就将其视为决策点,因为有两个结果要么真要么假。

决策覆盖通过使用控制流图或图表涵盖了代码的每个布尔条件的所有可能结果。

通常,一个决策点有两个决策值,一个为真,另一个为假,这就是为什么大多数时候结果总数为两个的原因。决策覆盖的百分比可以通过将执行结果的数量除以结果的总数再乘以 100 得出。

白盒测试链路中的决策覆盖技术

在这种技术中,很难获得 100% 的覆盖率,因为有时表达式会变得复杂。因此,有几种不同的方法可以报告决策覆盖率。所有这些方法都涵盖了最重要的组合,并且与决策覆盖非常相似。这些方法的好处是增强了控制流的灵敏度。

我们可以找到决策覆盖的数量如下。

考虑应用于决策覆盖技术的代码:

Test (int a)    
{   
If(a>4)   
a=a*3   
Print (a)   
}

场景 1: a 的值为 7(a=7)

Test (int a=7)   
{ if (a>4)   
a=a*3   
print (a)   
}

黄色突出显示的代码是已执行的代码。如果检查条件 (a>4),则此代码的结果为“真”。

a为7时的控制流图。

白盒测试链路中的决策覆盖技术

决策覆盖率百分比的计算:

白盒测试链路中的决策覆盖技术

Decision Coverage = ½*100  (Only "True" is exercised)  
                    =100/2  
                    = 50  
Decision Coverage is 50%

场景 2: a 的值为 3(a=3)

Test (int a=3)   
{ if (a>4)   
a=a*3   
print (a)   
}

将执行以黄色突出显示的代码。这段代码的结果是?假?如果检查条件 (a>4)。

a值为3时的控制流图

白盒测试链路中的决策覆盖技术

决策覆盖率百分比的计算:

白盒测试链路中的决策覆盖技术

= ½*100  (Only "False" is exercised) <br>  
=100/2   
= 50  
Decision Coverage = 50%

决策覆盖结果表:

Test Case Value of A Output Decision Coverage
1 3 3 50%
2 7 21 50%