Predicate Complete Testing

advertisement
Predicate Complete Testing*
Thomas Ball
* Thomas Ball, A Theory of Predicate-Complete Test
Coverage and Generation, Technical Report MSR-TR-200428, Microsoft Research
Testing Definitions
Statement
Every statement is executed by the test set
Path
Every control path is executed by the test set
Predicate
Every logical predicate is executed by the test
set
Complete
Some notion that the test set is “exhaustive”
Theoretical Goals
Control Flow metrics
Statement, branch, multiple condition,
predicate, path, linear code sequence and jump
Predicate Complete Testing
Cover all reachable observable states
Bound the number tests
Know when to stop (when do we have a
complete test set)
Does PCT actually produce tests?
Using Boolean Programs
Recall that BP transforms the original
program into a program of its Boolean
predicates
A BP state is some Boolean assignment of
all predicates
The BP state space is finite (<= m*2^n)
Some BP states are observable
Some BP states are reachable
Boolean Program
Reachable States
Reachability Graph
Formalizing the state abstraction
Boolean Program II
Upper and Lower bounds for R
R – set of reachable states
U – upper bound for R via may-transitions
Lp – pessimistic lower bound for R via
must+ transitions, a may transition, and
must- transitions
Lo – optimistic lower bound for R, with the
assumption that the program does not
diverge
Algorithm
Using algorithms for computing L and U,
|L|==|U| => the abstraction accurately
encodes all the paths of R.
Generate all paths for L in the graph
Test Generation
Discussion
Download