Jumble project is a class level mutation testing tool that works in conjunction with JUnit. The purpose of mutation testing is to provide a measure of the effectiveness of test cases.
A single mutation is performed on the code to be tested, the corresponding test cases are then executed. If the modified code fails the tests, then this increases confidence in the tests. Conversely, if the modified code passes the tests this indicates a testing deficiency.
Here is some example Jumble output for a Java class called "Foo", which has some JUnit tests in a class called "FooTest".
Jumble starts by running the unit tests (in FooTest.class) on the unmodified Foo class to check that they all pass, and to measure the time taken by each test. Then it will mutate Foo in various ways and run the tests again to see if they detect the mutation. It continues this process until all mutations of Foo have been tried. The output might look like this:
Mutation points = 12, unit test time limit 2.02s
M FAIL: Foo:31: negated conditional
M FAIL: Foo:33: negated conditional
M FAIL: Foo:34: - -> +
M FAIL: Foo:35: negated conditional
This says that Jumble has tried 12 different mutants of Foo and the unit tests (in FooTest) correctly detected the changed behaviour in 8/12 cases (indicated by a '.'), but failed to detect the change in the other 4/12 cases. For example, when an if (C) decision on line 31 was mutated to if (!C), the unit tests still passed, so they are probably not testing that if statement thoroughly enough.
Overall, 67% of the mutations were detected by the unit tests, which means that they probably need to be improved.
What's New in This Release:
· This is the first public release, though Jumble has been used on a daily basis within ReelTwo.com for several years.