property-based-testing

Design property-based tests that verify code properties hold for all inputs using automatic test case generation. Use for property-based, QuickCheck, hypothesis testing, generative testing, and invariant verification.

By aj-geddes · 436 installs

npx skills add aj-geddes/useful-ai-prompts --skill property-based-testing

Source repository · Upstream listing

Property Based Testing Table of Contents [Overview]( overview) [When to Use]( when to use) [Quick Start]( quick start) [Reference Guides]( reference guides) [Best Practices]( best practices) Overview Property based testing verifies that code satisfies general properties or invariants for a wide range of automatically generated inputs, rather than testing specific examples. This approach finds edge cases and bugs that example based tests often miss. When to Use Testing algorithms with mathematical properties Verifying invariants that should always hold Finding edge cases automatically Testing parsers and serializers (round trip properties) Validating data transformations Testing sorting, searching, and data structure operations Discovering unexpected input combinations Quick Start Minimal working example: Reference Guides Detailed implementations in the references/ directory: Guide Contents [Hypothesis for Python](references/hypothesis for python.md) Hypothesis for Python [fast check for JavaScript/TypeScript](references/fast check for javascripttypescript.md) fast check for JavaScript/TypeScript [junit quickcheck for Java](references/junit quickcheck for java.md) junit quickcheck for Java Best Practices ✅ DO Focus on general properties, not specific cases Test mathematical properties (commutativity, associativity) Verify round trip encoding/decoding Use shrinking to find minimal failing cases Combine with example based tests for known edge cases Test invariants that should always hold Generate realistic input distributions ❌ DON'T Test properties that are tautologies Over constrain input generation Ignore shrunk test failures Replace all example tests with properties Test implementation details Generate invalid inputs without constraints Forget to handle edge cases in generators