Introduction to property-based testing