Programmcode automatisch überprüfen Dem Fehlerteufel auf der Spur

Um den Fehlerteufel in Programmen aufzuspüren, schleust der Bug Injector zunächst Bugs gezielt in sie ein.

20.02.2020

Source-Code-Manipulationen aufzudecken, ist äußerst komplex. Helfen kann der Bug Injector. Seine Technologie erstellt individuelle Benchmarks, die automatisch eine Codebasis evaluieren.

Bug Injector fügt echten Programmen gezielt Fehler auf Basis eines Bug-Templates hinzu. Das Tool führt auf dem Host-Programm Tests aus, um dynamische Spuren zu erkennen. In diesen Spuren sucht es nach einem Punkt, an dem der Zustand zu den Vorgaben eines Bug-Templates passt. Hier modifiziert Bug Injector das Host-Programm, indem es anhand dieses Templates einen Fehler injiziert.

Die injizierten Bugs dienen als Testfälle, um einen Benchmark zur Evaluierung eines Tools zur statischen Analyse zu erstellen. Bug Injector verbindet jeden eingefügten Fehler mit dem passenden Programm-Input, um den Bug auszuführen.

Test-Benchmarks on demand

Das Forscherteam von Grammatech identifizierte zahlreiche Anforderungen und Desiderate für Fehler-Benchmarks. Daraus ergaben sich Test-Benchmarks „on demand“, die diesen Anforderungen gerecht werden.

Auch ermöglichte es dieser Ansatz, individuelle Benchmarks zu entwickeln, mit denen Tools für spezifische Einsatzszenarien – etwa eine vorgegebene Codebasis oder Fehlerklasse – evaluiert werden können. Die Eignung der erzeugten Benchmarks für die Evaluierung statischer Bug-Detection-Tools und zum Vergleich unterschiedlicher Werkzeuge konnte experimentell gezeigt werden.

Laut der SCAM-Website ist es das Ziel der International Working Conference, Forscher und Praktiker zusammenzubringen, um theoretische Grundlagen, Techniken und Anwendungen im Bereich der Analyse und/oder Manipulation von Quellcode auf Computersystemen weiterzuentwickeln. Denn obwohl sich das Gros der Software-Entwickler-Community anderen Aspekten der Systementwicklung und -evolution zuwendet, ist der Source-Code die einzige exakte Beschreibung des Verhaltens eines Systems. Die Analyse und Manipulation dieses Source-Codes bleibt nach wie vor ein wichtiges Gebiet.

Firmen zu diesem Artikel
Verwandte Artikel