University of Passau · FIM · Software Systems Deutschsprachige Startseite

ST

Minimierung fehlerverursachender Eingaben

Ralf Hildebrandt
Universität Passau
Lehrstuhl für Softwaresysteme
Innstraße 33
94032 Passau, Germany

Phone: +49 851 509-30 91
Fax: +49 851 509-30 92
e-mail: snelting@fmi.uni-passau.de
WWW: http://www.infosun.fmi.uni-passau.de/st/

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

  1. Einleitung
  2. Definitionen
  3. Der Delta-Debugging Algorithmus
  4. Verwendete Hard- und Software
  5. Programme
  6. Probleme
  7. Fallstudien
  8. Ausblick
  9. Fazit
  10. Danksagungen
  11. Verlaufsprotokolle für die Fallstudie fuzz
  12. Verlaufsprotokolle für die Fallstudie GCC stürzt ab
  13. Kommandozeilenargumente
PDF version (681k)
PostScript version (247k, compressed)
Lehrstuhl Softwaresysteme <snelting@fmi.uni-passau.de> - Last modified: 10/16/2000