Test smarter, not harder!
Effizientes Testmanagement für komplexe Software
Der stetig wachsende Umfang und die steigende Komplexität von Softwaresystemen lässt den Testaufwand schnell explodieren. Anstatt immer größere Anstrengungen zu betreiben oder auf bessere Werkzeuge zur Testautomatisierung zu hoffen, liegt der Schlüssel für ein effektives und effizientes Testen in vielen Fällen in der Fokussierung des Testaufwands auf die fehlerhaften Systemteile und Komponenten. Fehler sind typischerweise ungleich über ein Softwaresystem verteilt. In einem Forschungsprojekt am SCCH arbeiten Experten aus verschiedenen Schwerpunkten an Methoden, die es erlauben, bereits vor dem Testen die fehlerhaften Komponenten eines Systems zu identifizieren..
Überblick
Softwaresysteme wachsen ständig. Mit jeder neuen Version steigt die Zahl der Features. Jede neue Software am Markt ist größer und komplexer als ihre vorausgehende Generation. Mit dem steigenden Umfang steigt jedoch auch der notwendige Aufwand für Qualitätssicherung und das Testen – und dies überproportional zur Anzahl der neuen Features. Denn mit jeder neuen Version muss sichergestellt werden, dass sowohl die neuen Features keine Fehler enthalten als auch, dass die bestehende Funktionalität trotz der Erweiterungen gewährleistet ist. Der Versuch, mit jeder Version das gesamte System erneut vollständig zu testen, ist eine technische und wirtschaftliche Herausforderung.

Herausforderung
Ein vielversprechender Lösungsansatz besteht deshalb darin, mit dem Test genau dort anzusetzen, wo tatsächlich auch Fehler vorhanden sind. Es gilt, das Richtige zu testen. Auch für Softwaresysteme gilt das Pareto-Prinzip: 80 Prozent der Fehler eines Softwaresystems stecken in nur 20 Prozent der Komponenten. 50 Prozent der Komponenten sind frei von Fehlern. Nur, welche Komponenten sind es, die Fehler enthalten? Und wie bekommt man diese Information bereits vor dem Test? „Durch Data-Mining-Technologien werden wiederkehrende Muster und Zusammenhänge in den Daten erkannt, die dann in einem Vorhersagemodell zur Prognose zukünftiger Ereignisse herangezogen werden,“ fasst Dr. Thomas Natschläger, Leiter der Gruppe Industrial Data Mining, den Lösungsansatz zusammen. Zur Vorhersage von Fehlern in Softwaresystemen werden Daten aus der Versionsverwaltung, dem Fehler- und Release-Management sowie der statischen Analyse des Quellcodes verwendet.
Lösung
In mehreren Studien untersuchte das SCCH die Datenbestände großer industrieller Softwaresysteme und identifizierte typische Muster und Zusammenhänge mit Fehlern. Typische Muster sind etwa die Art oder die Anzahl der Änderungen, die an einer Softwarekomponente durchgeführt wurden. Jedes einzelne Muster gibt einen kleinen Hinweis darauf, ob eine Softwarekomponente fehlerhaft oder fehlerfrei ist. Die Kombination vieler solcher Muster in Form eines Vorhersagemodells erlaubt die Prognose der Fehler in den Softwarekomponenten einer zukünftigen Version. „Die besten Ergebnisse bekommen wir derzeit mit Daten aus der statischen Analyse des Quellcodes und den Änderungsstatistiken. Bei der Vorhersagegenauigkeit liegen wir aktuell bei rund 80 Prozent“, beschreibt Rudolf Ramler, Projektleiter am SCCH, den aktuellen Stand der Forschung.