Zeitnah Softwaretests durchführen

Testautomatisierungstools machen es möglich

Softwarefehler, die erst in einer späten Phase der Software-Entwicklung entdeckt werden, sind zehn Mal so teuer wie solche, die schon beim Schreiben des Software-Codes auffallen. Doch eine zu frühe, häufige manuelle Qualitätssicherung würde den Prozess ­aus­bremsen. Was also tun?

Warteschlange, Bildquelle: Thinkstock/Digital Vision

Softwarefehler sollten besser früher als zu spät entdeckt werden - sonst könnte es teuer werden.

Software ist überall. Unternehmen aus dem Gesundheitswesen, der Automobilindustrie oder der Produktion sind heute immer auch zugleich Software-Unternehmen. Chevrolets Hybridfahrzeug „Volt“ beispielsweise, hierzulande als Opel Ampera vertrieben, benötigt allein zehn Millionen Zeilen Software-Code, um alle Funktionen ausführen zu können. Immer komplexer werdende Produkte und kurze Lebenszyklen setzen die Entwickler dabei ­unter massiven Druck – unter dem aber die Qualität ihrer Produkte nicht leiden darf.

Leider tut sie das aber doch immer öfter: Allein in den USA belaufen sich laut National Institute of Standards & Technology die jährlichen Kosten, die durch schlechte Software verursacht werden, auf 60 Milliarden US-Dollar. Um diese Fehler zu vermeiden, legen Unternehmen viel Wert auf Qualitätssicherung (QAS). Diese ist meist nach der Entwicklungsphase einer Software und vor dem Launch angesiedelt und wird durch ein separates QAS-Team durchgeführt.

An sich handelt es sich um eine nachvollziehbare Trennung der Teams – ein zweiter Blick von unvoreingenommenen Experten ist eine wichtige Hürde auf dem Weg zu einem hochwertigen Produkt. Das Problem dabei ist: Findet die Qualitätssicherung Softwarefehler, die eigentlich während der Entwicklung schon hätten auffallen müssen, führt dies zu einem Tennismatch an Iterationen zwischen dem QAS-Team und den Software-Entwicklern, was wiederum die Gesamtkosten der Entwicklung drastisch in die Höhe treibt und eine konkrete Zeitplanung unmöglich macht.

Eine solch späte Erkenntnis kommt teuer zu stehen: Rund 80 Prozent der Entwicklungsbudgets werden für Fehlerreparaturen in einer späten Phase des Zyklus ausgegeben. Ein Fehler, der während dieser Phase gefunden wird, ist zehn Mal teurer, als wenn er direkt beim Schreiben des Codes gefunden und beseitigt wird. Wird nach dem Release ein Fehler entdeckt, steigen die Kosten auf das Dreißigfache.

Um Kosten zu senken und die Qualität der Produkte von Beginn an sicherzustellen, sollte daher das Testen in den Entwicklungsprozess integriert werden. Dazu empfehlen sich automatisierte Tests, die etwa während des nächtlichen Builds automatisch den neuen Code analysieren, um nicht nur frühzeitig Probleme zu erkennen, sondern auch direkt Lösungsmöglichkeiten aufzuzeigen. Einer der Pfeiler der sogenannten „Agile“-Methodik in der Software-Entwicklung lautet „Teste deinen Code, während du ihn schreibst“. Dies funktioniert auf eine praxistaugliche Weise jedoch nur automatisiert.

Transparentes Softwaretesten

Eine enge Verknüpfung zwischen Entwicklung und Test bedeutet ­eine erhöhte Effizienz sowie eine bessere Kontrolle. Denn wenn ein Feature während seiner Entwicklung ein Set an kleinen Testschritten durchlaufen muss, kann der Entwickler Fehler direkt korrigieren, noch während er den Code im Kopf hat. Zudem führt ein solcher Stufenprozess zu einem transparenteren Entwicklungsverlauf und erlaubt dem Management korrigierende Eingriffe, etwa bei Verzögerung oder unterschätztem Aufwand. Die Automatisierung der integrierten Testschritte hat dabei bedeutende Vorteile:

  • 1. Das gewünschte Verhalten eines Features wird in einem automatisierten Test simuliert. Dadurch lässt sich die Funktionalität der Simulation als einfaches Qualitätskriterium für das Feature wie auch für den Test etablieren.
  • 2. Testautomatisierung verhindert eine Regression, weil regulierte Testintervalle prüfen, ob Änderungen im Feature eine mögliche Beeinflussung des restlichen Codes bedeuten. Zusätzliche Tests nach Abschluss mehrerer Features prüfen eventuelle Set-Interaktionen.
  • 3. Weil es eine günstigere und schnellere Testmethode darstellt, reduziert Automatisierung die Testzeit und erlaubt eine breitere Testabdeckung.

Doch Automatisierung allein ist noch kein Allheilmittel. Für ein ­effektives Testen einer großen Menge an Code gibt es mehrere Schritte. Zuerst gilt es, die bereits getestete Menge des Codes abzugrenzen, um die Abschnitte zu identifizieren, die noch getestet werden müssen. Dies ist eine Standardmethode und relativ trivial.

Um aber herauszufinden, welche Bereiche besonders kritisch sind und welche Arten von Tests durchgeführt werden müssen, wird der Code der fraglichen Abschnitte mit einer statischen Analyse überprüft. Diese identifiziert funktionelle Auswirkungen durch Code-Änderung und zeigt so die risikoreichsten Stellen auf. Mit diesen Stellen lassen sich Kriterien für einen „guten Test“ erstellen – ein Test, der die wichtigsten Stellen überprüft. Ist dieser abgeschlossen, so kann davon ausgegangen werden, dass adäquat getestet wurde und Qualität garantiert werden kann.

Von daher gilt: In die Entwicklungsphase integrierte Tests helfen den Entwicklern und dem Management dabei, schnell auf Fehler zu reagieren. Das Identifizieren der Risikobereiche durch statische Analyse macht das Testen dabei effizienter und liefert zuverlässige Qualitätskriterien.

 

Zeitnahe ­Softwaretests

Testautomatisierung macht es möglich, dass der Code während der Entwicklung getestet wird. In kleinen Stufen werden automatische Tests an den kritischsten Stellen durchgeführt, die das gewünschte Feature-Verhalten simulieren. So können Fehler schnell und effektiv erkannt sowie beseitigt werden.

Quelle: Coverity

 

Bildquelle: Thinkstock/Digital Vision

©2026Alle Rechte bei MEDIENHAUS Verlag GmbH

Unsere Website verwendet Cookies, um Ihnen den bestmöglichen Service zu bieten. Durch die weitere Nutzung der Seite stimmen Sie der Verwendung zu. Weitere Infos finden Sie in unserer Datenschutzerklärung.

ok