``JCrasher: An automatic robustness tester for Java''
by
Christoph Csallner
and
Yannis Smaragdakis.
Software -- Practice & Experience, vol. 34, no. 11, Sep. 2004, pp. 1025-1050.
Abstract
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 and will examine
the behavior of the public methods under random data. JCrasher attempts to
detect bugs by causing the program under test to ``crash'', i.e. 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 off-line
inspection of the test cases that have caused a crash. Compared to other
similar commercial and research tools, JCrasher offers several novelties:
it 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;
it 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; it includes support for efficiently undoing all the
state changes introduced by previous tests; it produces test files for
JUnit (a popular Java testing tool); and can be integrated in the Eclipse
IDE.
@article{csallner04jcrasher,
author = {Christoph Csallner and Yannis Smaragdakis},
title = {{JCrasher}: An automatic robustness tester for {Java}},
journal = {Software---Practice & Experience},
volume = {34},
number = {11},
pages = {1025--1050},
month = sep,
year = {2004}
}
Copyright notice:
This material is presented to ensure timely dissemination of scholarly and
technical work. Copyright and all rights therein are retained by authors or
by other copyright holders. All persons copying this information are
expected to adhere to the terms and constraints invoked by each author s
copyright. In most cases, these works may not be reposted without the
explicit permission of the copyright holder.