Empfohlenes Webinar: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Zum Video
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.
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.
Zweigstellenabdeckung
Durch die Verzweigungsabdeckung wird sichergestellt, dass jeder Entscheidungspfad einer Verzweigung (If-Then-Else-Konstrukte) ausgeführt wird.
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.
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.
Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.
Entdecken Sie die Kapitel
- Einführung "
- 1. Übersicht »
- 2. Statische Analyse »
- 3. MISRA »
- 4. AUTOSAR C++ 14 »
- 5. SEI/CERT »
- 6. CWE »
- 7. Unit-Tests »
- 8. Regressionstests »
- 9. Software-Integrationstests »
- 10. Testen von Softwaresystemen »
- 11. Strukturelle Codeabdeckung »
- 12. Anforderungsrückverfolgbarkeitsmatrix »
- 13. Werkzeugqualifizierung »
- 14. Berichterstattung und Analyse »