Mutation testing: grading the tests, not the code

The anchor post of the mutation-testing series. What mutation testing actually measures, why it exists as a complement to line coverage, when to reach for it, and the specific classes of test-suite weakness it uncovers — written to stand alone regardless of your language.

July 25, 2026 · 21 min · Omar Crosby

Mutation testing in Rust: getting started with cargo-mutants

The Rust chapter of the mutation-testing series: what the technique measures, why the number is stronger than line coverage, and how to run cargo-mutants against a real Rust crate in five minutes.

July 25, 2026 · 14 min · Omar Crosby

Mutation testing in Go: getting started with gremlins

The Go companion to the mutmut post: what mutation testing actually measures, how gremlins produces the score, and how to run it against a real Go module in five minutes.

July 25, 2026 · 16 min · Omar Crosby

Mutation testing in Python: getting started with mutmut

Line coverage tells you where the tests went. Mutation testing tells you whether the tests you have would notice if the code were wrong. A plain-language getting-started guide with mutmut.

July 25, 2026 · 15 min · Omar Crosby

Unit tests: what we're actually arguing about

Four voices argue about unit tests. The debate dissolves once you separate coverage-as-target from coverage-as-detector, with testability as the real prize.

July 24, 2026 · 13 min · Omar Crosby