Raum Usedom
G4 / IDE und Tools
12.15 - 13.00 Uhr
Themenbereich: Kurzvortrag der IDE und Tools
Property Based Testing
Unter "Einreichung von Sponsored Talks" können Sie noch einen Sponsored Talk einreichen und buchen.
Nicolai Mainiero))) (sidion)
Zielgruppe:
Fortgeschrittene
Abstract:
Der Test-driven development-cycle lautet: add test, write code, run test, refactor code, repeat. Aber wie viele Zyklen braucht man? Wie kann man sicher sein, dass man genügend Tests hat?
Diese Fragen haben sich auch Koen Claessen und John Hughes gestellt und haben deshalb QuickCheck entwickelt: ein leichtgewichtiges Werkzeug zum randomisierten Testen von Haskell Programmen. Mittlerweile gibt es Implementierungen von QuickCheck für mehr als zwanzig Sprachen, unter anderem Java, JavaScript, Swift und Scala.
Anstatt eine Funktion nur für ein paar ausgewählte Eingabewerte zu testen schlagen sie vor, die Funktion für alle bzw. sehr viele Eingaben zu testen. Um dies zu erreichen werden nicht mehr wie bei Unit-Tests einzelne Testfälle definiert und diese dann überprüft, sondern Eigenschaften der Funktion definiert, die für alle Eingaben gelten müssen. Konkret bedeutet das zum Beispiel, dass bei der Addition von zwei positiven Zahlen ungleich Null das Ergebnis immer größer als jeder der beiden Summanden ist.
QuickCheck erzeugt für jede Eigenschaft einer Funktion dutzende Testfälle, um sie zu bestätigen oder zu widerlegen. Wird ein Gegenbeispiel gefunden, so reduziert QuickCheck den Testfall auf die einfachste Variante, bei der die Eigenschaft verletzt wird.
In diesem Vortrag soll das Konzept von Property Based Testing erklärt werden, auf verschiedene Implementierungen für Java eingegangen und an Beispielen gezeigt werden, wie man QuickCheck effizient einsetzt.
Über den Referenten:
Nicolai Mainiero
Nicolai Mainiero
Nicolai Mainiero ist Diplom-Informatiker und arbeitet als Expert Software Developer bei der Firma sidion. Er entwickelt seit über neun Jahren Geschäftsanwendungen in Java und PHP für unterschiedlichste Kundenprojekte. Dabei setzt er vor allem auf agile Methoden wie Scrum oder Kanban. Außerdem interessiert er sich für funktionale Programmierung, Aktorensysteme und reaktive Anwendungen.