Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Zufallsbasiertes Testen mit QuickCheck.

Ähnliche Präsentationen


Präsentation zum Thema: "Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Zufallsbasiertes Testen mit QuickCheck."—  Präsentation transkript:

1 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Zufallsbasiertes Testen mit QuickCheck

2 1 Christian Binkhoff Agenda Einführung Haskell QuickCheck Zusammenfassung

3 2 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Einführung Testen als essenzieller Bestandteil gewährleistet Robustheit und Qualität von Software Kosten in Höhe von 50% der Entwicklungskosten Forderung nach Effizienz von Testmethodiken Zufallsbasiertes Testen als effiziente Methodik Kein Starres Definieren von Testfällen Generierung von Zufallsdaten für Input automatisch Grundlage ist eine Verteilung Überprüfung eines Moduls mit Zufallsdaten vorwiegend Black-Box-Testing

4 3 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Black-Box-Testing Implementierung bleibt verborgen Lediglich Spezifikation der Funktionalität erforderlich Paarweise Erzeugung von Input/Output-Daten Vergleich von Soll- und erzeugtem Output Erzeugung der Inputdaten willkürlich oder kalkuliert Prädestiniert für zufallsbasierte bzw. automatisierte Methodik Wahl der Verteilung relevant für Qualität eines Tests Relevanz von deklarativen Programmiersprachen CodeInputparameterVergleich d. Outputs mit Soll

5 4 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff White-Box-Testing Benutzung, falls Spezifikation schwierig Code wird herangezogen Control-Flow-Testing Pfadabdeckung Jeder Pfad mindestens 1-fach abgedeckt Data-Flow-Testing Bildung von Chains mit 3 Informationen (Var, Wert, Nutzung) Ansätze zur Anwendung auch im deklarativen Umfeld

6 5 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Agenda Einführung Haskell QuickCheck Zusammenfassung

7 6 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Haskell Haskell als deklarative Programmiersprache Formulierung eines Problems durch Funktionen/Definitionen Keine Explizite Konzeption Haskell evaluiert Funktionen auf Grundlage eines Inputs Zustandslos Beispiel:

8 7 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Haskell Zufallsbasierter Kontext Generierung verschiedener n Aufruf von aufsummieren mit jeweiligem n Vergleich des Ergebnisses mit Referenz/Spezifikation Falls alle Durchläufe korrekt, ist aufsummieren korrekt

9 8 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Haskell Generierung von einfachen Typen trivial Zustandlosigkeit von Haskell vorteilhaft (Seiteneffekte) Zustandlosigkeit wirkt sich auf Generierung aus Generierung von komplexen Datenstrukturen (Bäume) nicht möglich Abhilfe: Monaden 5 101

10 9 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Monaden Begriff der Mathematik Umsetzung von imperativen Prinzipien (Zustand) Ursprünglich für Input/Output von dekl. Programmen Hilft bei der Generierung komplexer Datenstrukturen

11 10 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Agenda Einführung Haskell QuickCheck Zusammenfassung

12 11 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff QuickCheck In Haskell geschriebenes Modul In Haskell als solches einsetzbar Umfasst rund 300 Zeilen (lightweight) Testmethodik im Rahmen dekl. Programmiersprache Black-Box-Testing Zufallsbasiert auf Grund von Verteilungen

13 12 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Konzept

14 13 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Beispiel Haskell-Interpreter: Falsches Definition:

15 14 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Komplexeres Problem

16 15 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Funktionalität Benutzung bedingter Properties möglich Generierung erfolgt je Durchlauf solange, bis Property erfüllt Gefahr: Verzerrung der Verteilung Restriktion der Bedingung verwirft bspw. bestimmte, notwendige Testdaten Beispiel: sortierte Liste als Bedingung fast nur kurze Listen als Input

17 16 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Funktionalität Überwachung von Inputparametern Monitoring durch Klassifikation classify collect

18 17 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Selbstdefinierte Generatoren Hohe Qualität eines Tests gefordert Annäherung der Testdaten an die tatsächlichen Versuch der Anlehnung einer Verteilung Berücksichtigung komplexer Typen Forderung zur Konzeption eigener Generatoren Beispiel Liste: Generator für sortierte Listen Bedingung entfällt Listenlängen repräsentativ

19 18 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Selbstdefinierte Generatoren Eigener Typ instanziiert Klasse: Eigener Generator muss spezifiziert werden Standardtypen haben bereits Instanzen Basisgeneratoren können kombiniert werden Beispiel: weitere: oneof, frequency, size Abstraktes Gen ist Instanz der Haskell-Klasse Monad Berücksichtigung der Monadenfunktionalität

20 19 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Binärbaum mit Funktionen suche loesche und einfuegen Demo

21 20 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Binärbaum Der Aufruf erfolgt im Haskell-Interpreter Die Properties werden getestet In diesem Beispiel liegt der Anteil der Binärbaumgröße von [1,2,3] bei etwa 20-30%

22 21 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Agenda Einführung Haskell QuickCheck Zusammenfassung

23 22 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Zusammenfassung QuickCheck ist probates Mittel zum Testen Schnell, effektiv, flexibel, einfach im Umgang Überwachung der Testläufe Geringe Testkosten Nachteil Keine Garantie bei postulierter Fehlerfreiheit Konzeption komplexer Properties Generatorenentwurf kann komplex werden Ausblick White-Box-Testing (Data-Flow) mit QuickCheck White-Box-Testing bei Java

24 23 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Ende Vielen Dank für die Aufmerksamkeit! Fragen?

25 24 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Backup

26 25 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Backup

27 26 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Backup

28 27 Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Backup


Herunterladen ppt "Zufallsbasiertes Testen mit QuickCheck Christian Binkhoff Zufallsbasiertes Testen mit QuickCheck."

Ähnliche Präsentationen


Google-Anzeigen