|
ABSTRACT
DSD-Crasher is a bug finding tool that follows a three-step approach to program analysis: D. Capture the program's intended execution behavior with dynamic invariant detection. The derived invariants exclude many unwanted values from the program's input domain. S. Statically analyze the program within the restricted input domain to explore many paths. D. Automatically generate test cases that focus on reproducing the predictions of the static analysis. Thereby confirmed results are feasible. This three-step approach yields benefits compared to past two-step combinations in the literature. In our evaluation with third-party applications, we demonstrate higher precision over tools that lack a dynamic step and higher efficiency over tools that lack a static step.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Anand, S., Godefroid, P., and Tillmann, N. 2008. Demand-driven compositional symbolic execution. In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, To appear.
|
| |
2
|
Anand, S., Pasareanu, C., and Visser, W. 2007. JPF-SE: A symbolic execution extension to Java Pathfinder. In Proceedings of the 13th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, 134--138.
|
| |
3
|
Apache Software Foundation. 2003. Bytecode engineering library (BCEL). http://jakarta.apache.org/bcel/. (Accessed Dec. 2007.)
|
| |
4
|
Artzi, S., Ernst, M. D., Kieżun, A., Pacheco, C., and Perkins, J. H. 2006. Finding the needles in the haystack: Generating legal test inputs for object-oriented programs. In Proceedings of the 1st International Workshop on Model-Based Testing and Object-Oriented Systems (M-TOOS).
|
| |
5
|
Ball, T. 2003. Abstraction-guided test generation: A case study. Tech. rep. MSR-TR-2003-86, Microsoft Research.
|
| |
6
|
Beck, K. and Gamma, E. 1998. Test infected: Programmers love writing tests. Java Report 3, 7, 37--50.
|
| |
7
|
|
 |
8
|
|
 |
9
|
|
 |
10
|
Cristian Cadar , Vijay Ganesh , Peter M. Pawlowski , David L. Dill , Dawson R. Engler, EXE: automatically generating inputs of death, Proceedings of the 13th ACM conference on Computer and communications security, October 30-November 03, 2006, Alexandria, Virginia, USA
[doi> 10.1145/1180405.1180445]
|
| |
11
|
Centonze, P., Flynn, R. J., and Pistoia, M. 2007. Combining static and dynamic analysis for automatic identification of precise access-control policies. In Proceedings of the 23rd Annual Computer Security Applications Conference (ACSAC). IEEE, 292--303.
|
| |
12
|
|
| |
13
|
Cok, D. R. and Kiniry, J. R. 2004. ESC/Java2: Uniting ESC/Java and JML: Progress and issues in building and using ESC/Java2. Tech. rep. NIII-R0413, Nijmegen Institute for Computing and Information Science.
|
| |
14
|
Coverity Inc. 2003. Coverity Prevent. http://www.coverity.com/. (Accessed Dec. 2007).
|
| |
15
|
|
 |
16
|
|
 |
17
|
|
 |
18
|
|
 |
19
|
|
| |
20
|
|
| |
21
|
|
| |
22
|
|
| |
23
|
Detlefs, D., Nelson, G., and Saxe, J. B. 2003. Simplify: A theorem prover for program checking. Tech. rep. HPL-2003-148, Hewlett-Packard Systems Research Center.
|
| |
24
|
|
| |
25
|
Engler, D. and Musuvathi, M. 2004. Static analysis versus software model checking for bug finding. In Proceedings of the 5th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI). Springer, 191--210.
|
| |
26
|
Ernst, M. D. 2003. Static and dynamic analysis: Synergy and duality. In Proceedings of the ICSE Workshop on Dynamic Analysis (WODA). 24--27.
|
| |
27
|
|
 |
28
|
Cormac Flanagan , K. Rustan M. Leino , Mark Lillibridge , Greg Nelson , James B. Saxe , Raymie Stata, Extended static checking for Java, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
 |
29
|
|
 |
30
|
|
 |
31
|
Neelam Gupta , Aditya P. Mathur , Mary Lou Soffa, Automated test data generation using an iterative relaxation method, Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering, p.231-244, November 01-05, 1998, Lake Buena Vista, Florida, United States
|
 |
32
|
Seth Hallem , Benjamin Chelf , Yichen Xie , Dawson Engler, A system and language for building system-specific, static analyses, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
 |
33
|
|
| |
34
|
Hapner, M., Burridge, R., Sharma, R., and Fialli, J. 2002. Java Message Service: Version 1.1. Sun Microsystems, Inc.
|
| |
35
|
Henkel, J., Reichenbach, C., and Diwan, A. 2007. Discovering documentation for Java container classes. IEEE Trans. Softw. Engin. 33, 8, 526--543.
|
 |
