Zielgruppe
Studierende des Bachelorstudiengangs Informatik im 5. Semester
Form
Vorlesung (2 SWS) und Praktikum (2 SWS)
Inhalte
- Klassische Softwaretestverfahren
- Äquivalenzklassen und Grenzwertanalyse
- Codeüberdeckungsmaße
- Systematisches Testen & Model Checking
- Durchsuchung des Zustandsraums
- Abstraktion: Modellierung
- Modell und Implementierung
- Praktikum: TLA+
- Fuzzing & Symbolic Execution
- Generierung von Testeingaben für eine hohe Codeüberdeckung mittels
- a) Systematischer Mutation von Testeingaben: Greybox-Fuzzing
- b) Lösung der Pfadbedingung: Symbolic Execution
- Vor- und Nachteile beider Ansätze
- Praktika: AFL++, Z3 SMT Solver, IntelliTest
- Programmverifikation
- Korrektheits- und Vollständigkeitsbeweise
- Schleifeninvarianten
- Praktikum: Dafny
Literatur
Kapitel 1: Klassische Softwaretestverfahren:
- Kleuker, Qualitätssicherung durch Softwaretests
- Kapitel 4 und 5
- Aniche, Effective Software Testing
- Kapitel 2 und 3
Kapitel 2: Systematisches Testen & Model Checking
- Dokumentation des JavaPathFinders
- Kleuker, Formale Modelle der Softwareentwicklung
- Kapitel 2
- Dokumentation TLA+
Kapitel 3: Fuzzing & Symbolic Execution
Kapitel 4: Programmverifikation
- Kleuker, Formale Modelle der Softwareentwicklung
- Kapitel 5
- K. Leino, Program Proofs