Test case generation for object-oriented imperative languages in CLP

Testing is a vital part of the software development process. Test Case Generation (TCG) is the process of automatically generating a collection of test-cases which are applied to a system under test. White-box TCG is usually performed by means of symbolic execution, i.e., instead of executing the program on normal values (e.g., numbers), the program is executed on symbolic values representing arbitrary values. When dealing with an object-oriented (OO) imperative language, symbolic execution becomes challenging as, among other things, it must be able to backtrack, complex heap-allocated data structures should be created during the TCG process and features like inheritance, virtual invocations and exceptions have to be taken into account. Due to its inherent symbolic execution mechanism, we pursue in this paper that Constraint Logic Programming (CLP) has a promising application field in tcg. We will support our claim by developing a fully CLP-based framework to TCG of an OO imperative language, and by assessing it on a corresponding implementation on a set of challenging Java programs.

[1]  Bernard Botella,et al.  A CLP Framework for Computing Structural Test Data , 2000, Computational Logic.

[2]  Elvira Albert,et al.  Decompilation of Java bytecode to Prolog by partial evaluation , 2009, Inf. Softw. Technol..

[3]  Arnaud Gotlieb,et al.  Modelling Dynamic Memory Management in Constraint-Based Testing , 2007, Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007).

[4]  Wim Vanhoof,et al.  Towards a Framework for Constraint-Based Test Case Generation , 2009, LOPSTR.

[5]  Arnaud Gotlieb,et al.  Automatic test data generation using constraint solving techniques , 1998, ISSTA '98.

[6]  Elvira Albert,et al.  Test Data Generation of Bytecode by CLP Partial Evaluation , 2008, LOPSTR.

[7]  Nikolai Tillmann,et al.  Pex-White Box Test Generation for .NET , 2008, TAP.

[8]  Qing Li,et al.  Automatic Test Generation for Dynamic Data Structures , 2007, 5th ACIS International Conference on Software Engineering Research, Management & Applications (SERA 2007).

[9]  John P. Gallagher,et al.  Non-leftmost Unfolding in Partial Evaluation of Logic Programs with Impure Predicates , 2005, LOPSTR.

[10]  Hong Zhu,et al.  Software unit test coverage and adequacy , 1997, ACM Comput. Surv..

[11]  Christophe Meudec ATGen: automatic test data generation using constraint logic programming and symbolic execution † , 2001, Softw. Test. Verification Reliab..

[12]  Elvira Albert,et al.  PET: a partial evaluation-based test case generation tool for Java bytecode , 2010, PEPM '10.

[13]  Daniel Jackson,et al.  Checking Properties of Heap-Manipulating Procedures with a Constraint Solver , 2003, TACAS.

[14]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

[15]  Herbert Kuchen,et al.  A symbolic Java virtual machine for test case generation , 2004, IASTED Conf. on Software Engineering.

[16]  Cormac Flanagan,et al.  Automatic software model checking via constraint logic , 2004, Sci. Comput. Program..

[17]  James C. King,et al.  Symbolic execution and program testing , 1976, CACM.

[18]  Yoshihiko Futamura,et al.  Partial Evaluation of Computation Process--An Approach to a Compiler-Compiler , 1999, High. Order Symb. Comput..

[19]  Neelam Gupta,et al.  Generating test data for functions with pointer inputs , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.