Predicate Interpretation Analysis Based on Soot

Symbolic execution maintains a path condition pc for every possible path of a program. It is challenging to construct a pc if some complex issues are involved in the path. A predicate interpretation pi is a subexpression of a pc and a pc of a path is a conjunction of all pis in the path. Predicate interpretation has been widely used in theoretical analysis on domain testing and related fields. It recently emerges new impact on software testing by using partial path constraints to generate test data. In this paper, we propose an approach to produce pis in a program. A tool for predicate interpretation analysis for Java programs is implemented based on the data-flow framework of Soot. Most of Java features can be handled in our tool. Moreover, a formal rule of predicate interpretation analysis is presented for more applications in the future. The experimental results show that our tool can produce pis of a program effectively and efficiently.

[1]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[2]  Michael R. Lyu,et al.  Domain Testing Based on Character String Predicate , 2003 .

[3]  Sarfraz Khurshid,et al.  Symbolic execution for software testing in practice: preliminary assessment , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[4]  Bingchiang Jeng Toward an integration of data flow and domain testing , 1999, J. Syst. Softw..

[5]  Laurie Hendren,et al.  Jimple: Simplifying Java Bytecode for Analyses and Transformations , 1998 .

[6]  Lee J. White,et al.  A Domain Strategy for Computer Program Testing , 1980, IEEE Transactions on Software Engineering.

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

[8]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[9]  Elaine J. Weyuker,et al.  A simplified domain-testing strategy , 1994, TSEM.

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