Code Coverage bei Embedded Systems

von David Göhler

Code Coverage bei Embedded Systems

Der Nachweis der Testabdeckung – auch Code Coverage genannt – wird von zahlreichen Normen und Standards gefordert. Welche Hürden sich damit bei Embedded-Systemen ergeben, erläutert Klaus Lambertz von Verifysoft Technology im Interview.

Im Embedded-Umfeld sehen sich Tester angesichts der knappen Hardware-Ressourcen mit besonderen Herausforderungen konfrontiert. Klaus Lambertz, Geschäftsführer der auf Testing im Embedded-Umfeld spezialisierten Verifysoft Technology GmbH in Offenburg, weiß um Fallstricke bei der Code Coverage und wie man sie umgehen kann.


David Göhler: Herr Lambertz, was genau versteht man unter Code Coverage und welche Rolle spielt sie bei der Entwicklung von Embedded-Systemen?

Klaus Lambertz Bei der Embedded-Entwicklung dient die Code Coverage unter anderem dazu die in den unterschiedlichen Normen und Standards definierten Anforderungen an das Testing nachzuweisenKlaus Lambertz: „Bei der Embedded-Entwicklung dient die Code Coverage unter anderem dazu, die in den unterschiedlichen Normen und Standards definierten Anforderungen an das Testing nachzuweisen.“ (Bild: Verifysoft Technology GmbH)


Klaus Lambertz: Code-Coverage – auf Deutsch auch Testabdeckung genannt – ist eine Metrik bei kontrollflussorientierten Testtechniken, die aussagt, wie umfassend eine Software oder ein Teil davon getestet wurde. Sehr vereinfacht ausgedrückt: Werden bei einem Test etwa drei von vier möglichen Optionen durchlaufen, beträgt die Testabdeckung 75 Prozent.


Es bleibt also eine Unsicherheit. Für die nicht durchlaufene Option wurde entweder noch kein passender Testfall geschrieben oder es handelt sich um toten Code, der gar nicht erreichbar ist. Bei der Testabdeckung unterscheidet man verschiedene Stufen, die unterschiedlich aufwändig und unterschiedlich aussagekräftig sind.

Bei der Embedded-Entwicklung dient die Code Coverage unter anderem dazu, die in den unterschiedlichen Normen und Standards definierten Anforderungen an das Testing nachzuweisen. Das ist vor allem in sicherheitskritischen Bereichen der Fall. Etwa in der Luftfahrt mit DO-178C, in der Automobilbranche mit ISO 26262 oder in der allgemeinen Norm IEC 61508. Hier werden bestimmte Testüberdeckungsstufen und deren Nachweis gefordert, um die notwendige Sicherheit zu gewährleisten.


Göhler: Welche Code-Coverage-Stufen sind dabei für die Entwickler und Tester relevant?

Lambertz: Meist setzen die einschlägigen Standards Anweisungs- und Zweigüberdeckungstests voraus. Auch modifizierte Bedienungs- und Entscheidungsüberdeckungstests – häufig als MC/DC, Modified Condition/Decision Coverage bezeichnet – sind oft üblich.


Grundsätzlich gilt: Je höher die Sicherheitsanforderungen an eine Software, desto höher muss die geforderte Testabdeckung sein. MC/DC ist dabei die höchste Stufe und extrem komplex, da hier zumindest theoretisch alle Bedingungskombinationen überprüft werden müssen. Bei der Anweisungs- oder der Zweigüberdeckung muss nur ermittelt werden, ob alle Programmzweige oder Statements durchlaufen werden.

Der Vollständigkeit halber möchte ich noch die Aufrufüberdeckung als einfachste Stufe erwähnen. Da dabei aber die inneren Abläufe einer Software komplett ignoriert werden, ist ihr Nutzen doch sehr überschaubar.


Göhler: Wie wird die Code Coverage im Rahmen des Testings denn erfasst?

Lambertz: Dazu wird der zu testende Code vor der Übergabe an den Compiler durch Zähler ergänzt, die je nach gewünschter Code-Coverage-Stufe unterschiedlich komplex und umfangreich sind. Man nennt diesen Vorgang Instrumentieren. Zudem muss auf dem zu testenden Target eine Bibliothek implementiert werden, die unter anderem die Datenübertragung an einen Host übernimmt. Dort werden die Ergebnisse der Zähler erfasst.


Für die Instrumentierung nutzt man Code Coverage Analyzer. Ein recht einfaches Werkzeug, um das mal auszuprobieren, ist zum Beispiel das GNU Coverage Testing Tool gcov. Damit kann man schon einige Informationen zusammentragen. Für große oder sicherheitskritische Projekte fehlen diesem Open-Source-Tool aber die anspruchsvollen Testabdeckungsstufen. Auch die Aufbereitung und Interpretation der gewonnenen Daten ist natürlich nicht auf dem Niveau, das man für professionelles Testing benötigt.


Göhler: Nachdem im Zuge der Instrumentierung der vorhandene Code erweitert? Beeinflusst das nicht die Performance der Software während des Testings?

Lambertz: Durchaus. Der Code wird umfangreicher, der Speicherbedarf wächst und die Ausführungsgeschwindigkeit nimmt ab. Die Zähler werden in der Regel als globale Arrays im Datenspeicher abgelegt. Wie stark diese Effekte zum Tragen kommen, hängt natürlich nicht zuletzt davon ab, welche Testabdeckungsstufe benötigt wird. Auf PCs oder Servern spielt das aber keine Rolle, dort stehen heute ja mehr als genug Ressourcen zur Verfügung. Spannend wird es, wenn man Code auf Embedded-Targets testet. Hier sind die verfügbaren Hardware-Ressourcen aus Kostengründen oft sehr knapp kalkuliert.


....

Zum Original

Porträt von David Göhler

David Göhler

Vaterstetten

Zur Person

David Göhler

Profil und Credo

Für mich ist gegenseitiger Respekt, das Ernstnehmen von Problemen und Wünschen sowie der Wille, andere zu verstehen, enorm wichtig. Außerdem liegt mir viel an höchster Qualität und Genauigkeit.

In meiner Brust schlagen zwei Herzen: das des Technikers und Computerfreaks sowie das des Journalisten und begeisterten Erklärers. Informatik habe ich studiert (und erfolgreich abgebrochen), das Schreiben als Volontär von der Pieke auf gelernt (beim Heinz Heise Verlag). So kommt zusammen, was selten beieinander liegt: Die Lust an präziser, einfacher, klarer Sprache und analytischem Verstand sowie der spielerische Trieb, neue Technik zu begreifen, zu erfahren und anderen zu erklären. Neues zu lernen, ist mir meist ein Vergnügen. Aber ich weiß auch, dass das Schreiben von Texten oft Handwerk und täglich Brot ist.

In den letzten Jahren habe ich mich auf die Themen Content Marketing und Inbound Marketing spezialisiert. Ich bin daher fit beim Schreiben von Texten für ausgeklügelte Personas in verschiedenen Customer-Journey-Phasen. Wenn Sie einen Autor für technische Inhalte suchen, dem Sie beim Thema Inbound und Content Marketing nicht alles erst von Anfang an erklären möchten, sind Sie bei mir genau richtig.

Auftraggeber

NetPress GmbH , PC Magazin

Weitere Profile

Facebook LinkedIn Meine Homepage Twitter Xing