PathCrawler: Automatic Generation of Path Tests by Combining Static and Dynamic Analysis

  • Nicky Williams
  • Bruno Marre
  • Patricia Mouy
  • Muriel Roger
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3463)


We present the PathCrawler prototype tool for the automatic generation of test-cases satisfying the rigorous all-paths criterion, with a user-defined limit on the number of loop iterations in the covered paths. The prototype treats C code and we illustrate the test-case generation process on a representative example of a C function containing data-structures of variable dimensions, loops with variable numbers of iterations and many infeasible paths. PathCrawler is based on a novel combination of code instrumentation and constraint solving which makes it both efficient and open to extension. It suffers neither from the approximations and complexity of static analysis, nor from the number of executions demanded by the use of heuristic algorithms in function minimisation and the possibility that they fail to find a solution. We believe that it demonstrates the feasibility of rigorous and systematic testing of sequential programs coded in imperative languages.


Automatic Generation Loop Iteration Execution Path Symbolic Execution Feasible Path 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Gallagher, M.J., Narasimhan, V.L.: ADTEST: A Test Data Generation Suite for Ada Software Systems. IEEE Transactions on Software Engineering 23(8) (August 1997)Google Scholar
  2. 2.
    Gotlieb, A., Botella, B., Reuher, M.: A CLP Framework for Computing Structural Test Data. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, pp. 399–413. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  3. 3.
    Gouraud, S.-D., Denise, A., Gaudel, M.-C., Marre, B.: A New Way of Automating Statistical Testing Methods. In: ASE 2001, Coronado Island, California (November 2001)Google Scholar
  4. 4.
    Jeng, B., Weyuker, E.J.: A Simplified Domain-Testing Strategy. ACM Transactions on Software Engineering and Methodology 3(3), 254–270 (1994)CrossRefGoogle Scholar
  5. 5.
    Korel, B.: Automated Software Test Data Generation. IEEE Transactions on Software Engineering 16(8) (August 1990)Google Scholar
  6. 6.
    Leavens, G.T., Cheon, Y., Clifton, C., Ruby, C., Cok, D.R.: How the Design of JML Accommodates Both Runtime Assertion Checking and Formal Verification. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2002. LNCS, vol. 2852, pp. 262–284. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  7. 7.
    Marre, B., Arnould, A.: Test sequences generation from Lustre descriptions: GATeL. In: ASE 2000, Grenoble, pp. 229–237 (September 2000)Google Scholar
  8. 8.
    Marre, B., Mouy, P., Williams, N.: On-the-Fly Generation of K-Path Tests for C Functions. In: 19th IEEE Intnl. Conf. on Automated Software Engineering (ASE 2004), Linz, Austria (September 2004)Google Scholar
  9. 9.
    Michael, C., McGraw, G.: Automated Software Test Data Generation for Complex Programs. In: ASE, Honolulu (October 1998)Google Scholar
  10. 10.
    Michel, C., Rueher, M., Lebbah, Y.: Solving Constraints over Floating-Point Numbers. In: Walsh, T. (ed.) CP 2001. LNCS, vol. 2239, pp. 524–538. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  11. 11.
    Mouy, P.: Vers une méthode de génération de tests boîte grise “à la volée”. In: Approches Formelles dans l’Assistance au Développement de Logiciels (AFADL 2004), Besançon, France (June 2004)Google Scholar
  12. 12.
    Necula, G.C., McPeak, S., Rahul, S.P., Weimer, W.: CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs. In: Proc. Conference on Compiler Construction (2002)Google Scholar
  13. 13.
    Obayashi, M., Kubota, H., McCarron, S.P., Mallet, L.: The Assertion Based Testing Tool for OOP: ADL2. In: Proc. ICSE 1998, Kyoto, Japan (1998)Google Scholar
  14. 14.
    Prather, R.E., Myers, J.P.: The Path Prefix Testing Strategy. IEEE Transactions on Software Engineering 13(7) (July 1987)Google Scholar
  15. 15.
    Sy, N.T., Deville, Y.: Consistency Techniques for Interprocedural Test Data Generation. In: ESEC/FSE 2003, Helsinki, Finland, September 1-5 (2003)Google Scholar
  16. 16.
    Thevenod-Fosse, P., Waeselynck, H.: Software statistical testing based on structural and functional criteria. In: 11th International Software Quality Week, San Francisco (USA), May 26-29 (1998)Google Scholar
  17. 17.
    Wallace, M., Novello, S., Schimpf, J.: ECLiPSe: A Platform for Constraint Logic Programming. IC-Parc, Imperial College, London (1997)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Nicky Williams
    • 1
  • Bruno Marre
    • 1
  • Patricia Mouy
    • 1
  • Muriel Roger
    • 1
  1. 1.CEA/Saclay, DRT/LIST/SOL/LSLGif sur YvetteFrance

Personalised recommendations