Blog über Software, Mensch und Persönlicher Entwicklung

Properties Based Testing - Richard Seidl

Geschrieben von Richard Seidl | 12.02.2024

Properties based testing ist eine Methode, die konstante Ausgabeeigenschaften überprüft und traditionelle Teststrategien ergänzt. Diese Technik eignet sich besonders für komplexe und Microservices-basierte Systeme, da sie die Überprüfung einer Vielzahl von Eingaben ermöglicht. Nikhil erklärt mit mehreren real life Beispielen, wie PBT funktioniert, was die Vorteile sind und wo die Methode an ihre Grenzen stößt.

“The fundamental proposition of properties based testing is when the system gets to complicated, it is not possible for human to write every test cases.” – Nikhil Barthwal

Nikhil Barthwal ist leidenschaftlich daran interessiert, dezentrale Systeme zu entwickeln. Er hat mehrere Jahre Berufserfahrung in großen Unternehmen sowie in kleineren Start-ups und fungiert als Mentor für verschiedene Start-ups. Außerdem ist er auf verschiedenen internationalen Konferenzen als Redner zu Gast und hält Vorträge zu Themen, die mit dezentralen Systemen und Softwarequalität zusammenhängen.

Highlights dieser Episode:

  • Nikhil erklärte, dass Properties based Testing verwendet wird, wenn Systeme für Menschen zu komplex sind, um jeden Testfall zu schreiben
  • Die Idee besteht darin, Testfälle automatisch auf Basis des Verhaltens des Dienstes zu generieren
  • Nikhil erwähnte, dass Properties based Testing drei Komponenten umfasst: eine Modellierungssprache, einen Generator und einen Schrumpfer
  • Der Generator schreibt Testfälle aus Spezifikationen, und der Schrumpfer vereinfacht lange Sequenzen von Fehlern für das menschliche Verständnis
  • Nikhil lieferte ein Beispiel mit einem E-Commerce-System, um zu veranschaulichen, wie Properties based Testing funktioniert
  • Er riet dazu, klein mit dem Properties based Testing anzufangen und den Umfang organisch zu erweitern
  • Nikhil merkte auch an, dass Properties based Testing hohe Kosten verursachen kann, wenn Testressourcen teuer sind
  • Er betonte, dass Properties based Testing die Tester unterstützt, anstatt sie zu ersetzen

Wie Properties Based Testing die Qualitätssicherung steigert

In dieser Episode habe ich mit Nikhil Barthwal über die Anwendungen von Properties Based Testing gesprochen. Da Software-Systeme zunehmend komplexer werden, stoßen traditionelle Testmethoden an ihre Grenzen und machen den Weg für fortschrittlichere Techniken wie Properties Based Testing frei.

Die Herausforderung, großangelegte Systeme zu testen

Das Testen von Tausenden von Mikroservices stellt eine gewaltige Herausforderung dar. Nikhil erklärt, wie Properties Based Testing dies adressiert, indem es Testfälle automatisch auf Basis des Systemverhaltens generiert und so die Notwendigkeit manueller Testfallerstellung reduziert.

Kernkomponenten von Properties Based Testing

Es gibt drei Hauptkomponenten: Modellierungssprache, Generator und Schrumpfer. Nikhil verwendet ein Beispiel eines arithmetischen Dienstes, um zu veranschaulichen, wie diese Komponenten innerhalb von Properties Based Testing-Frameworks interagieren, um potenzielle Fehler effizient zu identifizieren.

Praktische Anwendungen und Frameworks

Nikhil spricht über verschiedene Technologien, die Properties Based Testing unterstützen. Er hebt auch QuickCheck in Haskell als den Ursprung dieses Konzepts hervor, das seitdem in mehrere Sprachen übersetzt wurde wurde.

Zuverlässigkeit über die menschliche Vorstellungskraft hinaus erreichen

Properties Based Testing zielt darauf ab, menschliche Fähigkeiten zu übertreffen, indem es eine immense Anzahl von Permutationen im Systemverhalten bewältigt. Dies gewährleistet Zuverlässigkeit und deckt Fehler auf, die sich möglicherweise nur unter bestimmten Bedingungen oder im Laufe der Zeit gezeigt hätten.

Implementierung von Properties Based Testing in Organisationen

Nikhil schlägt vor, klein mit Properties Based Testing zu beginnen und dessen Einsatz innerhalb einer Organisation allmählich auszuweiten. Er betont die Bedeutung kultureller Veränderungen und überzeugt Teams, neue Methoden für verbesserte Ergebnisse zu implementieren.

Einschränkungen und Vorsichtsmaßnahmen mit Properties Based Testing

Properties Based Testing hat Einschränkungen. Zum Beispiel ist es nicht geeignet, wo Tests erhebliche Kosten verursachen oder destruktiv sind. Es ist entscheidend, diese Faktoren vor der Einführung abzuwägen.

Ein neuer Verbündeter für Tester

Properties Based Testing ersetzt den Tester nicht, sondern agiert als Assistent, der die Produktivität erhöht, indem es potenzielle Probleme für die menschliche Analyse eingrenzt.