Parasoft-Logo Suche

Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »

ISO 26262 Software-Compliance in der Automobilindustrie

Strukturelle Codeabdeckung

Das Erfassen und Analysieren von Codeabdeckungsmetriken ist ein wichtiger Aspekt der Entwicklung sicherheitskritischer Automobilsoftware. Die Codeabdeckung misst die Vollständigkeit der Testfälle und die Anzahl der ausgeführten Tests. Sie liefert den Nachweis, dass die Validierung abgeschlossen ist, zumindest gemäß den Anforderungen Ihrer Stakeholder und der Compliance-Vorgaben.

Es identifiziert auch toten Code. Das ist Code, der logischerweise nie erreicht werden kann. Es weist auf die Existenz unbeabsichtigten Verhaltens hin. Code, der von keinem Test abgedeckt wird, ist ein Risiko, da sein Verhalten und seine Funktionalität unbekannt sind.

Menge und Umfang der Codeabdeckung hängen von der Sicherheitsintegritätsstufe und den Zielen für die prozentuale Abdeckung ab. Bei sicherheitskritischen Anwendungen ist eine Codeabdeckung von 100 % die Norm. Je höher die Integritätsstufe, desto strenger muss vorgegangen werden. Die Anzahl und Komplexität der Testfälle nimmt zwangsläufig zu.

In der folgenden Tabelle sind die Empfehlungen für die Codeabdeckungsarten bei jedem ISO 26262 ASIL aufgeführt.

ISO 26262 Teil 6, 9.4.4:2018 - Strukturelle Abdeckungsmetrik

ISO 26262 Teil 6, 9.4.4:2018

Blauer Kreis mit 1a in weißer Schrift in der Mitte.

Aussagedeckung

Die Anweisungsabdeckung erfordert, dass jede Programmanweisung mindestens einmal ausgeführt wird und wird auf den niedrigeren ASIL-Ebenen empfohlen. Die Branch- und MC/DC-Abdeckung umfasst die Anweisungsabdeckung.

Blauer Kreis mit 1b in weißer Schrift in der Mitte.

Zweigstellenabdeckung

Durch die Verzweigungsabdeckung wird sichergestellt, dass jeder Entscheidungspfad einer Verzweigung (If-Then-Else-Konstrukte) ausgeführt wird.

Blauer Kreis mit 1c in weißer Schrift in der Mitte.

Modifizierte Bedingungs-/Entscheidungsabdeckung (MC/DC)

Die modifizierte Bedingungs-/Entscheidungsabdeckung (MC/DC) erfordert eine möglichst umfassende Codeabdeckung, um sicherzustellen, dass Testfälle jeden Entscheidungszweig und alle möglichen Eingabekombinationen, die das Ergebnis der Entscheidungslogik beeinflussen, ausführen. Bei komplexer Logik kann die Anzahl der Testfälle exponentiell ansteigen. Daher werden die Einschränkungen der modifizierten Bedingungen verwendet, um die Testfälle auf diejenigen zu beschränken, die zu Änderungen eigenständiger logischer Ausdrücke führen. Siehe dazu dieses Tutorial der NASA.

Moderne Tools zur Automatisierung von Unit-Tests, wie beispielsweise Parasoft C/C++test, liefern all diese Codeabdeckungsmetriken. C/C++test automatisiert diese Datenerfassung sowohl beim Host- als auch beim Zielsystemtest und speichert den Testabdeckungsverlauf über die Zeit. Dieser Verlauf kann Unit-, Integrations- und Systemtests umfassen, um eine vollständige und nachvollziehbare Abdeckung auf allen Testebenen zu gewährleisten.

Erhöhen Sie die Codeabdeckung durch die automatische Erstellung von Unit-Testfällen

Die Erstellung produktiver Unit-Tests war schon immer eine Herausforderung. Die Einhaltung funktionaler Sicherheitsstandards erfordert qualitativ hochwertige Software, was wiederum den Bedarf an Test-Suites erhöht, die hohe Code-Coverage-Statistiken erzeugen. Teams benötigen Unit-Testfälle, die ihnen helfen, eine 100-prozentige Code-Coverage zu erreichen.

Das ist leichter gesagt als getan. Das Analysieren von Codezweigen und der Versuch, Gründe zu finden, warum bestimmte Codeabschnitte nicht abgedeckt sind, raubt den Entwicklungsteams weiterhin Zeit.

Parasoft Versicherungsberater

Parasoft C/C++test schließt die Lücken in der Testabdeckung. Parasoft hat herausgefunden, wie man mithilfe fortgeschrittener statischer Codeanalyse (Daten- und Kontrollflussanalyse ) die Werte für die Eingabeparameter ermittelt, die zur Ausführung bestimmter, nicht abgedeckter Codezeilen erforderlich sind.

In komplexem Code gibt es immer diese schwer fassbaren Codeanweisungen, deren Abdeckung äußerst schwierig ist. Es ist wahrscheinlich, dass es mehrere Eingabewerte mit verschiedenen Permutationen und möglichen Pfaden gibt, deren Entschlüsselung verwirrend und zeitaufwändig ist. Aber nur eine Kombination kann Ihnen die Abdeckung verschaffen, die Sie benötigen. Parasoft macht es einfach, diese schwer erreichbaren Codezeilen abzudecken.

Wählen Sie die Codezeile aus, die Sie abdecken möchten, und der Coverage Advisor teilt Ihnen mit, welche Eingabewerte, globalen Variablen und externen Aufrufe Sie benötigen, um den Code zu stimulieren und eine Abdeckung zu erreichen.

Coverage Advisor per Rechtsklick aufrufen

Rufen Sie Coverage Advisor auf, indem Sie mit der rechten Maustaste auf die Codezeile klicken.

Die Abbildung rechts zeigt einen Analysebericht, der dem Benutzer eine Lösung bietet. Das Feld „Voraussetzungen“ drückt Folgendes aus:

  • Der Bereich und die Eingabewerte für mainSensorSignal und coSensorSignal
  • Die erwarteten Ergebnisse der externen Anrufe

Beim Erstellen des Unit-Testfalls mit diesen festgelegten Parameterwerten und Stubs für externe Anrufe erhält der Benutzer die Abdeckung der ausgewählten Leitung sowie der zusätzlichen Leitungen, die im Feld „Erwartete Abdeckung“ angegeben sind.

Vom Coverage Advisor bereitgestellte Code Coverage-Lösungen
Zwei Testfalllösungen bereitgestellt von Coverage Advisor.
Mann und Frau diskutieren im Technikgebäude

Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.

Kontakt