Qualitätssicherung

Development Testing – denn Softwarequalität geht vor

16.11.16 | Autor / Redakteur: Richard Walker* / Franz Graser

Fehlersuche: Tools zur statischen Codeanalyse helfen dabei, potenzielle Bugs aufzuspüren. Analyse- und Teststrategien müssen aber frühzeitig in den Entwicklungsprozess integriert werden, um erfolgreich zu sein.
Fehlersuche: Tools zur statischen Codeanalyse helfen dabei, potenzielle Bugs aufzuspüren. Analyse- und Teststrategien müssen aber frühzeitig in den Entwicklungsprozess integriert werden, um erfolgreich zu sein. (Bild: Clipdealer)

Angesichts immer komplexerer Systeme sind heute Code-Analyse und Software-Tests bereits während der Produktentwicklung erforderlich. Das Stichwort heißt Development Testing.

Software ist in so gut wie allen Embedded-Systemen zu finden: medizinischen Geräten, Steuerungen und mobilen Geräte aller Art. Hinzu kommen neue Trends wie das Internet der Dinge (Internet of Things, IoT), Wearables und Smart Watches. Allein die Steuerungs-, Infotainment- und Assistenz-Systeme eines Pkw enthalten nach Angaben der Automobilhersteller mittlerweile mehr als 10 Millionen Zeilen Programmcode. Diese Zahl wird in den kommenden Jahren ansteigen, etwa durch Hybrid-Fahrzeuge mit einem Elektro- und Benzinmotor und entsprechend komplexen Motorsteuerungen.

Dazu kommt: Im Embedded-Bereich werden verstärkt Mehrkern-Prozessoren eingesetzt. Diese CPUs bieten eine hohe Rechenleistung bei niedrigem Energieverbrauch. Eine Besonderheit solcher CPUs ist, dass sie Prozesse parallel ausführen. Laut einer Umfrage des Fraunhofer-Instituts für Eingebettete Systeme und Kommunikationstechnik (ESK) unter Entwicklern von Software für Embedded-Systeme führt das zu Problemen – so mangelt es etwa an Tools für das Debugging von Code, der für Embedded-Multicore-Komponenten erstellt wird. Das gilt vor allem für Werkzeuge, die sporadische Fehler in hochverfügbaren Systemen identifizieren.

Der Mangel an Entwicklungs- und Debugging-Tools im Embedded-Bereich kann Unternehmen teuer zu stehen kommen. So belaufen sich alleine in den USA nach Angaben des National Institute of Standards & Technology (NIST) die Kosten durch schlechte Software auf 60 Milliarden US-Dollar pro Jahr. Um Software-Fehler zu vermeiden, setzten die meisten Unternehmen auf eine Qualitätssicherung (Quality Assurance, QA). Das Problem dabei: Die QA findet erst nach der Entwicklung der Software statt. Außerdem ist für die Qualitätsüberprüfung ein separates QA-Team zuständig.

Nun beginnt oft ein Ping-Pong-Spiel: Die QA entdeckt Fehler, die bereits während der Entwicklung hätten auffallen müssen und verweist das Produkt zurück in die Entwicklungsabteilung. Die bessert nach und legt das Ergebnis dem QA-Team erneut vor – und so weiter. Die Entwicklungskosten steigen und es ist kaum möglich, eine konkrete Zeitplanung zu erstellen.

Praxiserfahrungen zeigen, dass 80 Prozent der Entwicklungsbudgets für Fehlerreparaturen in einer späten Phase des Entwicklungs- und Prüfzyklus ausgegeben werden. Ein Fehler, der in dieser Phase gefunden wird, ist zehnmal so teuer, als wenn er beim Schreiben des Codes entdeckt und beseitigt würde. Noch teurer wird es, wenn der Fehler erst nach dem Release entdeckt wird. Dann steigen die Kosten auf das Dreißigfache. Etliche Rückrufe von Autoherstellern etwa sind auf Softwarefehler zurückzuführen.

Lösung: Bereits während der Entwicklung testen

Um die Kosten zu senken und die Qualität der Produkte frühzeitig sicherzustellen, sollte daher das Testen in den Entwicklungsprozess integriert werden. Dazu empfehlen sich automatisierte Tests. Sie analysieren beispielsweise automatisch Nightly Builds, identifizieren Fehler frühzeitig und zeigen Lösungen für diese Probleme direkt auf.

Statische Analysen lassen sich in jedem Code-Zweig einsetzen, etwa dann, wenn mehrere Varianten einer Embedded-Komponente für verschiedene Abnehmer erstellt werden. Die Analysen fassen die Fehler in einer Aufstellung zusammen. Der Entwickler weist daraufhin den Fehlern in dieser Sammlung Prioritätsstufen zu. Ein Fehler, der viele Produktversionen betrifft, erhält eine höhere Priorität als einer, der nur wenige Systeme tangiert. Außerdem muss der Entwickler wissen, in welchen Code-Zweigen er welche Bugs auszumerzen hat. Das erfordert Analyseergebnisse, die detaillierte Informationen liefern: über die betroffenen Funk-tionen, Dateien, Projekte und Code-Zweige.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben
«Die Auswahl der Tests ist entscheidend» Ich wäre bereits froh, dafür ein belastbares,...  lesen
posted am 21.11.2016 um 07:46 von Unregistriert


Mitdiskutieren
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44359836 / Software-Test & -Betrieb)

Embedded Software Engineering Report abonnieren

4 mal jährlich: Die kostenlose Pflichtlektüre für Embedded­-Software- und Systems-Entwickler, von Analyse bis Wartung und Betrieb

* Ich bin mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung und AGB einverstanden.
Spamschutz:
Bitte geben Sie das Ergebnis der Rechenaufgabe (Addition) ein.