Fuzzing: Software-Stabilität durch Zufalls-generierte Eingabedaten
Testen, besonders automatisiertes Testen der eigenen Software, gilt als Best Practice in der Softwareentwicklung. Egal, ob wir dabei von Unit-Testing, Integration Testing, Funktions- oder Akzeptanztesting sprechen. Die Idee dabei ist, dass wir die Fehler in der Software gering halten. Auch wenn deine Tests zu einer 100%igen Code Coverage führen, heißt es nicht, dass dein Programm keine Bugs hat. Denn ein Problem gibt es bei all diesen Test-Arten: Die Input-Parameter sind i.d.R. nach einer gewissen Struktur erstellt worden. Und dies heißt noch lange nicht, dass diese Input-Parameter alle möglichen Fälle abdecken.
Und genau da kommt das Thema Fuzzing bzw. Fuzz-Testing ins Spiel. Das Testen deiner Software mit zufällig generierten Input-Parametern. Das klingt erstmal wild, kann aber ganz neue Probleme in deiner Software aufdecken. Und das ist das Thema in dieser Episode.
Zu Gast ist Prof. Dr. Andreas Zeller, Forscher im Bereich Softwaretesting und Autor des Fuzzing Books. Mit ihm klären wir, was Fuzzing eigentlich ist, woher es kommt und wie es sich gegenüber anderen Teststrategien, wie Unit-Testing, verhält. Er gibt uns einen Einblick in die Unterschiede von Search-Based Fuzzing, Grammar-Fuzzing, Symbolic Fuzzing sowie spezifikationsbasierten Fuzzern, wie komplexe Systeme mittels metamorphes Testen verbessert werden können, was das Orakel-Problem ist, wie z.B. Datenbanken gefuzzed werden können, aber auch wie das Ganze in der Praxis angewendet werden kann und wie du einfach mit Fuzzing starten kannst.
Bonus: Was ein Orakel mit Testing zu tun hat.
Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners
Das schnelle Feedback zur Episode:
👍 (top) 👎 (geht so)
Anregungen, Gedanken, Themen und Wünsche
Dein Feedback zählt! Erreiche uns über einen der folgenden Kanäle …
- EngKiosk Community: https://engineeringkiosk.dev/join-discord
- LinkedIn: https://www.linkedin.com/company/engineering-kiosk/
- Email: [email protected]
- Mastodon: https://podcasts.social/@engkiosk
- Bluesky: https://bsky.app/profile/engineeringkiosk.bsky.social
- Instagram: https://www.instagram.com/engineeringkiosk/
Unterstütze den Engineering Kiosk
Wenn du uns etwas Gutes tun möchtest … Kaffee schmeckt uns immer
- Buy us a coffee: https://engineeringkiosk.dev/kaffee
Links
- Prof. Dr. Andreas Zeller: https://andreas-zeller.info/
- Prof. Dr. Andreas Zeller auf LinkedIn: https://www.linkedin.com/in/andreaszeller/
- CISPA – Helmholtz-Zentrum für Informationssicherheit: https://cispa.de/de
- OSS-Fuzz: https://github.com/google/oss-fuzz
- ClusterFuzz: https://github.com/google/clusterfuzz
- The Fuzzing Book: https://www.fuzzingbook.org/
- ACM SIGSOFT Outstanding Research Award: https://www2.sigsoft.org/awards/outstandingresearch/
- KLEE Symbolic Execution Engine: https://klee-se.org/
- AFL++: https://aflplus.plus/
- Blog-Artikel über EvoSuite: https://apanichella.github.io/tag/evosuite/
- Manuel Rigger “Bugs found in Database Management Systems”: https://www.manuelrigger.at/dbms-bugs/
- FANDANGO: Evolving Language-Based Testing: https://github.com/fandango-fuzzer/fandango
- inputLab: https://inputlab.net/
- Paper “Will AI replace Software Engineers? Do not hold your breath”: https://arxiv.org/abs/2502.20429
Sprungmarken
(00:00:00) Intro
(00:01:37) Fuzzing mit Prof. Dr. Andreas Zeller
(00:07:55) Info/Werbung
(00:08:55) Was ist Fuzzing?
(00:12:37) Fuzzing im Kontext von anderen Test-Strategien
(00:14:45) Woher stammt Fuzzing?
(00:18:41) Eingabe-Parameter beim Testing
(00:22:43) Unterschiedliche Arten von Fuzzing
(00:31:37) Feedback vom Fuzzer erneut in den Testprozess integrieren
(00:40:23) Search-Based-, Grammar-, Symbolic- und spezifikationsbasiertes Fuzzen
(00:45:04) Fuzzing: Wissenschaft vs. Praxis
(00:50:32) Fuzzing von hochkomplexen Systemen wie z.B. Datenbanken
(01:03:04) LLMs vs. Fuzzing
(01:09:16) Mit dem Fuzzing starten
(01:15:58) Testabdeckung bei elektronischen Rechnungen
Hosts
- Wolfgang Gassler (https://gassler.dev)
- Andy Grunwald (https://andygrunwald.com/)
Community
Diskutiere mit uns und vielen anderen Tech-Spezialist⋅innen in unserer Engineering Kiosk Community unter https://engineeringkiosk.dev/join-discord