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