Skip to main content Accesibility Help

A CLP heap solver for test case generation


One of the main challenges to software testing today is to efficiently handle heap-manipulating programs. These programs often build complex, dynamically allocated data structures during execution and, to ensure reliability, the testing process needs to consider all possible shapes these data structures can take. This creates scalability issues since high (often exponential) numbers of shapes may be built due to the aliasing of references. This paper presents a novel CLP heap solver for the test case generation of heap-manipulating programs that is more scalable than previous proposals, thanks to the treatment of reference aliasing by means of disjunction, and to the use of advanced back-propagation of heap related constraints. In addition, the heap solver supports the use of heap assumptions to avoid aliasing of data that, though legal, should not be provided as input.

Hide All
Ammann, P. and Offutt, J. 2008. Introduction to Software Testing. Cambridge University Press, Cambridge, UK.
Charreteur, F., Botella, B. and Gotlieb, A. 2009. Modelling dynamic memory management in constraint-based testing. Journal of Systems and Software 82, 11, 17551766.
Degrave, F., Schrijvers, T. and Vanhoof, W. 2010. Towards a framework for constraint-based test case generation. In LOPSTR'09, LNCS 6037, Springer, 128142.
Gómez-Zamalloa, M., Albert, E. and Puebla, G. 2009. Decompilation of Java bytecode to prolog by partial evaluation. Information and Software Technology 51, 10, 14091427.
Gómez-Zamalloa, M., Albert, E. and Puebla, G. 2010. Test case generation for object-oriented imperative languages in CLP. Theory and Practice of Logic Programming, ICLP'10 Special Issue 10, 4–6, 659674.
Goodrich, M., Tamassia, R. and Zamore, R. 2003. The net.datastructures Package, version 3. URL:
Gotlieb, A., Botella, B. and Rueher, M. 2000. A CLP framework for computing structural test data. In CL'00, LNAI 1861, Springer, 399413.
Khurshid, S., Pǎsǎreanu, C. S. and Visser, W. 2003. Generalized symbolic execution for model checking and testing. In TACAS'03, LNCS 2619, Springer, 553568.
King, J. C. 1976. Symbolic execution and program testing. Communications of the ACM 19, 7, 385394.
Meudec, C. 2001. ATGen: Automatic test data generation using constraint logic programming and symbolic execution. Software Testing, Verification & Reliability 11, 2, 8196.
Müller, R. A., Lembeck, C. and Kuchen, H. 2004. A symbolic java virtual machine for test case generation. In IASTEDSE'04, ACTA Press, 365371.
Offutt, A. J. and Liu, S. 1999. Generating test data from SOFL specifications. Journal of Systems and Software 49, 1, 4962.
Peleska, J., Vorobev, E. and Lapschies, F. 2011. Automated test case generation with SMT-Solving and abstract interpretation. In NFM'11, LNCS 6617, Springer, 298312.
Podelski, A., Rybalchenko, A. and Wies, T. 2008. Heap assumptions on demand. In CAV'08, LNCS 5123, Springer, 314327.
Pǎsǎreanu, C. S. and Rungta, N. 2010. Symbolic PathFinder: Symbolic execution of Java bytecode. In ASE'10, ACM, 179180.
Pǎsǎreanu, C. S. and Visser, W. 2009. A survey of new trends in symbolic execution for software testing and analysis. International Journal on Software Tools for Technology Transfer 11, 4, 339353.
Tillmann, N. and de Halleux, J. 2008. Pex: White box test generation for .NET. In TAP'08, LNCS 4966, Springer, 134153.
Visser, W., Pǎsǎreanu, C. S. and Khurshid, S. 2004. Test input generation with Java PathFinder. In ISSTA'04, ACM, 97107.
Wielemaker, J. 2010. The SWI-Prolog User's Manual 5.9.9. URL:
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Theory and Practice of Logic Programming
  • ISSN: 1471-0684
  • EISSN: 1475-3081
  • URL: /core/journals/theory-and-practice-of-logic-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed