【问题标题】:Does Branch coverage implies Condition Coverage?分支覆盖是否意味着条件覆盖?
【发布时间】:2021-03-28 06:00:45
【问题描述】:

我需要一些帮助来理解和正确解释 gcov 结果。

执行的行数:24 行的 25% 已执行的分支机构:20 个中的 30% 至少服用一次:20 次的 15% 执行的调用:2 的 50%

执行的行数为我提供了语句覆盖率。 执行的分支给了我决策覆盖率和条件覆盖率

如果我说 100% 分支覆盖意味着 100% 决策覆盖和条件覆盖,我说得对吗?

因为我的理解是 if 语句 if(a2){...}else{...} 没有两个分支,而是 4,因为我有两个条件。这意味着如果我要遍历所有 4 个分支,我应该有条件覆盖,或者分支覆盖没有提供有关条件覆盖的信息

感谢您的帮助。

干杯

【问题讨论】:

  • 我认为 gcov 的分支是一个弧,并且可以通过 for、if、while、switch/case、&&、||、? : .这就是我从这里理解的:gcovr.com/en/stable/faq.html 因此,我在帖子中展示的示例应该有 4 个弧。因此,“分支”也应该涵盖条件覆盖范围。

标签: matlab mingw code-coverage gcov


【解决方案1】:

如果您专门讨论 gcov 工具,那么分支覆盖率实际上是计算到达每个基本块末尾的点。见Understanding branches in gcov files。

Condition 覆盖范围有所不同。请参阅Is it possible to check condition coverage with gcov?(答案是否定的,它不是,至少不是 just gcov。)作为Marc Gilsse's comment notes,您可以使用gcov -a 来计算每个基本块的执行次数,并使用它作为一个合理的近似值——但它不是一回事。

C++ 的异常使得处理分支覆盖变得混乱;见LCOV/GCOV branch coverage with C++ producing branches all over the place。这意味着您不一定能够首先覆盖所有分支。

另请参阅,例如,Understanding blocks in gcov files。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2015-02-08
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多