Resources
Resources
A curated list of talks, papers, and related projects for understanding property-based testing and the ideas behind Hedgehog.
Hedgehog family
- Haskell Hedgehog — The original implementation by Jacob Stanley. Hedgehog for OCaml follows the same design.
- Scala Hedgehog — Scala port with similar architecture.
- F# Hedgehog — F# port.
- Kotlin Hedgehog — Kotlin port.
Talks
- Gens N’ Roses: Appetite for Reduction by Jacob Stanley — Explains why integrated shrinking matters and how rose trees make it work. This is the talk for understanding Hedgehog’s design.
- Choosing properties for property-based testing by Scott Wlaschin — Practical advice on what properties to test.
- Building on Developers’ Intuitions by John Hughes — From the creator of QuickCheck, on making PBT accessible.
Papers
- QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs by Koen Claessen and John Hughes (2000) — The original QuickCheck paper.
- Finding Race Conditions in Erlang with QuickCheck and PULSE by Koen Claessen et al. — State machine testing for concurrency.
- Producing Wrong Data Without Doing Anything Obviously Wrong! by Alex Groce et al. — On the importance of good shrinking.
Books
- Property-Based Testing with PropEr, Erlang, and Elixir by Fred Hebert — Excellent practical introduction to PBT concepts, applicable across languages.
- The Joy of Kotlin by Pierre-Yves Saumont — Includes a chapter on property-based testing.
OCaml ecosystem
- QCheck — The established OCaml PBT library.
- ppx_quickcheck — Jane Street’s PBT with ppx derivation.
- DSCheck — Model checking for concurrent OCaml programs.