答案 0 :(得分:31)
分支是运行时可以选择是否可以采用一个或另一个路径的地方。让我们举个例子:
if(a) {
Foo();
}
if(b) {
Bar();
}
Yay();
当到达第一行时,它可以决定是否要进入if(a)
- 声明的正文。此外,它可以决定不这样做。在这个阶段,我们已经看到了两条路径(一条分支)。
之后的下一个声明变得更有趣。它可以进入if
正文并执行Bar
。它也可以不这样做。但请记住,我们之前已经有了一个分支。如果调用Foo
,结果可能会有所不同。
所以我们最终得到了四条可能的路径:
Foo
,不调用Bar
Foo
,不致电Bar
Foo
,致电Bar
Foo
和Bar
无论是Yay
还是Foo
,都会执行最后一次Bar
,因此不会将其视为分支。因此,上面的代码段包含四个路径/两个分支(无论是否调用Foo()
,还是不调用Bar()
)。
与已经提到的其他答案一样,有许多语句可以导致分支(if
/ switch
)。不要忘记条件循环,例如while
/ for
/ do-while
,或短路(例如&&
/ ||
)运算符。< / p>
代码覆盖率工具希望确保您已经测试了所有分支。如果所有路径都经过测试,甚至是所有(边缘情况)值,而不仅仅是分支,那么最好。这样做,以确保不会执行任何不需要的行为。
答案 1 :(得分:2)
代码可以采用多个路由的地方,即分支。分支语句的几个示例是if
/ else
和switch
语句。
分支覆盖率跟踪已执行哪些分支,因此您可以确保正确测试所有路径。
答案 2 :(得分:1)
来自Wikipedia:
每个控制结构的每个分支(也称为DD路径)(例如if和case语句)是否已被执行?例如,给定if语句,是否已执行true和false分支?另一种说法是,程序中的每个边缘都已执行了吗?
您必须测试每个控制结构的所有可能情况(输入/不输入if语句,f.e。以及开关的所有情况)。分支覆盖率是一种度量标准,用于衡量(通常以百分比表示)测试覆盖的总分支数。