Property-Based Testing

Details
Auch bekannt als

Generatives Testen, QuickCheck-artiges Testen

Kernkonzepte:

Properties (Eigenschaften)

Invarianten, die immer gelten sollten

Generatoren

Automatische Testdatenerzeugung

Shrinking (Vereinfachung)

Minimierung fehlschlagender Testfälle zur einfachsten Form

Universelle Quantifizierung

Testen "für alle Eingaben"

Spezifikationstesten

Testen von High-Level-Eigenschaften, nicht Beispielen

Edge-Case-Entdeckung

Findet Fälle, an die man nicht gedacht hat

Komplementär zu beispielbasiert

Funktioniert neben traditionellen Unit-Tests

Zustandsbehaftetes Testen

Testen von Operationssequenzen

Modellbasiertes Testen

Implementierung gegen einfacheres Modell vergleichen

Wichtige Werkzeuge

QuickCheck (Haskell), Hypothesis (Python), fast-check (JavaScript), FsCheck (.NET)

Wann zu verwenden:

  • Testen reiner Funktionen und Algorithmen

  • Validierung von Geschäftsregeln und Invarianten

  • Testen von Parsern und Serialisierern

  • Finden von Edge Cases in komplexer Logik

  • Ergänzung zu beispielbasiertem TDD