Property-based testing relates input and output by asserting general properties on automatically generated inputs.
There are different strategies for generating values in property-based testing, like pseudo-random generation, exhaustive generation, and optimization-guided generation.
Property-based testing libraries provide tools for writing value generators, running tests, and shrinking failing values to aid in debugging.