Experiences with QuickCheck: Testing the Hard Stuff
If you’ve ever wondered whether there is a better way to test software than by writing and maintaining thousands of test cases, then this talk is for you. I’ll explain “property-based testing”, which combines test case generation, test case simplification, and using properties to specify your code. I’ll show you what you need to think about to make it work in practice, and tell you tales of some of our more entertaining bugs.
I’ve loved functional programming all my career; I wrote “Why Functional Programming Matters”, a manifesto for the field, way back in the eighties. I urged lazy evaluation on John Backus (but failed to persuade him). I was a co-designer of Haskell. I moved to Sweden, home of the Lazy ML compiler, in the nineties, and at the turn of the millenium I co-invented property-based testing. I co-founded a startup in 2006 to bring PBT to industry, and I’ve learned to love (other peoples’) buggy software! My motto: “make hard things easy with functional programming”.