分支覆盖技术用于覆盖控制流图的所有分支。它至少涵盖决策点的每个条件的所有可能结果(真和假)。分支覆盖技术是一种白盒测试技术,可确保每个决策点的每个分支都必须执行。
然而,分支覆盖技术和决策覆盖技术非常相似,但两者之间存在关键差异。决策覆盖技术涵盖每个决策点的所有分支,而分支测试涵盖代码的每个决策点的所有分支。
换句话说,分支覆盖遵循决策点和分支覆盖边缘。许多不同的指标可用于查找分支覆盖范围和决策覆盖范围,但一些最基本的指标是:在程序执行期间查找程序的百分比和执行路径。
与决策覆盖一样,它也使用控制流图来计算分支数。
有几种方法可以计算分支覆盖率,但寻路是最常用的方法。
在此方法中,执行分支的路径数用于计算分支覆盖范围。分支覆盖技术可用作决策覆盖的替代方案。在某处,它没有被定义为单独的技术,但它不同于决策覆盖,并且是测试控制流图的所有分支所必需的。
让我们用一个例子来理解它:
Read X
Read Y
IF X+Y > 100 THEN
Print "Large"
ENDIF
If X + Y<100 THEN
Print "Small"
ENDIF
这是采用两个变量X和Y以及两个条件的基本代码结构。如果第一个条件为真,则打印“Large”,如果为假,则转到下一个条件。如果第二个条件为真,则打印“Small”。
控制代码结构的流程图
在上图中,描绘了代码的控制流程图。在第一种情况下,通过“Yes”决定,路径为A1-B2-C4-D6-E8,覆盖边数为1,2,4,5,6和8,但边缘3和7未覆盖 在这条路径上。为了覆盖这些边缘,必须遍历“No”决定。在“No”判定的情况下,路径是A1-B3-5-D7,并且覆盖边缘的数量是3和7。因此,通过穿过这两条路径,所有分支都覆盖。
Path 1 - A1-B2-C4-D6-E8
Path 2 - A1-B3-5-D7
Branch Coverage (BC) = Number of paths
=2
用例 | 覆盖的分支 | 路径 | 分支覆盖 |
---|---|---|---|
Yes | 1, 2, 4, 5, 6, 8 | A1-B2-C4-D6-E8 | 2 |
No | 3,7 | A1-B3-5-D7 | 2 |