Abdeckung, Rückverfolgbarkeit und Nachweisführung
Zertifizierungsstellen prüfen zwei Aspekte: Coverage-Daten und Rückverfolgbarkeitsnachweise. Die Coverage-Daten zeigen, welcher Code getestet wurde und bis zu welcher strukturellen Tiefe. Die Rückverfolgbarkeitsnachweise verknüpfen jedes Testergebnis mit der Anforderung, deren Erfüllung damit überprüft werden sollte. Zusammen bilden sie die Nachweisgrundlage, die gemäß ISO 26262, DO-178C, IEC 61508 und IEC 62304 erforderlich ist.
Rückverfolgbarkeit von Anforderungen
Das anforderungsbasierte Testen ist gemäß allen wichtigen Standards zur funktionalen Sicherheit zwingend vorgeschrieben. Jeder Testfall muss auf die spezifische Anforderung zurückverfolgbar sein, die er verifizieren soll. Diese bidirektionale Rückverfolgbarkeit zwischen Anforderungen und Testergebnissen liefert den Nachweis, dass alle Anforderungen getestet wurden und dass keine Tests ohne Zweck existieren.
Das „Requirements Gateway“ von VectorCAST verbindet sich mit externen Anforderungsdatenbanken, importiert Anforderungen in die Testumgebung und ermöglicht die Verknüpfung von Testfällen mit diesen Anforderungen. Nach der Ausführung des Tests werden die Ergebnisse und Abdeckungsmetriken zurück in das Anforderungsmanagement-Tool exportiert. Anforderungen, für die keine Testabdeckung vorliegt, sind sofort erkennbar, ebenso wie Testfälle, die mit keiner Anforderung verknüpft sind.
Strukturelle Abdeckung
Strukturelle Abdeckungsmetriken erfassen, wie umfassend der Code bei der Ausführung der Tests durchlaufen wird. Sicherheitsstandards schreiben je nach Kritikalität Mindestabdeckungsgrade vor.
- Anweisungsabdeckung (Statement Coverage): Jede ausführbare Zeile wurde mindestens einmal ausgeführt
- Verzweigungsabdeckung (Branch Coverage): Jeder Entscheidungspunkt hat jedes mögliche Ergebnis angenommen
- MC/DC (Modifizierte Bedingungs-/Entscheidungsabdeckung): Jede Boolean-Bedingung in einer Entscheidung beeinflusst deren Ergebnis unabhängig. Erforderlich für Software gemäß DO-178C Level A und ISO 26262 ASIL D
- Funktionsabdeckung und Funktionsaufrufabdeckung: werden von mehreren Standards als ergänzende Kennzahlen verwendet
VectorCAST misst alle diese Abdeckungsarten. Die „Industry Modes“ wählen automatisch die richtigen Abdeckungskriterien für den jeweiligen Standard und die angestrebte Sicherheitsintegritätsstufe aus, sodass eine manuelle Konfiguration der Abdeckungskriterien für jeden Standard und jede Integritätsstufe entfällt.
MC/DC: Das Kriterium für die Abdeckung mit höchster Integrität
MC/DC zielt auf logische Fehler ab, die bei der Anweisungs- und Verzweigungsabdeckung unentdeckt bleiben. Dabei muss für jede Boolean-Bedingung in einer Entscheidung ein Test vorhanden sein, der zeigt, dass die Bedingung das Ergebnis der Entscheidung unabhängig verändert, während alle anderen Bedingungen konstant gehalten werden.
Die manuelle Umsetzung und Dokumentation von MC/DC in großem Umfang ist fehleranfällig und zeitaufwendig. VectorCAST automatisiert die anspruchsvollsten Aspekte: automatische Instrumentierung zur Verfolgung von Bedingungspaaren, Visualisierung der Äquivalenzmatrix, die genau zeigt, was abgedeckt ist und was nicht, automatisierte Generierung von Tests mit Fokus auf nicht abgedeckte Bedingungspaare sowie zertifizierungsfähige Berichte, die den Normen DO-178C, ISO 26262 und IEC 62304 entsprechen.
Abdeckung durch Analyse
Bei der Entwicklung sicherheitskritischer Software kann es vorkommen, dass bestimmte Codeabschnitte allein durch Tests keine vollständige Abdeckung erreichen. Defensive Codierung für höchst unwahrscheinliche Bedingungen, Fehlerbehandlung bei Hardwarefehlern und Code zum Schutz vor compilerspezifischem undefiniertem Verhalten fallen beispielsweise in diese Kategorie.
Jede Lücke in der Abdeckung muss begründet und dokumentiert werden. Die „Covered-by-Analysis“-Funktion (CBA) von VectorCAST ermöglicht es Ingenieuren, spezielle Code-Abschnitte als durch Analyse abgedeckt zu kennzeichnen, die Begründung direkt neben den Coverage-Daten zu dokumentieren und diese Begründung im Zuge der Weiterentwicklung des Codes mitzuführen. Abdeckungsberichte bieten eine einheitliche Übersicht sowohl über die gemessene Abdeckung als auch über die Abdeckung, die durch Analyse erreicht wurde.
Überwachung der Abdeckung im gesamten Projekt
Einzelne Testergebnisse und Abdeckungsberichte geben Aufschluss über einen einzelnen Build. Squore liefert Antworten auf Fragen zum Projekt als Ganzes: Welche Anforderungen sind noch nicht abgedeckt, wo ist die Abdeckung seit dem letzten Build gesunken und ob das Projekt auf dem richtigen Weg ist, seine Abdeckungsvorgaben vor der Integration zu erfüllen.
Squore aggregiert Coverage-Daten aus mehreren Quellen, verfolgt Trends im Zeitverlauf und setzt Qualitätskontrollen (Quality Gates) durch, die verhindern, dass nicht konformer Code in den weiteren Entwicklungsprozess einfließt. Die Coverage-Vorgaben bleiben während des gesamten Projekts für das gesamte Team sichtbar.