Copyright (2000-2005) Ivan Moore.
“Why just think your tests are good when you can know for sure? Sometimes Jester tells me my tests are airtight, but sometimes the changes it finds come as a bolt out of the blue. Highly recommended.” Kent Beck
Jester finds code that is not covered by tests. Jester makes some change to your code, runs your tests, and if the tests pass Jester displays a message saying what it changed. Jester includes a script for generating web pages that show the changes made that did not cause the tests to fail.
Jester is different than code coverage tools, because it can find code that is executed by the running of tests but not actually tested. Jester's approach is called mutation testing or automated error seeding. However, Jester is not meant as a replacement for code coverage tools, merely as a complementary approach.
Jester is for Java code and JUnit tests (download the latest version of Jester). Pester is Jester for Python code and PyUnit tests (download Jester version 1.22 and then Pester version 1.01). Nester is a port of Jester for C#.
In general, the latest versions of Jester might require the latest versions of Java/JUnit/Python. Older versions of Jester might work with older versions of Java/JUnit/Python. There is absolutely no warranty whatsoever.
There is a really good article by Robert C. Martin and Robert S. Koss on test driven development of bowling scoring code. Running Jester on the code they wrote produced a really unexpected result. To quote Robert C. Martin:
I was quite pleased by Jester's simplification of the bowling code. When everyone else was trying to find a way to add the missing "Frame" class, Jester was eliminating the need for the division between the Game and Scorer class. I consider the elimination of a class much more beneficial than the addition of a new one.
The best way to get started with Jester is to read the article Test your tests with Jester on IBM developerWorks.
Many thanks to SourceForge for hosting Jester.
Last Modified November 7, 2005