lipton-mutation-testing
Richard Lipton Mutation Testing Style Guide
Overview
Richard Lipton is the father of mutation testing, introducing the concept in the early 1970s. His foundational 1978 paper "Hints on Test Data Selection: Help for the Practicing Programmer" (with DeMillo and Sayward) established the theoretical basis for evaluating test quality. The core insight: if your tests can't detect small, simple faults (mutants), they certainly won't detect complex real bugs.
Core Philosophy
"If a test suite cannot detect a simple fault, it will not detect a complex one."
"Good tests kill mutants. Surviving mutants reveal test weaknesses."
"The mutation score is the only honest metric of test effectiveness."
Mutation testing inverts the question from "does my code pass tests?" to "do my tests actually detect faults?" By systematically injecting small bugs and measuring how many your tests catch, you get an objective measure of test quality that coverage metrics cannot provide.
Design Principles
- Competent Programmer Hypothesis: Real bugs are small deviations from correct code.