我一直在审查嵌入式系统上使用的不同代码覆盖率测试。特别是,我正在查看 MC/DC。据我了解,其中一个目标是确保语句中的每个逻辑子句都应该影响语句的结果。
两个问题:
- 独立验证每个条款对结果有影响有什么好处?
- 为什么
(A||B) && (A||!C)
不能达到 100% MC/DC,而A||(B&&!C)
将实现 100% MC/DC 即使它们具有完全相同的功能?
最佳答案
回答你的问题
您需要尽可能少的代码和尽可能不复杂的代码。无法到达的条件会延长您的代码并使您的代码不必要地复杂。
(A||B) && (A||!C)
不会达到 100% 因为它需要A
检查两次原因。在A
为假且B
为真的情况下,A
的真实性将在( A||!C)
表达式在这个公式中没有任何原因,而在公式A||(B&&!C)
中检查了A
的真实性只有一次。
关于C 的代码覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415177/