KeYTestGen2: an automatic, verification-driven test case generator

Software testing is a verification technique common in contemporary software engineering processes, both the development of the system itself, as well as subsequent quality assurance, maintenance and extension. It suffers, however, from the drawback that writing high quality test cases is an error prone and resource heavy process. This work describes KeYTestGen2, a verification-driven, automatic test case generation system. It addresses the problem of automatically generating robust test code by relying on symbolic execution of Java source code using the KeY Symbolic Debugger. This process yields sufficiently detailed data about software systems in order to generate tests of high quality. KeYTestGen2 implements a robust processing system which can both control this process, and mold the generated data into executable test suites for modern automated testing frameworks, such as JUnit.

[1]  John Joseph Chilenski,et al.  An Investigation of Three Forms of the Modified Condition Decision Coverage (MCDC) Criterion , 2001 .

[2]  Bernhard Beckert,et al.  White-Box Testing by Combining Deduction-Based Specification Extraction and Black-Box Testing , 2007, TAP.

[3]  Vladimir Klebanov,et al.  Integrating Verification and Testing of Object-Oriented Software , 2008, TAP.

[4]  Kent Beck,et al.  Kent Beck's Guide to Better Smalltalk: SIMPLE SMALLTALK TESTING , 1997 .

[5]  Mark Ryan,et al.  Logic in Computer Science: Modelling and Reasoning about Systems , 2000 .

[6]  Bernhard Beckert,et al.  A Dynamic Logic for Deductive Verification of Concurrent Programs , 2007, Fifth IEEE International Conference on Software Engineering and Formal Methods (SEFM 2007).

[7]  Jean-Marc Jézéquel,et al.  Design by Contract: The Lessons of Ariane , 1997, Computer.

[8]  Mark Dowson,et al.  The Ariane 5 software failure , 1997, SOEN.

[9]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[10]  Reiner Hähnle,et al.  Abstract Interpretation of Symbolic Execution with Explicit State Updates , 2009, FMCO.

[11]  Bernhard Beckert,et al.  Verification of Object-Oriented Software. The KeY Approach - Foreword by K. Rustan M. Leino , 2007, The KeY Approach.

[12]  Bernhard Beckert,et al.  The KeY tool , 2005, Software & Systems Modeling.

[13]  Christoph Gladisch Model generation for quantified formulas with application to test data generation , 2012, International Journal on Software Tools for Technology Transfer.

[14]  Reiner Hähnle,et al.  Generating Unit Tests from Formal Proofs , 2007, TAP.

[15]  J Hayhurst Kelly,et al.  A Practical Tutorial on Modified Condition/Decision Coverage , 2001 .

[16]  Christoph Gladisch,et al.  Test Data Generation for Programs with Quantified First-Order Logic Specifications , 2010, ICTSS.

[17]  Reiner Hähnle,et al.  A visual interactive debugger based on symbolic execution , 2010, ASE '10.

[18]  A. Jefferson Offutt,et al.  Introduction to Software Testing , 2008 .

[19]  Reiner Hähnle,et al.  Integrated and Tool-Supported Teaching of Testing, Debugging, and Verification , 2009, TFM.

[20]  Bernhard Beckert,et al.  Verifying Object-Oriented Programs with KeY: A Tutorial , 2006, FMCO.