Understanding shrinking, invariants, and testability design in property-based testing.
You write a property-based test asserting that reversing a list twice returns the original list. The framework reports a failing case with a large, complex input, then automatically reduces it to a minimal counterexample. This automatic reduction is called 'shrinking'. Which statement most accurately describes shrinking and a common design pitfall that undermines it?