Random, Exhaustive and Symbolic Testing under One Roof

The new Quickcheck is a counterexample generator for Isa- belle/HOL that uncovers faulty specifications and invalid conjectures using various testing strategies. The previous Quickcheck only tested conjectures by random testing. The new Quickcheck extends the previous one and integrates two novel testing strategies: exhaustive testing with concrete values; and symbolic testing, evaluating conjectures with a nar- rowing strategy. Orthogonally to the strategies, we address two general issues: First, we extend the class of executable conjectures and specifica- tions, and second, we present techniques to deal with conditional conjec- tures, i.e., conjectures with premises. We evaluate the testing strategies and techniques on a number of specifications, functional data structures and a hotel key card system.

[1]  Tobias Nipkow,et al.  Automatic Proof and Disproof in Isabelle/HOL , 2011, FroCoS.

[2]  Panagiotis Manolios,et al.  Integrating Testing and Interactive Theorem Proving , 2011, ACL2.

[3]  Carl Eastlund DoubleCheck your theorems , 2009, ACL2 '09.

[4]  Tobias Nipkow Verifying a Hotel Key Card System , 2006, ICTAC.

[5]  Tobias Nipkow,et al.  Code Generation via Higher-Order Rewrite Systems , 2010, FLOPS.

[6]  Colin Runciman,et al.  Smallcheck and lazy smallcheck: automatic exhaustive testing for small values , 2008, Haskell '08.

[7]  Tobias Nipkow,et al.  Nitpick: A Counterexample Generator for Higher-Order Logic Based on a Relational Model Finder , 2010, ITP.

[8]  Tobias Nipkow,et al.  Random testing in Isabelle/HOL , 2004, Proceedings of the Second International Conference on Software Engineering and Formal Methods, 2004. SEFM 2004..

[9]  Markus Wenzel,et al.  Type Classes and Overloading in Higher-Order Logic , 1997, TPHOLs.

[10]  Fredrik Lindblad Property Directed Generation of First-Order Test Data , 2007, Trends in Functional Programming.

[11]  Peter Dybjer,et al.  Combining Testing and Proving in Dependent Type Theory , 2003, TPHOLs.

[12]  Lukas Bulwahn,et al.  Smart Testing of Functional Programs in Isabelle , 2012, LPAR.

[13]  Sebastian Fischer,et al.  EasyCheck - Test Data for Free , 2008, FLOPS.

[14]  Tjark Weber,et al.  SAT-based finite model generation for higher-order logic , 2008 .

[15]  Tobias Nipkow,et al.  Isabelle/HOL , 2002, Lecture Notes in Computer Science.