I've been doing a little bit of reviewing the different code coverage testing used on embedded systems. In particular, I'm looking at the MC/DC. From what I understand, one of the objectives is to make sure that each logical clause in a statement should affect the outcome of the statement.
Two questions:
- What is gained by independently verifying that each clause has an effect on the outcome?
- Why would
(A||B) && (A||!C)not be able to achieve 100% MC/DC, whileA||(B&&!C)will achieve 100% MC/DC even if they have the exact same functionality?