Zielgruppe
Form
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
Organisatorisches
Zielgruppe | Bachelor Informatik, Bachelor Informatik dual |
Turnus | jedes Wintersemester |
Lehrformen | Vorlesung (2 SWS), Praktikum (2 SWS) |
Leistungspunkte | 5 |
Voraussetzungen |
Die Prüfungen in den folgenden Modulen müssen bestanden sein: - Einführung in die Informatik Die Module des dritten und vierten Studiensemesters sollten erfolgreich absolviert sein. |
Voraussetzungen zur Prüfungsteilnahme | Erfolgreiche Teilnahme am Praktikum |
Prüfungsform | Das Modul wird regelmäßig abgeschlossen durch eine schriftliche oder mündliche Prüfung. Die im aktuellen Semester geforderte Prüfungsleistung entnehmen Sie bitte der Prüfungsliste des Fachbereichs Elektrotechnik und Informatik, die spätestens vor Beginn der Vorlesungszeit des Semesters veröffentlicht wird. |
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