Property Based Developer Testing

From CitconWiki
Jump to navigationJump to search

Session at CITCONNA2013Sessions

Proposed by Paul Holser

  • Amounts to adding "for-all" style assertions about a function to some "there-exists" style tests.
  • Works best on already-TDD'ed code. TDD builds up designs example by example. Hard to see the "for-all" statements without data point to triangulate from.
  • Agitar does something similar -- execute code using lots of different kinds of inputs, possibly deriving interesting data points by inspecting the test subject itself...
  • Works well on already "math-y" domains
  • Drives you, if you're paying attention, away from Primitive Obsession and modeling things like SKUs, Prices, SSNs, etc. as first-class concepts. Otherwise generators miss too much, or try to create invalid things.

Literature

Tooling:

Java

Scala

Python

Ruby

Haskell

Erlang