分支覆盖测试

17 Mar 2025 | 阅读 2 分钟

分支覆盖技术用于覆盖控制流程图的所有分支。 它至少覆盖每个决策点条件的各种可能结果(真和假)。 分支覆盖技术是一种白盒测试技术,它确保每个决策点的每个分支都必须执行。

但是,分支覆盖技术和判定覆盖技术非常相似,但两者之间存在一个关键区别。判定覆盖技术覆盖每个决策点的所有分支,而分支测试覆盖代码的每个决策点的所有分支。

换句话说,分支覆盖遵循决策点和分支覆盖边。 许多不同的指标可用于查找分支覆盖和判定覆盖,但一些最基本的指标是:在程序执行期间查找程序的百分比和执行路径。

与判定覆盖类似,它也使用控制流程图来计算分支数。

Branch Coverage

如何计算分支覆盖率?

计算分支覆盖率有多种方法,但路径查找是最常见的方法。

在此方法中,执行分支的路径数用于计算分支覆盖率。 分支覆盖技术可以用作判定覆盖的替代方法。 在某些地方,它没有被定义为一种单独的技术,但它不同于判定覆盖,并且对于测试控制流程图的所有分支至关重要。

让我们通过一个例子来理解它

这是基本的代码结构,我们使用了两个变量 X 和 Y 以及两个条件。 如果第一个条件为真,则打印“Large”,如果为假,则转到下一个条件。 如果第二个条件为真,则打印“Small”。

代码结构的控制流程图

Branch Coverage

在上图中,描述了代码的控制流程图。 在第一种情况中,遍历“是”决策,路径是A1-B2-C4-D6-E8,并且覆盖的边数为 1、2、4、5、6 和 8,但在此路径中未覆盖边 3 和 7。 为了覆盖这些边,我们必须遍历“否”决策。 在“否”决策的情况下,路径是 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
情况覆盖的分支路径分支覆盖
是的1, 2, 4, 5, 6, 8A1-B2-C4-D6-E82
不能3,7A1-B3-5-D7

下一个主题语句覆盖测试