C 的代码覆盖率
Code Coverage for C
我一直在审查嵌入式系统上使用的不同代码覆盖率测试。特别是,我正在查看 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
的真实性只被检查一次。
我一直在审查嵌入式系统上使用的不同代码覆盖率测试。特别是,我正在查看 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
的真实性只被检查一次。