Symbolic execution of program paths involving pointer structure variables

Many white-box testing methods are based on the analysis of program paths. For these methods, an important problem is to determine the feasibility of a given path, and find appropriate input data to execute the path if it is feasible. The symbolic execution of program paths is studied. An approach is presented, which translates a path involving pointer and structure variables to a path involving simple variables and array variables only. The later is then analyzed with constraint solving techniques. An implementation of the translation tool is described with some examples. Preliminary experimental results show that the approach is quite efficient and applicable to paths in typical programs.

[1]  Karl N. Levitt,et al.  SELECT - a formal system for testing and debugging programs by symbolic execution , 1975, Reliable Software.

[2]  Michael A. Hennell,et al.  The causes and effects of infeasible paths in computer programs , 1985, ICSE '85.

[3]  N. Malevris,et al.  Reducing the effects of infeasible paths in branch testing , 1989 .

[4]  Michael I. Schwartzbach,et al.  Compile-Time Debugging of C Programs Working on Trees , 2000, ESOP.

[5]  Michael Hind,et al.  Which pointer analysis should I use? , 2000, ISSTA '00.

[6]  Richard A. Kemmerer,et al.  Unisex: A unix‐based symbolic executor for pascal , 1985, Softw. Pract. Exp..

[7]  Lori A. Clarke,et al.  A System to Generate Test Data and Symbolically Execute Programs , 1976, IEEE Transactions on Software Engineering.

[8]  Thomas W. Reps,et al.  Putting static analysis to work for verification: A case study , 2000, ISSTA '00.

[9]  Jian Zhang,et al.  A Constraint Solver and Its Application to Path Feasibility Analysis , 2001, Int. J. Softw. Eng. Knowl. Eng..

[10]  P. D. Coward,et al.  Symbolic execution and testing , 1990 .

[11]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[12]  William R. Bush,et al.  A static analyzer for finding dynamic programming errors , 2000 .

[13]  Doron A. Peled,et al.  Path Exploration Tool , 1999, TACAS.

[14]  Mary Lou Soffa,et al.  Automated test data generation using an iterative relaxation method , 1998, SIGSOFT '98/FSE-6.

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

[16]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[17]  A. Jefferson Offutt,et al.  The Dynamic Domain Reduction Procedure for Test Data Generation: Design and Algorithms , 1994 .