PLClub Discussion Group


Adventures in Property-Based Testing

Sep 6 2019
Benjamin Pierce

Property-based testing in the style of tools like QuickCheck occupies an interesting middle ground among techniques for improving software construction: It is relatively lightweight and accessible, but much more expressive than conventional unit testing, encouraging programmers to think about their programs in terms of logical specifications rather than just examples.

I’ll describe two ongoing research threads: (1) extending QuickCheck-style random testing with coverage-based “fuzz testing” in the style of tools like AFL, and (2) hybridizing random and enumerative test-case generation monads to yield a powerful set of new combinators allowing backtracking during test generation. Both extensions yield significant speedups in realistic testing scenarios.