[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sqlite-users
Subject:    Re: [sqlite] MC/DC coverage explained wrong in the home page?
From:       Sami Liedes <sliedes () cc ! hut ! fi>
Date:       2011-09-24 11:49:41
Message-ID: 20110924114941.GQ31808 () sli ! homeunix ! net
[Download RAW message or body]

On Sat, Sep 24, 2011 at 04:58:35AM +0300, Sami Liedes wrote:
> On Fri, Sep 23, 2011 at 09:17:43PM -0400, Richard Hipp wrote:
> > ----------------------
> > 1. Structural coverage guidelines are:
> >   a) Every statement in the program has been invoked at least once;
> >   b) Every point of entry and exit in the program has been invoked at least
> > once;
> >   c) Every control statement (i.e., branchpoint) in the program has taken
> > all possible outcomes (i.e., branches) at least once;
> >   d) Every non-constant Boolean expression in the program has evaluated to
> > both a True and a False result;
> >   e) Every non-constant condition in a Boolean expression in the program has
> > evaluated to both a True and a False result;
> >   f) Every non-constant condition in a Boolean expression in the program has
> > been shown to independently affect that expression's outcome.
> > 2. Based upon these definitions:
> >   • Statement Coverage requires (a) only
> >   • DC requires (b, c, d)
> >   • MC/DC requires (b, c, d, e, f)
> > ----------------------

Very well. NASA has an example with short-circuit where they treat
unevaluated conditions as "don't cares". It's clear from the example
that (e) still does not suffice -- it does *not* imply (f).

NASA's A Practical Tutorial on Modified Condition/ Decision Coverage:

  http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.6.1317&rep=rep1&type=pdf

The example is a four-input AND gate with short-circuit logic (_ =
don't care/not evaluated). This would be a sufficient set of tests:

expression = (A && B && C && D)

#    A  B  C  D  Result
1    1  1  1  1  1
2    0  _  _  _  0
3    1  0  _  _  0
4    1  1  0  _  0
5    1  1  1  0  0

Am I correct that your approach would consider these two test cases
sufficient?

#    A  B  C  D  Result
1    1  1  1  1  1
2    0  0  0  0  0

Right?

But with these test cases, assuming short-circuit, only condition A
has been shown to "independently affect the expression's outcome". The
NASA document correctly points out that even with short-circuit you
need to show that each of the conditions really matters in some case
if you want MC/DC coverage.

	Sami

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic