Bugs, or mutants, are automatically inserted into your production code. Your tests are ran 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.
Still confused? Why not taking a look at our example page and try it out yourself?
Well... code coverage doesn't really tell you everything 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 chocolate paste and not... well... something else.
Sounds complicated? Don't worry, Stryker has your back. It uses one design mentality to implement mutation testing on 3 platforms. It's easy to use and fast to run. Stryker will only mutate your source code, making sure there are no false positives.