Property-based testing is a software testing technique where tests are generated based on properties (invariants) that the system must satisfy. Instead of testing specific inputs and expected outputs (like with usual unit testing methods), property-based testing generates a large number of inputs and tests them against the specified properties/invariants.
This helps to uncover edge cases and corner cases that may not have been considered in traditional testing methods. Property-based testing is commonly used in functional programming languages (as fans of Haskell will often point out!) and is becoming increasingly popular in other programming languages and testing frameworks.
To get started, check out: