java中的修改条件/决策覆盖率分析工具

时间:2012-11-15 20:13:31

标签: unit-testing testing code-coverage mc-dc

是否有任何用于修改条件/决策覆盖率分析的开源工具。

我看过科伯塔,似乎它只提供有条件的报道。

我有兴趣执行此处描述的分析

http://sunnyday.mit.edu/papers/dupuy.pdf

http://en.wikipedia.org/wiki/Modified_condition/decision_coverage

  

为了满足MC / DC覆盖标准,在测试期间全部   以下必须至少为真[1]:

* Each decision tries every possible outcome
* Each condition in a decision takes on every possible outcome
* Each entry and exit point is invoked
* Each condition in a decision is shown to independently affect the outcome of the decision

1 个答案:

答案 0 :(得分:3)

MC / DC - 多个条件/决策覆盖

  

程序中每个进入和退出点至少被调用一次,程序中的每个条件都至少对所有可能的结果进行了一次,并且每个条件都被证明可以独立地影响该决策结果。通过在保持固定所有其他可能条件的同时改变该条件,显示条件独立地影响决策的结果。   [维基百科MC / DC - en.wikipedia.org/wiki/Modified_condition/decision_coverage]

CodeCover

http://codecover.org/features/coverage.html

CodeCover声明还要检查MC / DC,他们称之为Ludewig术语意义上的术语覆盖。我试图找到有关Ludewig术语的其他信息,但我找不到任何有用的信息。

期限覆盖(CodeCover)

术语覆盖率检查布尔短路语义,例如涉及并非总是评估的副作用的决策:

if (expressionA && myfunc(b)) {
    do_something();
}

[维基百科短路评估 - en.wikipedia.org/wiki/Short-circuit_evaluation]

如果expressionA的计算结果为false,则不会执行myfunc(b)。这是编写速度更快的代码的常用技术,但是风险很大,因为myfunc(b)可以对环境进行一些更改,这可以很容易地被开发人员监督,从而创建不安全的代码。

根据我的理解,术语覆盖率验证表达式A的计算结果为true和false,以便myfunc(b)至少执行一次。

Testwell CTC ++

http://www.verifysoft.com/en_ctcpp.html

  • 专有软件,许可证从4100€到8800€
  • 似乎支持C,C ++,Java,C#
  • 支持所有编译器
  • 符合DO 178-C / ED-12C(航空航天),EN 50128(铁路),IEC 61508(电子安全相关系统),IEC 62304(医疗),ISO 26262(汽车),IEC 60880(核电) )和其他质量标准。
PS:我没有足够的声誉来发布两个以上的链接,因此我让它们无法解析。但它们在引用参考文献中仍然很重要。