Cyrille Comar slides show the objectives and results of the Couverture project (http://www.open-do.org/projects/couverture/) and the corresponding products that have been developed.
28. Accurate Source Coverage Info Sources Sources Executable Sources Sources GNAT Pro GNATemulator Exec traces Exec traces decorated sources Exec traces decorated sources decorated sources GNATcoverage
29. Accurate Source Coverage Info Not accurate enough to locate precise statements, decisions, or conditions boundaries Sources Sources Executable Sources Sources GNAT Pro Debug info GNATemulator Exec traces Exec traces decorated sources Exec traces decorated sources decorated sources GNATcoverage
30. Accurate Source Coverage Info Source Coverage Information (Static analysis) -fpreserve-control-flow Executable Sources Sources Sources Enhanced GNAT Pro Sources Debug info SCOs GNATemulator Exec traces Exec traces decorated sources Exec traces decorated sources decorated sources GNATcoverage
31. Challenge 2 OBC does not imply MC/DC We Need better theoretical foundations
32. Object Branch Coverage ≠ MC/DC function P (A, B, C : Boolean) return Boolean is begin if( A and then B ) or else C then return True; end if; end P; Conditions A Decision C B MC / DC OBC 3 tests are sufficient At least n+1 tests n = number of conditions
38. Counter-Examples A function P (A, B, C : Boolean) return Boolean is begin if( A and then B ) or else C then return True; end if; end P; T F B F C T F T BDD OBC = covering paths in the BDD C0 T F C1 function P (C0, C1, C2, C3, C4 … : Boolean) return Boolean is begin if ((((…(C0 and thenC1) or else C2) and then C3) or else C4 … then return True; end if; end P; C2 F T F T C3 C4 F T F T 3 tests sufficient instead of N+1, for any N