36
|
David Hovemeyer , William Pugh, Finding bugs is easy, Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 24-28, 2004, Vancouver, BC, CANADA
[doi> 10.1145/1028664.1028717]
|
 |
37
|
|
 |
38
|
|
| |
39
|
Khurshid, S., Pasareanu, C. S., and Visser, W. 2003. Generalized symbolic execution for model checking and testing. In Proceedings of the 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, 553--568.
|
 |
40
|
|
 |
41
|
|
| |
42
|
|
| |
43
|
Ted Kremenek , Paul Twohey , Godmar Back , Andrew Ng , Dawson Engler, From uncertainty to belief: inferring the specification within, Proceedings of the 7th symposium on Operating systems design and implementation, November 06-08, 2006, Seattle, Washington
|
| |
44
|
Kroening, D., Groce, A., and Clarke, E. M. 2004. Counterexample guided abstraction refinement via program execution. In Proceedings of the 6th International Conference on Formal Engineering Methods (ICFEM). Springer, 224--238.
|
| |
45
|
Leavens, G. T., Baker, A. L., and Ruby, C. 1998. Preliminary design of JML: A behavioral interface specification language for Java. Tech. rep. TR98-06y, Department of Computer Science, Iowa State University.
|
| |
46
|
Leino, K. R. M., Nelson, G., and Saxe, J. B. 2000. ESC/Java user's manual. Tech. rep. 2000-002, Compaq Computer Corporation Systems Research Center.
|
| |
47
|
McConnell, S. 2004. Code Complete, 2nd Ed. Microsoft Press.
|
| |
48
|
|
| |
49
|
Meyer, B., Ciupa, I., Leitner, A., and Liu, L. 2007. Automatic testing of object-oriented software. In Proceedings of the 33rd Conference on Current Trends in Theory and Practice of Computer Science (SOFSEM). Springer, 114--129.
|
 |
50
|
|
 |
51
|
|
| |
52
|
Pacheco, C. and Ernst, M. D. 2005. Eclat: Automatic generation and classification of test inputs. In Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP). Springer, 504--527.
|
| |
53
|
Parasoft Inc. 2002. Jtest. http://www.parasoft.com/. Accessed Dec. 2007.
|
| |
54
|
|
| |
55
|
Schlenker, H. and Ringwelski, G. 2002. POOC: A platform for object-oriented constraint programming. In Proceedings of the Joint ERCIM/CologNet International Workshop on Constraint Solving and Constraint Logic Programming. Springer, 159--170.
|
| |
56
|
Sen, K. and Agha, G. 2006. CUTE and jCUTE: Concolic unit testing and explicit path model-checking tools. In Proceedings of the 18th International Conference on Computer Aided Verification (CAV). Springer, 419--423.
|
 |
57
|
|
| |
58
|
Smaragdakis, Y. and Csallner, C. 2007. Combining static and dynamic reasoning for bug detection. In Proceedings of the 1st International Conference on Tests And Proofs (TAP). Springer, 1--16.
|
 |
59
|
|
 |
60
|
|
| |
61
|
Vaziri, M. and Jackson, D. 2003. Checking properties of heap-manipulating procedures with a constraint solver. In Proceedings of the 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, 505--520.
|
| |
62
|
|
 |
63
|
|
| |
64
|
Wagner, S., Jürjens, J., Koller, C., and Trischberger, P. 2005. Comparing bug finding tools with reviews and tests. In Proceedings of the 17th IFIP TC6/WG 6.1 International Conference on Testing of Communicating Systems (TestCom). Springer, 40--55.
|
 |
65
|
|
| |
66
|
Xie, T. and Notkin, D. 2003. Tool-assisted unit test selection based on operational violations. In Proceedings of the 18th IEEE International Conference on Automated Software Engineering (ASE). IEEE, 40--48.
|
| |
67
|
Xie, Y. and Engler, D. 2003. Using redundancies to find errors. IEEE Trans. Softw. Engin. 29, 10, 915--928.
|
| |
68
|
Young, M. 2003. Symbiosis of static analysis and program testing. In Proceedings of the 6th International Conference on Fundamental Approaches to Software Engineering (FASE). Springer, 1--5.
|
 |
69
|
|
 |
70
|
|
INDEX TERMS
Primary Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.4
Software/Program Verification
Subjects:
Formal methods
Additional Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.4
Software/Program Verification
Subjects:
Reliability
D.2.5
Testing and Debugging
Subjects:
Testing tools (e.g., data generators, coverage testing)
I.
Computing Methodologies
I.2
ARTIFICIAL INTELLIGENCE
I.2.2
Automatic Programming
Subjects:
Program verification
General Terms:
Reliability,
Verification
Keywords:
Automatic testing,
bug finding,
dynamic analysis,
dynamic invariant detection,
extended static checking,
false positives,
static analysis,
test case generation,
usability
|