JCrasher is an automatic robustness testing tool for Java code.
JCrasher examines the type information of a set of Java classes and constructs
code fragments that will create instances of different types to test the
behavior of public methods under random data.
JCrasher attempts to detect bugs by causing the program under test to
"crash"--to throw an undeclared runtime exception.
Although in general the random testing approach has many limitations,
it also has the advantage of being completely automatic:
no supervision is required except for online inspection of the test cases that
have caused a crash.
Compared to other similar commercial and research tools, JCrasher offers several
novelties:
JCrasher transitively analyzes methods, determines the size of each tested
method's parameter-space and selects parameter combinations and therefore test
cases at random, taking into account the time allocated for testing
JCrasher defines heuristics for determining whether a Java exception should
be considered a program bug or the JCrasher supplied inputs have violated the
code's preconditions
JCrasher includes support for efficiently undoing all the state changes
introduced by previous tests
JCrasher produces test files for JUnit--a popular Java testing
tool
JCrasher can be integrated in the Eclipse IDE
Download
Download
JCrasher--it's free.
You can still get the old JCrasher version
we used for the experiments that appeared in
Software--Practice & Experience 2004.
Check 'n' Crash and
DSD-Crasher
are JCrasher's successors. Check 'n' Crash uses a more directed search to
find bugs--by building on ESC/Java's theorem proving techniques.
DSD-Crasher adds another dynamic analysis step at the beginning of the
static-dynamic Check 'n' Crash analysis pipeline.
Technical Talks
PDF and
PPT overview slides updated on
October 18, 2007.
Video of the
Microsoft Research talk I gave in Redmond, Washington on 28 August 2007.
PDF slides I used for my
talk on our follow-up tool DSD-Crasher at ISSTA in Portland, Maine on July 20, 2006.
Video of the Google tech talk
I gave in Mountain View, California on July 13, 2006.
PDF slides I used for my
Check 'n' Crash talk at ICSE in St. Louis, Missouri on May 20, 2005.
PDF
slides I used for the Georgia Tech SPARC seminar three minute madness
on January 24, 2005.
PDF slides for my "Exception Grouping for
JCrasher" class project presentation I gave on November 16, 2003.
PDF slides for the JCrasher talk I
gave at the Georgia Tech SPARC seminar on October 6, 2003.
Technical Papers
This invited
overview paper compares JCrasher to its successors Check 'n' Crash and
DSD-Crasher.
It appeared in the Proceedings of the First International Conference on Tests
And Proofs (TAP), February 2007.
Our follow-up paper on DSD-Crasher appeared
in the Proceedings of the International Symposium on Software Testing and
Analysis (ISSTA), July 2006.
Our follow-up paper on Check 'n' Crash
appeared in the Proceedings of the 27th International Conference on Software
Engineering (ICSE), May 2005.
The JCrasher paper
appeared in Software--Practice & Experience, September 2004.
Others using JCrasher in teaching
Wishnu Prasetya's graduate course on program verification