决策覆盖测试
决策覆盖测试
决策覆盖技术属于白盒测试,它为布尔值提供决策覆盖。该技术报告布尔表达式的真假结果。当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%
Decision Coverage结果表:
测试用例 |
A 的值 |
输出 |
决策覆盖 |
1 |
3 |
3 |
50% |
2 |
7 |
21 |
50% |