Empfohlenes Webinar: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Zum Video

ISO 26262 Software-Compliance in der Automobilindustrie

Strukturelle Codeabdeckung

Codeabdeckung erfassen und analysieren Metriken sind ein wichtiger Aspekt der sicherheitskritischen Automobil-Softwareentwicklung. Code-Coverage-Maßnahmen die Fertigstellung von Testfällen und ausgeführten Tests. Es liefert den Nachweis, dass die Validierung abgeschlossen ist, zumindest wie von Ihren Stakeholdern und Compliance-Anforderungen angegeben.

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)

Modifizierte Bedingungs-/Entscheidungsabdeckung (MC/DC) erfordert die umfassendste Codeabdeckung, um sicherzustellen, dass Testfälle jeden Entscheidungszweig und alle möglichen Eingabekombinationen ausführen, die das Ergebnis der Entscheidungslogik beeinflussen. Bei komplexer Logik kann die Anzahl der Testfälle explodieren, daher werden die modifizierten Bedingungsbeschränkungen verwendet, um Testfälle auf diejenigen zu beschränken, die zu Änderungen eigenständiger logischer Ausdrücke führen. Sehen Sie sich dieses Tutorial der NASA an.

Fortgeschrittener Tools zur Automatisierung von Unit-Tests wie der Parasoft C/++test bieten alle diese Codeabdeckungsmetriken. C/C++test automatisiert Diese Datensammlung umfasst Host- und Zieltests und sammelt im Laufe der Zeit den Testabdeckungsverlauf. Dieser Codeabdeckungsverlauf kann Unit-, Integrations- und Systemtests umfassen, um sicherzustellen, dass die Abdeckung auf allen Testebenen vollständig und nachvollziehbar ist.

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 Abdeckungslücken in Testsuiten. Parasoft hat herausgefunden, wie man mithilfe erweiterter statischer Codeanalyse (Daten- und Kontrollflussanalyse) Werte für die Eingabeparameter findet, die zum Ausführen bestimmter Zeilen nicht abgedeckten Codes 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.

Vom Coverage Advisor bereitgestellte Code Coverage-Lösungen
Zwei Testfalllösungen bereitgestellt von Coverage Advisor.

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.

Dunkelblaues Banner mit dem Bild eines Mannes, der in einem Serverraum mit einer Frau spricht, die ein Tablet in der Hand hält.
Bild eines Mannes und einer Frau mit einem Tablet in der Hand, die in einem Serverraum diskutieren.

Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.