Talk by John Backus at Rails Conf 2017.
"The idea is that if code can be changed and your tests do not notice, then either that code isn't being covered or it does not have a speced side effect." - mbj
mutant
gem automatically checks for mutation coverage in order to improve the test suite.
Implementation can help to assist with crafting more strict interfaces for a program. Examples can be: forcing type casting, raising errors instead of failing silently, and structuring dates.
Other use cases are for hardening Regular Expressions to catch pattern matching edge cases.
Additionally, mutation coverage can help with cleaning up API service calls.
Mutation testing also assists with detecting dead code.