C

时间:2016-11-04 04:13:36

标签: c unit-testing code-coverage test-coverage

我一直在审查嵌入式系统上使用的不同代码覆盖率测试。特别是,我正在看MC / DC。根据我的理解,其中一个目标是确保声明中的每个逻辑子句都应该影响声明的结果。

两个问题:

  1. 通过独立验证每个条款对结果有影响获得了什么?
  2. 为什么(A||B) && (A||!C)无法达到100%MC / DC,而A||(B&&!C)即使具有完全相同的功能,也会达到100%MC / DC?

1 个答案:

答案 0 :(得分:2)

回答你的问题

  1. 您希望尽可能少的代码和尽可能少的复杂代码。无法访问的条件会延长您的代码并使您的代码变得不必要地复杂化。

  2. (A||B) && (A||!C)无法实现100%,因为它无需原因需要A两次检查。在A为假且B为真的情况下,A的真实性将在(A||!C)表达式中第二次检查无理由这个公式虽然在公式A||(B&&!C)中只有A的真实性被检查一次。