块覆盖和分支覆盖之间有什么区别?

9
1个回答

20

块覆盖率(或“基本块覆盖率”)和分支覆盖率是代码覆盖率的两个不同度量标准。块覆盖率计算由分支限定的块数。分支覆盖率计算实际的分支数。

此代码片段

puts "I'm block 1"
if condition
  puts "I'm block 2"
else
  puts "I'm block 3"
end
puts "I'm block 4"

代码有四个块但只有两个分支,即if/else的两个不同方向。如果这段代码仅被一个测试执行,并且在该测试中condition为真,

  • 块1、2和4将被覆盖,因此块覆盖率为75%
  • if的真分支将被覆盖,但不包括if的假分支,因此分支覆盖率为50%

1
感谢您提供这个简单易懂的示例! - Zak
1
我非常确定你给出的例子中只有3个块;1和4是同一个块。 - CodingYoshi
很有可能。我想我曾经用手头上的工具测试过这个,但现在没有了。如果一个工具将程序/函数/方法中条件之外的所有内容视为单个块,则示例中的块覆盖率为67%,仍然与分支覆盖率不同。 - Dave Schweisguth
代码块覆盖率和行覆盖率有什么不同? - Srinivas Charan Mamidi
@SrinivasCharanMamidi 这是一个不同的问题。请自己提出一个新问题。 - Dave Schweisguth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接