#189 Fuzzing: Wenn der Zufall dein bester Tester ist mit Prof. Andreas Zeller
Fuzzing: Software-Stabilität durch Zufalls-generierte EingabedatenTesten, 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/partnersDas schnelle Feedback zur Episode:👍 (top) 👎 (geht so)Anregungen, Gedanken, Themen und WünscheDein 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]: https://podcasts.social/@engkioskBluesky: https://bsky.app/profile/engineeringkiosk.bsky.socialInstagram: https://www.instagram.com/engineeringkiosk/Unterstütze den Engineering KioskWenn du uns etwas Gutes tun möchtest … Kaffee schmeckt uns immer Buy us a coffee: https://engineeringkiosk.dev/kaffeeLinksProf. 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/deOSS-Fuzz: https://github.com/google/oss-fuzzClusterFuzz: https://github.com/google/clusterfuzzThe 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/fandangoinputLab: https://inputlab.net/Paper “Will AI replace Software Engineers? Do not hold your breath”: https://arxiv.org/abs/2502.20429Sprungmarken(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 RechnungenHostsWolfgang Gassler (https://gassler.dev) Andy Grunwald (https://andygrunwald.com/)CommunityDiskutiere mit uns und vielen anderen Tech-Spezialist⋅innen in unserer Engineering Kiosk Community unter https://engineeringkiosk.dev/join-discord