Bugs, or mutants, are automatically inserted into your production code. Your tests are run for each mutant. If your tests fail then the mutant is killed. If your tests passed, the mutant survived. The higher the percentage of mutants killed, the more effective your tests are.
It's really that simple.
Well... code coverage doesn't really tell you anything about the effectiveness of your tests. Think about it, when was the last time you saw a test without an assertion, purely to increase the code coverage.
Imagine a sandwich covered with paste. Code coverage would tell you the bread is 80% covered with paste. Mutation testing, on the other hand, would tell you it is actually chococate paste and not... well... something else.
Use code analysis and parallel test runner processes to speed things up.
For someone who hates mutants... you certainly keep some strange company.
Oh, they serve their purpose... as long as they can be controlled.
Contribute and get a free t-shirt or sticker. As long as stock lasts.