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