Code Coverage

In modellbasierten Entwicklungsprojekten spielte der Begriff der Codeabdeckung, also der Nachweis, dass alle Bereiche eines Codes getestet wurden, schon immer eine entscheidende Rolle. Insbesondere der ISO 26262 Standard erwartet, dass Metriken wie Statement Coverage, Decision Coverage oder MC/DC geprüft und erfüllt werden.

Obwohl eine solche Analyse in vielen Projekten durchgeführt wird, erfolgt deren Umsetzung oftmals nicht besonders effizient. Da die Codeabdeckung zumeist während einer Testausführung gemessen wird, muss der Nutzer eine entsprechende Simulation explizit ausführen. Da bei einer solchen Ausführung typischerweise instrumentierter Code genutzt wird, ist es im Anschluss oft erforderlich eine zweite Test-Ausführung mit nicht-instrumentiertem Code durchzuführen um die eigentlichen Testergebnisse bzw. Abdeckungen zu erhalten.

Codeabdeckung im EmbeddedTester – integriert, automatisiert und zertifiziert

BTC EmbeddedTester berechnet die Codeabdeckung immer dann, wenn neue Testfälle erstellt oder importiert werden. So steht dem Nutzer jederzeit ein Report zur Verfügung, welcher automatisch im Hintergrund aktualisiert wird, ohne dass eine explizite Testausführung notwendig ist. Die Berechnung der Codeabdeckung im EmbeddedTester ist darüber hinaus auch Gegenstand des ISO 26262 Zertifikats, welches vom TÜV Süd ausgestellt wurde und die Eignung dieses Ansatzes für sicherheitskritische Projekte bis hin zu ASIL Ebene D dokumentiert.

Der entsprechende Code-Coverage Report ist in drei Abschnitte unterteilt. Während der erste eine Übersicht der verschiedenen Metriken enthält, stellt der zweite Abschnitt eine Liste mit allen individuellen Abdeckungszielen dar. Der dritte und letzte Abschnitt visualisiert den genutzten Quellcode und zeigt Zeile für Zeile die erreichte Abdeckung an.

Sofern der Produktionscode mit dSPACE TargetLink generiert wurde können Nutzer direkt aus dem Report heraus in das Originalmodell springen. Diese Möglichkeit erleichtert es dem Nutzer das zugehörige Modellelement zu einem bestimmten Abdeckungsziel im Code zu finden. 

Vielfältige Coverage-Metriken

Die Coverage Metriken in BTC EmbeddedTester gehen deutlich über Standard-Metriken wie Statement oder Decision Coverage hinaus. Feinere Metriken wie Condition Coverage und MC/DC machen den EmbeddedTester zum idealen Tool für sicherheitskritische ASIL D Projekte.

Das „Domain Coverage“ Feature ermöglicht es Ihnen die Wertebereiche eines Datentyps flexibel zu unterteilen, etwa um in der ISO 26262 adressierte Äquivalenzklassen zu bilden. Zusätzlich liefern Robustheitsziele wie „Range Violation“, „Division by 0“ oder „Downcast“ Informationen zu kritischen Ereignissen im Code. Diese sollten idealerweise von keinem Testlauf erreicht werden können.

Intelligente Analyse und automatische Testfallgenerierung für strukturelle Abdeckungsziele

BTC EmbeddedTester ist nicht nur in der Lage die erreichte Testabdeckung aus manuell erstellten bzw. importierten Testfällen zu berechnen. Leistungsstarke Analyse-Engines, basierend auf Model Checking Technology, sind in der Lage alle Abdeckungsziele zu analysieren und automatisch entsprechende strukturelle Testfälle zu generieren um eine vollständige Testabdeckung zu erreichen. Wenn Teile des Codes nicht abgedeckt werden können liefert das Tool einen mathematischen Beweis, dass die entsprechenden Ziele unerreichbar sind. Bei strukturellen Zielen wie der Testabdeckung hilft dies sogenannten „Dead Code“ aufzudecken. Bei Robustheitszielen hingegen zeigt ein solcher „Unreachable“ Beweis, dass der entsprechende kritische Zustand (bspw. „Division by 0“) niemals eintreten kann.