> One of the big differences between Hypothesis and Haskell QuickCheck is how shrinking is handled.
> Specifically, the way shrinking is handled in Haskell QuickCheck is bad and the way it works in Hypothesis (and also in test.check and EQC) is good. If you’re implementing a property based testing system, you should use the good way. If you’re using a property based testing system and it doesn’t use the good way, you need to know about this failure mode.
> The big difference is whether shrinking is integrated into generation.
> Integrating shrinking into generation has two large benefits...
> The first is mostly important from a convenience point of view...
> But the second is <i>really</i> important, because the lack of it makes your test failures potentially extremely confusing.