|
Minimierung fehlerverursachender Eingaben
Ralf Hildebrandt
|
|
Diplomarbeit (Diploma Thesis), Universität Braunschweig, April 2000.
Betreuer: Andreas Zeller, Universität Passau.
Zusammenfassung
Bei einer bestimmten Eingabe schlägt ein Programm fehl. Welcher Teil
der Eingabe ist für diesen Fehler verantwortlich? Wir zeigen, wie der
Delta-Debugging-Algorithmus beliebige Eingaben verallgemeinert und auf
einen minimalen Testfall reduziert, der den Fehler gerade noch
hervorruft.
In drei Fallstudien wurden fehlerverursachende Eingaben für GCC,
mozilla und verschiedene UNIX-Hilfsprogramme mittels des
dd*-Algorithmus automatisch minimiert. In einer Fallstudie konnte eine
den mozilla-Webbrowser zum Abstürzen bringende Webseite auf etwa
0,020% ihrer ursprünglichen Größe minimiert werden, nämlich:
<SELECT>
Der im Laufe dieser Arbeit entstandene Prototyp kann zur automatischen
Minimierung fehlerverursachender Eingaben (Quelltext, HTML und
Benutzeraktionen) auf UNIX bzw. Linux verwendet werden. Durch die
Implementierung in Python ist eine Portierung auf andere Plattformen
wie z.B. Windows möglich.
Abstract
Given some test case, a program fails. Which part of the test case is
responsible for the particular failure? We show how our
Delta-Debugging algorithm generalizes and simplifies some failing
input to a minimal test case that produces the failure.
In three case studies we automatically minimized failure-inducing
input (source code, HTML, user actions and random data) to various
programs (GCC, mozilla and some UNIX utilities) using the
dd*-Algorithm. In one case study we were able to reduce the size of a
webpage that makes the mozilla webbrowser crash to about 0.020% of its
original size:
<SELECT>
The protoype which was developed while this paper was written can be
used for automatic minimization of failure-inducing input on UNIX or
Linux. The implementation was done using Python, thus making a port to
other platforms like Windows feasible.
Inhaltsverzeichnis
- Einleitung
- Definitionen
- Der Delta-Debugging Algorithmus
- Verwendete Hard- und Software
- Programme
- Probleme
- Fallstudien
- Ausblick
- Fazit
- Danksagungen
- Verlaufsprotokolle für die Fallstudie fuzz
- Verlaufsprotokolle für die Fallstudie GCC stürzt ab
- Kommandozeilenargumente
PDF version
(681k)
PostScript version
(247k, compressed)