Bild mit Unilogo
home uni uni kontakt kontakt
unilogo Universität Stuttgart
Institut für Kommunikationsnetze und Rechnersysteme (IKR)

Themenbeschreibung

Druckansicht
 

Bachelor-Arbeit / Forschungsarbeit Nr. 1090    (Zu vergeben)   [pdf]

Automatisierte Testfallgenerierung zum Test eines Compilers für eine Variante der Programmiersprache Go


Methoden

Themengebiete

Programmierung
Softwareentwurf

Compilerbau
Testen


Beschreibung

Hintergrund

Am Institut entsteht derzeit eine Systemsprache für ein experimentelles, objektbasiertes Rechnersystem. Es handelt sich dabei um eine Variante der Programmiersprache Go, die den Namen GoSUB trägt. Dazu entstehen auch prototypische Compiler: Ein Compiler, der Code für konventionelle Rechner erzeugt und das Bootstrapping-Problem für den anderen, in GoSUB implementierten Compiler löst, der Code für das auf einem FPGA realisierte Rechnersystem erzeugt.

Um die Qualität von Compilern zu verbessern, kommen Testfallgeneratoren wie "randprog", "csmith" und "yarpgen" zum Einsatz. Sie nutzen den sogenannten "Fuzzing-Ansatz" und versprechen, zahlreiche Compilerfehler aufzudecken. Ein solcher Generator nutzt intern eine Code-Zwischendarstellung, zum Beispiel einen abstrakten Syntaxbaum (AST). Dabei erzeugt der Generator Syntaxbaumknoten pseudo-zufällig unter Berücksichtigung von Sprachregeln, zum Beispiel zur Sichtbarkeit von Bezeichnern oder zur Zuweisbarkeit. Abschließend wandelt er die Zwischendarstellung in Quellcode um, compiliert diesen mit verschiedenen Compilern und vergleicht die Ausführungsergebnisse. Dazu muss das generierte Programm Werte globaler Variablen und Ergebnisse von Funktionsaufrufen geeignet ausgeben.

Aufagabenstellung

Im Rahmen dieser Arbeit entwerfen Sie einen Testfallgenerator in GoSUB, der automatisiert Testprogramme generiert, compiliert, ausführt und deren Ergebnisse auswertet. Die Arbeit gliedert sich in die folgenden Schritte:

Einarbeitung in die Sprache GoSUB

Literaturrecherche zu Testfallgeneratoren

Entwurf und Implementierung eines Verfahrens zum Vergleich von Ausführungsergebnissen

Implementierung der Quellcodeerzeugung unter Verwendung einer bestehenden Bibliothek zur Wandlung von ASTs in Quellcode

Testfälle automatisiert ausführen und auswerten

Erworbene Kenntnisse und Fähigkeiten

Sie verstehen, wie ein Compiler funktioniert und vertiefen Ihr Verständnis von Programmiersprachkonzepten. Sie lernen neue Sprachmechanismen kennen und können Mechanismen in Programmiersprachen kritisch hinterfragen. Schließlich sammeln Sie Erfahrung mit der Implementierung und Verwendung moderner Testmethoden.


Voraussetzungen

 

Programmierkenntnisse


Kontakt

M.Sc. Tobias Schwientek, Raum 1.365 (ETI II), Telefon 685-69008, [E-Mail]

M.Sc. Timo Madeheim, Raum 1.336 (ETI II), Telefon 685-69012, [E-Mail]