我一直在审查嵌入式系统上使用的不同代码覆盖率测试。特别是,我正在看MC / DC。根据我的理解,其中一个目标是确保声明中的每个逻辑子句都应该影响声明的结果。
两个问题:
(A||B) && (A||!C)
无法达到100%MC / DC,而A||(B&&!C)
即使具有完全相同的功能,也会达到100%MC / DC?答案 0 :(得分:2)
回答你的问题
您希望尽可能少的代码和尽可能少的复杂代码。无法访问的条件会延长您的代码并使您的代码变得不必要地复杂化。
(A||B) && (A||!C)
无法实现100%,因为它无需原因需要A
两次检查。在A
为假且B
为真的情况下,A
的真实性将在(A||!C)
表达式中第二次检查无理由这个公式虽然在公式A||(B&&!C)
中只有A
的真实性被检查一次。