Dolmetschertests in C-Sprache

Überall auf der Welt arbeiten Informatiker mit der Programmiersprache C, die Basis für Programme wie Photoshop oder Word. Allerdings müssen die ellenlangen Quelltexte, die von Softwareentwicklern in C geschrieben werden, auch für den Computer verständlich sein. Dafür sorgt ein Übersetzungswerkzeug, ein so genannter Compiler. Wie ein Dolmetscher englische in deutsche Sätze, übersetzt die Software die Programmier- in die Maschinensprache: Die Codes und Befehle der Informatiker werden in die Nullen und Einsen verwandelt, die ein Computer versteht. „Wenn eine Übersetzung in die Maschinensprache fehlerhaft ist, dann geht die Semantik flöten“, erklärt Lindig, wissenschaftlicher Mitarbeiter am Lehrstuhl für Softwaretechnik an der Universität des Saarlandes in Saarbrücken. Der Computer missversteht die Befehle aus der Programmiersprache, Fehler schleichen sich ein, Programme können verrückt spielen oder machen gar nichts mehr.

Weil die Informatiksprache C überall in unserem Alltag steckt – vom DVD-Spieler über Wettersatelliten bis hin zu Airbags – ist es wichtig, potentielle Fehler im Compiler zu eliminieren. „Zwar gibt es im Alltag solche Übersetzungsfehler eher selten, aber in einer ungewohnten Situation kann es dann doch zu einer Fehlfunktion kommen“, sagt Martin Neitzer von der Firma Gaertner Datensysteme in Braunschweig. Wenn die Funktionen eines Compilers nämlich mit einem Raum verglichen werden, dann gibt es viele große Flächen, die hell erleuchtet sind - hier wurde schon oft gearbeitet und alle Fehler über einen langen Zeitraum korrigiert. Allerdings gibt es einige Stellen, die noch im Dunkeln liegen. „Wer nun in eine dunkle Ecke kommt und dort bestimmte Funktionen nutzen möchte, der kann schon eher über einen Fehler stolpern, der noch nicht entdeckt wurde“, so Neitzer.

Tausende Tests gibt es schon, die entwickelt wurden, um C Compiler laufend zu verbessern. Sie verbergen sich in gesammelten Werken unter Namen wie GCC oder SPEC. Diese allein finden im Durchschnitt schon mal um die 100 Fehler pro Woche in großen Compilern. Das erscheint auf den ersten Blick viel, aber das relativiert sich schnell: allein der innerste Kern einer C Compiler-Software erstreckt sich über eine Million Zeilencodes – das sind fünf Kilometer ausgedrucktes Papier.

Der von Lindig entwickelte Test fügt nun noch einige Fehlerfunde hinzu. Das Besondere ist nämlich, dass Quest auch in die schlecht einsehbare Stellen hervordringt. „Das Programm generiert in einer Endlosschleife immer wieder neue Testcodes nach dem Zufallsprinzip“, erklärt der Informatiker. So lange, bis ein Fehler entdeckt wird oder theoretisch bis in alle Ewigkeit. Lindig beendet die Suche aber meist nach einer halben Stunde – das ist ausreichend.

Was für einen Defekt mit Quest gefunden wurde oder wo er liegt, das weiß man nicht. Darum müssen sich die Programmierer des jeweiligen Compilers kümmern, die von dem Informatiker über einen gefundenen Fehler informiert werden. Auch Anwender eines Compilers können diesen Test, der kostenlos über das Internet heruntergeladen werden kann, zur Qualitätskontrolle einsetzen.

„Quest ersetzt die anderen Tests nicht, aber er ist absolut nützlich, weil er variantenreicher ist als andere – er prüft auch selten genutzte Parameter“, so Lindig. Und obwohl Compiler schon mit zu den meist überprüften IT-Werkzeugen gehören – nach jeder noch so kleinen Veränderung prüfen Programmierer wieder mit Tausenden Testdurchläufen, ob ihnen nicht ein Fehler eingeschlichen ist – lohnt sich jeder Fehlerfund. Dem Dolmetscher solle man schließlich immer vertrauen können und nicht nur in 99.8 Prozent der Fälle.

Wiebke Heiss
COMPAMED.de