Kill All Mutants! (Intro to Mutation Testing)
summary
Mutation testing generates small semantic changes in copies of code and runs the tests to see which mutants are killed vs survived, exposing weak tests and meaningless or redundant code. Tools map functions to their covering tests, create mutants (examples include operator swaps, removing loops, replacing bodies) and report survivors; a rough worst case is 1000 mutants per function leading to hundreds of test runs (minutes to hours) unless tooling filters or incremental runs are used. Use survivors to remove redundant code or add focused tests; results need human interpretation.
AI-written summary · about
chapters (18)
- 0:00Mutation testing intro
- 1:30Test coverage isn't enough
- 2:57How mutation testing works
- 6:53Mutation vs chaos/fuzzing
- 9:44Mutation tools workflow
- 12:35Technical details of mutation testing
- 17:29Simple mutation example
- 24:18Complex mutation example
- 28:58History of mutation testing
- 31:26Why mutation testing is CPU-heavy
- 32:30Single mutations per mutant
- 34:37Integrating mutation testing
- 36:25Summary and drawbacks
- 37:08Q&A: Argument swapping in tests
- 40:04Q&A: Over-engineering and LLMs
- 42:38Q&A: Mutants causing infinite loops
- 44:25Q&A: Post-deployment mutation testing
- 45:47Q&A: Mutation testing and mocking
related talks
29mKill All Mutants! (Intro to Mutation Testing)
21mKill All Mutants! (Intro to Mutation Testing)
01h 06mKill All Mutants! (Intro to Mutation Testing)
52mKill All Mutants! (Intro to Mutation Testing)
35mKill All Mutants! (Intro to Mutation Testing)
50mKill All Mutants! Intro to Mutation Testing
39mKill All Mutants! (Intro to Mutation Testing)
22mKill All Mutants! (Introduction to Mutation Testing)
