2

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

我看过coberta,它似乎只提供有条件的覆盖。

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

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
4

1 回答 1

4

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

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

代码封面

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) 可以对环境进行一些更改,这很容易被开发人员监督,从而创建不安全的代码。

根据我的理解,术语覆盖验证 expressionA 的计算结果为真假,因此 myfunc(b) 至少执行一次。

测试井 CTC++

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

  • 许可证从 4100 欧元到 8800 欧元的专有软件</li>
  • 似乎支持 C、C++、Java、C#
  • 支持所有编译器
  • 符合 DO 178-C / ED-12C(航空航天)、EN 50128(铁路)、IEC 61508(电子安全相关系统)、IEC 62304(医疗)、ISO 26262(汽车)、IEC 60880(核电)等质量标准。

PS:我没有足够的声誉来发布两个以上的链接,因此我使它们无法解析。但它们在引用参考中仍然很重要。

于 2015-05-25T10:20:29.477 回答