Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Entdecken Sie die Kapitel
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
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.
Durch die Verzweigungsabdeckung wird sichergestellt, dass jeder Entscheidungspfad einer Verzweigung (If-Then-Else-Konstrukte) ausgeführt wird.
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.
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 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.
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:
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.
Entdecken Sie die Kapitel