Due: November 30th. This is a long assignment. Do not wait until the
night before to start it.
There are two options for this assignment. You only need to do one of
them. If you do both, you will receive up to 6 points on your final
exam
score.
Option 1) JCrasher
This is JCrasher 0.27.
Usage: java edu.gatech.cc.jcrasher.JCrasher [-depth d] ClassToCrash*
-depth d .. maximal depth of constructor chaining >0; default =3
E.g.:
java edu.gatech.cc.jcrasher.JCrasher -depth 4 my.package.MyClass
p2.C2 C3
When you seed a fault you need to know what happens when that
fault is
encountered. Faults shouldn't be seeded in a such a way that they are
trivial to uncover ie every test case uncovers the fault; but they
shouldn't be so difficult to uncover that no test case uncovers the
fault. There needs to be a balance.
When you execute the class, you want only one fault to be seeded at a
time. I recommend writing a script that inserts, recompiles, and
executes the script for each fault (see fault seeding notes below).
| Test Suite |
Size of TS |
Depth |
Time to Create TS |
Time to Run TS |
# of Bugs detected |
# of Seeded Faults Detected
|
Faults Detected per TC |
Code Coverage |
| JCrasher 1 |
||||||||
| JCrasher 2 |
||||||||
| JCrasher 3 |
||||||||
| JCrasher 4 |
||||||||
| Original |
| System |
LOC |
Test LOC |
Coverage |
# of Unit Tests |
Equivalent Tests |
Tests Covered by Tests |
Fault seeding is typically performed by creating a variant program
version for each fault inserted into the program. Therefore, if there
are X faults, we have X versions of the program such that each new
version of the program differs from the original version only by the
introduction of the fault. Once faults have been seeded in a program,
the goal is to determine the effectiveness of the test suite. This is
performed by executing each variant program with the test suite and
determining if test cases in the test suite detect a fault. A test
case is said to detect a fault if the output of the variant program
differs from the output of the original program. The fault detection
effectiveness of a test suite for a particular program is the ratio of
faults detected by the test suite to all injected
faults[wong-icse95]. The wong paper
describes fault seeding in more detail.
"Jester is different than code coverage tools, because it can find code that is executed by the running of tests but not actually tested. However, Jester is not meant as a replacement for code coverage tools, merely as a complementary approach. "
You need to add jester.jar to your CLASSPATH.
Read the readme file found in the jester directory for usage directions. IT IS IMPORTANT THAT YOU READ THIS FILE.
In order to run the examples in the jester directory, you need to have the junit.jar file in your CLASSPATH. I also needed to add mockobjects.jar to my CLASSPATH. I ran test.bat and was able to obtain the same results as the README. For acceptancetest.bat, I had to run each command in the .bat file by hand. But, I was able to obtain the same results as reported in the README.
Here is a paper about Jester: Jester Paper Please create a sensible report that incorporates the above requirements. In the report, clearly indicate each of the above requirements.