Abstract:
We present an automatic error-detection approach that combines static checking and concrete test-case generation. Our approach consists of taking the abstract error conditions inferred using theorem proving techniques by a static checker (ESC/Java), deriving specific error conditions using a constraint solver, and producing concrete test cases (with the JCrasher tool) that are executed to determine whether an error truly exists. The combined technique has advantages over both static checking and automatic testing individually. Compared to ESC/Java, we eliminate spurious warnings and improve the ease-of-comprehension of error reports through the production of Java counterexamples. Compared to JCrasher, we eliminate the blind search of the input space, thus reducing the testing time and increasing the test quality.
Citations
|
453
|
Points-to analysis in almost linear time
– Steensgaard
- 1996
|
|
356
|
Dynamically discovering likely program invariants to support program evolution
– Ernst, Cockrell, et al.
- 2001
|
|
309
|
Extended static checking for Java
– Flanagan, Leino, et al.
- 2002
|
|
249
|
Preliminary design of JML: A behavioral interface specification language for Java
– Leavens, Baker, et al.
- 1998
|
|
189
|
Simplify: A theorem prover for program checking
– Detlefs, Nelson, et al.
- 2003
|
|
149
|
Korat: Automated testing based on Java predicates
– Boyapati, Khurshid, et al.
- 2002
|
|
149
|
A system and language for building system-specific, static analyses
– Hallem, Chelf, et al.
- 2002
|
|
120
|
Test infected: Programmers love writing tests
– Beck, Gamma
- 1998
|
|
95
|
Finding bugs is easy
– Hovemeyer, Pugh
- 2004
|
|
92
|
ESC/Java user’s manual
– Leino, Nelson, et al.
- 2000
|
|
85
|
an annotation assistant for esc/java
– Houdini
- 2001
|
|
76
|
Finding bugs with a constraint solver
– Jackson, Vaziri
- 2000
|
|
49
|
Generating Tests from Counterexamples
– Beyer, Chlipala, et al.
- 2004
|
|
36
|
ESC/Java2: Uniting ESC/Java and JML: Progress and issues in building and using ESC/Java2 and a report on a case study involving the use of ESC/Java2 to verify portions of an Internet voting tally system
– Cok, Kiniry
- 2004
|
|
33
|
A comparison of bug finding tools for Java
– Rutar, Almazan, et al.
- 2004
|
|
33
|
Tool-assisted unit test selection based on operational violations
– Xie, Notkin
- 2003
|
|
26
|
Z-Ranking: Using statistical analysis to counter the impact of static analysis approximations
– Kremenek, Engler
- 2003
|
|
15
|
An informal formal method for systematic junit test case generation
– Stotts, Lindsey, et al.
- 2002
|
|
11
|
Counterexample guided abstraction refinement via program execution
– Kroening, Groce, et al.
- 2004
|
|
11
|
POOC: A platform for object-oriented constraint programming
– Schlenker, Ringwelski
- 2002
|
|
9
|
Java development with Ant
– Hatcher, Loughran
- 2002
|
|
8
|
Some lessons from using static analysis and software model checking for bug finding
– MUSUVATHI, ENGLER
- 2003
|