Fuzz Driven Development
summary
Builds a small Rust library that squashes JSON Patch (RFC 6902) sequences using cargo-fuzz and serde_json to generate counterexamples and drive development. Fuzzing produces concrete failing inputs, leads to unit tests, and forces fixes (hashmap for last-wins, radix trie for prefix merging). Finds that some cases require the original document to produce a truly minimal patch; fuzzing uncovers structural and API tradeoffs rather than vague examples, and the iterative process produces a working squasher with documented failure cases.
AI-written summary · about
chapters (12)
- 0:00Start
- 0:24Who am I? Midas Lambrichts
- 0:55When you know, that you don't know
- 1:32Fuzzing/Fuzz testing
- 2:39Fuzz Driven Development
- 4:42Example: A parser
- 14:00Invariant
- 15:29The Fuzzing Target
- 18:01Step 4: Reflect
- 20:10Develop/Unit tests
- 22:49Step 6: Iterate
- 26:18So what did we do?
related talks
53mFuzz Testing for Fun and Profit
31m“Fuzz or lose..."
44mFuzzing in Go: Fear, Despair, Acceptance and the Long-Awaited Success
21mModern Testing and Fuzzing in Bitcoin Core
27mPractical Fuzzing in Go
30mFuzzing Testing: Practical Applications
39mMaking Fuzzing Part of Your Software Development Lifecycle
52mStructure aware fuzzing
