Bessere Software-Tests durch Evolutions-Prinzip

Informatiker der Universität des Saarlandes haben ein System entwickelt, das automatisches Testen von Software ohne Fehlalarme ermöglichen soll. Mithilfe eines genetischen Algorithmus simuliert es so lange Benutzereingaben, bis das Programm vollständig überprüft ist.
Code, Programmierung, Quellcode, Programmiersprache
Damit soll ein verbreitetes Problem in der praktischen Software-Entwicklung beseitigt werden: Wenn Entwickler eine Software unter Termindruck fertig stellen, wird häufig bei der Qualitätskontrolle, also dem gründlichen Testen, gespart. Automatische Softwaretests sind zwar möglich, werden aber unter anderem deswegen nicht eingesetzt, weil sie immer wieder Fehlalarme produzieren, die unnütz Zeit kosten. Denn solche Tests beschreiben oft für die jeweilige Software-Komponente einen Fall, der bei einer realen Ausführung des Programms nie auftreten würde, berichteten die Forscher.

"Man kann das mit einem IKEA-Regal vergleichen, das aus vielen einzelnen Teilen besteht", erklärte Florian Groß, Doktorand am Lehrstuhl für Softwaretechnik. Eine denkbare Falschmeldung wäre dann zum Beispiel: "Drei vertikal gestapelte Regalböden ergeben einen Systemabsturz", obwohl Regalböden im fertigen Regal nie vertikal gestapelt werden. Ein echter Fehler hingegen wäre die Variante: "Es fehlt eine Schraube. Die Böden im Regal sind schräg. Bücher rutschen herunter."

Die Saarbrücker Informatiker setzen daher darauf, die Testfälle nicht für einzelne Komponenten, sondern für Systemschnittstellen wie die grafische Benutzeroberfläche zu generieren. Da der Anwender darüber das Programm bedient, muss dieses unter jeder denkbaren Eingabe fehlerfrei funktionieren. "Das bedeutet im Umkehrschluss, dass jede auf diese Art aufgedeckte Fehlfunktion auch auf einen echten Fehler hindeutet", so Groß und fügt hinzu, dass sich dieser durch eine geringe Anzahl von Bedienschritten beschreiben lasse, was ihn wiederum leicht nachvollziehbar und leicht wiederholbar mache.

Wie das aussehen könnte, zeigt der Prototyp des Systems, den die Forscher aufgrund ihres Ansatzes "Explorative System Testing" (Exsyst) getauft haben. Er präsentiert die Bedienoberfläche des zu testenden Programms und lässt Textfragmente eingeben und Bedienelemente anklicken. Darüber zeigen ein grüner Fortschrittsbalken und eine zweistellige Ziffer an, wieviel Prozent des Programmcodes bereits getestet wurden.

Möglich macht dies ein genetischer Algorithmus. "Er funktioniert ähnlich wie die biologische Evolution. Eine Menge von Testfällen wird zufällig erzeugt. Daraus werden diejenigen ausgewählt, die als sinnvoll erscheinen. Das System verändert sie geringfügig und kombiniert sie miteinander, um eine neue Generation von Benutzereingaben zu erzeugen", erläuterte der Informatiker. Diese und folgende Generationen müssen dann ebenfalls Auslese und Rekombination über sich ergehen lassen.

Dabei stellen die Forscher über eine spezielle Optimierungsfunktion sicher, dass ein maximaler Anteil des Programmcodes getestet wird. Aufgedeckte Fehlfunktionen werden an den Entwickler weitergegeben. "Wir erreichen damit eine bessere Codeabdeckung als herkömmliche Methoden zur Testfallgenerierung", sagte Groß weiter. Dieses Ergebnis habe nicht nur die Saarbrücker Forscher, sondern auch weitere Experten auf diesem Gebiet überrascht.
Jetzt einen Kommentar schreiben


Alle Kommentare zu dieser News anzeigen
Folgt uns auf Twitter
WinFuture bei Twitter
Interessante Artikel & Testberichte
WinFuture wird gehostet von Artfiles
Tipp einsenden
❤ WinFuture unterstützen
Sie wollen online einkaufen? Dann nutzen Sie bitte einen der folgenden Links, um WinFuture zu unterstützen: Vielen Dank!