Combined static and dynamic automated test generation
Submitted by mernst on Wed, 2011-11-30 14:35
| Title | Combined static and dynamic automated test generation |
| Publication Type | Conference Paper |
| Year of Publication | 2011 |
| Authors | Zhang S, Saff D, Bu Y, Ernst MD |
| Conference Name | ISSTA 2011, Proceedings of the 2011 International Symposium on Software Testing and Analysis |
| Date or Month Published | July 19–21 |
| Conference Location | Toronto, Canada |
| Abstract | <p>In an object-oriented program, a unit test often consists of a sequence of method calls that create and mutate objects, then use them as arguments to a method under test. It is challenging to automatically generate sequences that are <em>legal</em> and <em>behaviorally-diverse</em>, that is, reaching as many different program states as possible. </p> <p> This paper proposes a combined static and dynamic automated test generation approach to address these problems, for code without a formal specification. Our approach first uses dynamic analysis to infer a call sequence model from a sample execution, then uses static analysis to identify method dependence relations based on the fields they may read or write. Finally, both the dynamically-inferred model (which tends to be accurate but incomplete) and the statically-identified dependence information (which tends to be conservative) guide a random test generator to create legal and behaviorally-diverse tests. </p> <p> Our Palus tool implements this testing approach. We compared its effectiveness with a pure random approach, a dynamic-random approach (without a static phase), and a static-random approach (without a dynamic phase) on several popular open-source Java programs. Tests generated by Palus achieved higher structural coverage and found more bugs. </p> <p> Palus is also internally used in Google. It has found 22 previously-unknown bugs in four well-tested Google products.</p> |
| Downloads | implementation |
| Citation Key | ZhangSBE2011 |
Last changed Mon, 2013-06-03 10:27

cs.