决策覆盖技术属于白盒测试,它为布尔值提供决策覆盖。此技术报告布尔表达式的真/假结果。每当语句中有两个或多个结果的可能性时,如while语句,if语句和case语句(控制流语句),它被视为决策点,因为有两个结果为true
或false
。
决策覆盖率通过使用控制流图或图表涵盖代码的每个布尔条件的所有可能结果。
通常,决策点有两个决策值,一个是true
,另一个是false
,这就是为什么大多数时候结果总数是2的原因。决策覆盖率的百分比可以通过将行使结果的数量除以结果总数并乘以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),则此代码的结果为“True”。
当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) }
这段代码的结果是:“False”,因为检查条件(a> 4)。
决策覆盖率的计算:
= ½*100 (仅在 "False" 时执行) =100/2 = 50 Decision Coverage = 50%
决策覆盖范围的结果表:
测试用例 | A的值 | 输出 | 决策覆盖范围 |
---|---|---|---|
1 | 3 | 3 | 50% |
2 | 7 | 21 | 50% |