无条件分支和代码覆盖率

时间:2016-05-05 17:31:44

标签: branch code-coverage code-analysis control-flow

所以我了解到分支覆盖与决策覆盖不同,因为分支覆盖通常还包括无条件分支,例如方法调用,在C#中使用throw,break和其他关键字。 但我想知道,这种分支覆盖实际上是用在代码分析器中吗?我怀疑他们使用决策覆盖,确保涵盖所有决策结果(即产生的分支)。 我的意思是,以下代码有2个条件,但有5个无条件分支:

if(A)
  B();
  C();
  D();
  E();
else
 X();

我相信如果我编写一个测试来评估A只是假,代码分析器会告诉我分支覆盖率为50%。但是从无条件的分支角度来看,更多的将被执行。 这是对的吗?

1 个答案:

答案 0 :(得分:0)

分支机构覆盖范围不会告诉您决定是否已经过测试,无论是真还是假。

示例:

 if (c) {
    x=...
 }
 y=...

如果c的计算结果为TRUE,则执行包含x = ...的块,并且 分支覆盖将检测到。它还将检测到从y开始的代码已被执行。因此,如果C为真,您将获得100%的覆盖率,而不知道如果C为假则会发生什么。

通过决策覆盖,如果您有100%的覆盖率,您就会知道C已被评估并产生TRUE和FALSE。

如果您的条件if具有then块一个else块,那么分支覆盖和决策覆盖将为您提供相同的信息。