Kill Evil Mutants!
summary
Mutation testing makes tiny controlled changes to code, runs the function’s tests against each clone, and flags any surviving evil mutants that keep all tests green. Practical runs quickly explode (example: ten modules × ten functions × five mutation points × 20 variants ≈ 100,000 mutants) so tools like mutant (Ruby) and mud (Python) use incremental runs and semantically equivalent pruning (often cutting ~2/3). Examples: a single test assert 2*2==4 yields mutants (addition, swapped operands) that survive until adding 2*3==8; loop-removal mutants reveal unexercised large-message paths; some mutants require timeouts or process isolation to kill.
AI-written summary · about
chapters (16)
- 0:00Mutation testing intro
- 1:55What is mutation testing
- 3:45Mutation vs chaos testing
- 5:10Mutation testing drawbacks
- 8:05History of mutation testing
- 9:27How mutation testing works
- 13:07Evil mutants defined
- 14:57Code changes one at a time
- 15:18CPU intensive testing
- 20:39Mutation testing tools
- 25:45Simple code examples
- 30:29Complex code examples
- 34:59Kill immortal mutants
- 38:30False alarms mitigation
- 38:53Summary and takeaways
- 40:24Q&A
related talks
47mKill All Mutants! (Intro to Mutation Testing)
52mKill All Mutants! (Intro to Mutation Testing)
01h 06mKill All Mutants! (Intro to Mutation Testing)
50mKill All Mutants! Intro to Mutation Testing
22mKill All Mutants! (Introduction to Mutation Testing)
21mKill All Mutants! (Intro to Mutation Testing)
39mKill All Mutants! (Intro to Mutation Testing)
35mKill All Mutants! (Intro to Mutation Testing)
