Mutation testing with Stryker
In software development, we commonly practice continuous delivery. Many teams change and deploy code multiple times a week. By writing and maintaining tests we can assure the quality of the changes. It is common for half of the source code to be tests.
Tests ensure code quality, but how do we know the tests are actually doing that? Indeed! Who is testing the tests?
This is where mutation testing comes into play.
A mutation testing framework makes minor adjustments, called mutants, to the production code. For example, it might change `>` to a `>=`. It then runs the tests. If they fail, we say the mutant is ‘killed’.
The higher the percentage of killed mutants, the better. Doing this for the entire code base provides a good insight into the tests’ effectiveness.
Stryker is such a mutation testing framework, or more accurate, a family of mutation testing frameworks. It is fully open-source, supports multiple programming languages, and is fast to run.
This master class is provided by one of the founders and maintainers of Stryker.
It consists of three parts:
- What is mutation testing and how can it be helpful.
- We will design a mutation testing framework using StrykerJS as an example.
- We will take a look at some of the ways StrykerJS optimizes for performance.
There will also be plenty of room for questions.
Date: Tuesday November 2nd