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