Der Blätterkatalog benötigt Javascript.
Bitte aktivieren Sie Javascript in Ihren Browser-Einstellungen.
The Blätterkatalog requires Javascript.
Please activate Javascript in your browser settings.
16 Elektronik 25 2021 EmbEddEd TEchnology kann die Nichtausführung zu schwer auffindbaren Fehlern führen weil die Entwickler fälschlicherweise davon ausgehen dass diese Funktion bei dieser Abfrage immer ausgeführt wird Oft sind logische Abfragen noch wesentlich verschachtelter – bei logischen Und-Abfragen mit False-Prüfungen gilt das Gleiche Auf den ersten Blick ist nicht erkenntlich ob hier ein Fall vorliegt bei dem Codeteile nie ausgeführt werden Kombination von statischer Codeanalyse und dynamischem Testen Um eine gute Softwarequalität zu gewährleisten ist eine Kombination von statischer Analyse und dynamischen Tests in Verbindung mit einer Messung der Testabdeckung erforderlich Im folgenden Praxisbeispiel wird deutlich warum beide Verfahren zur Absicherung der Softwarequalität genutzt werden müssen und warum die Konzentration auf nur eine Testoder Analyseform gefährliche Konsequenzen haben kann Für die Steuereinheit einer Waschmaschinen-Produktreihe wurde eine Software in der Programmiersprache Cfür einen Mikrocontroller mit ARM-Prozessorkern geschrieben Für alle Waschmaschinen der Produktreihe wurde eine identische Steuereinheit mit identischer Software genutzt wobei je nach Maschinentyp bestimme Funktionen einbzw abgeschaltet wurden Die Maschinen der etwas höheren Preis-Bild 2 Eine nicht initialisierte Variable im Code siehe Listing 3 – gefunden per statischer Codeanalyse – verursacht unbestimmtes Verhalten Bild Verifysoft klasse sollten z Bmit einem Sensor ausgestattet werden um den Verschmutzungsgrad der Wäsche zu messen und dem Programm so zu ermöglichen die notwendigen Zeiten des Hauptwaschgangs automatisch und bedarfsgerecht anzupassen Die Waschzeiten der einfacheren Maschinen ohne Sensor sollten dagegen konstant sein Zur Sicherstellung einer hinreichenden Softwarequalität wurden Testfälle unter der Vorgabe einer MC DC-Testabdeckung von 100 % erstellt Auf eine statische Analyse wurde zunächst verzichtet Die Waschdauer des Hauptwaschgangs wurde mit dem Code in Listing 1 berechnet Die Funktion errechnet die Waschdauer in Abhängigkeit vom gewählten Waschprogramm der Beladungsmenge und dem Verschmutzungsgrad der Wäsche Bezogen auf diese Funktion wurden während der Modultests die in der Tabelle 1 aufgeführten Testfälle ausgeführt wobei der Verschmutzungsgrad » staining « in das Testergebnis als Faktor einfließt Inwieweit der Maschinentyp » product version « das Ergebnis beeinflusst wird später erläutert Das Ergebnis der Messung der Testabdeckung zeigt Bild 1 Die Testabdeckung der betrachteten Funktion lag zunächst nur bei 71 % Aus dem Report der Testabdeckung in Verbindung mit den Testergebnissen wurde sofort ein Problem sichtbar Der Programmpfad mit der if-Bedingung mit Beginn in Zeile 31 siehe Bild 1 – in Listing 2 isoliert dargestellt – wurde nicht durchlaufen obwohl die entsprechenden Testfälle Nr 5 und 6 ausgeführt wurden Das Testergebnis für diese Testfälle wich zudem von den erwarteten Ergebnissen ab Aus dem Testabdeckungsbericht wird deutlich dass stattdessen die if-Bedingung ab Zeile 28 durchlaufen wurde Ein Tausch der beiden elseif-Bedingungen im Code behob diesen Fehler Ein erneuter Testlauf ergab nunmehr eine Testabdeckung von 95 % wobei die Testergebnisse den Erwartungen entsprachen Aus dem Report der Testabdeckung war ersichtlich dass für eine Testabdeckung von 100 % noch ein zusätzlicher Tabelle 1 Durchgeführte Testfälle bezogen auf die Funktion »durationMainWashCycle « Quelle Verifysoft Testfall Nr product version prog load staining Ergebnis erw Ergebnis 1 11 3 4 3 15 15 2 11 5 4 3 15 15 3 11 7 4 3 15 15 4 11 3 6 3 27 27 5 12 4 2 1 8 7 6 12 6 2 1 8 7 7 13 4 4 1 8 8 8 13 6 4 1 8 8 Tabelle 2 Für eine Testabdeckung von 100 % muss Tabelle 1 um einen weiteren Testfall ergänzt werden Quelle Verifysoft Testfall Nr product version prog load staining Ergebnis erw Ergebnis 9 14 6 6 1 9 9