Kapitel 87. Die unvernünftige Effektivität von Fuzz-Tests
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Nat Pryce
Unabhängig davon, ob du testgetriebene Entwicklung verwendest oder nicht, leiden Programmierer/innen, die automatisierte Tests schreiben, unter einer positiven Testverzerrung:1, 2 Sie testen eher, ob sich die Software bei gültigen Eingaben korrekt verhält, als ob sie bei ungültigen Eingaben robust ist. Infolgedessen schlagen unsere Testsuiten fehl, um ganze Klassen von Fehlern zu entdecken. Fuzz-Testing3 ist eine unverhältnismäßig effektive Technik für Negativtests, die sich leicht in bestehende automatisierte Testsuiten integrieren lässt. Wenn du Fuzz-Tests in deinen testgetriebenen Entwicklungsprozess aufnimmst, kannst du robustere Systeme entwickeln.
Wir haben zum Beispiel die Software eines weit verbreiteten Verbraucherprodukts erweitert, um Daten von Webservices abzurufen. Obwohl wir darauf geachtet haben, robusten Netzwerkcode zu schreiben und sowohl negative als auch positive Fälle getestet haben, haben wir beim Fuzzing sofort eine überraschende Anzahl von Eingaben entdeckt, die die Software zu unerwarteten Ausnahmen veranlasst haben. Viele der Standard-Java-APIs, die Daten analysieren, lösen ungeprüfte Ausnahmen aus, so dass der Typprüfer nicht sicherstellen konnte, dass ...
Get 97 Dinge, die jeder Java-Programmierer wissen sollte now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.