Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Zum Abschnitt springen
Parasoft-Blog
Die Codeabdeckung zeigt zwar, welcher Code ausgeführt wurde, beweist aber nicht, welche Anforderungen tatsächlich überprüft wurden. Lesen Sie weiter, um zu erfahren, wie Sie GoogleTest mit Parasoft C/C++test CT um die Rückverfolgbarkeit von Anforderungen erweitern können – und so die Lücke zwischen bestandenen Tests und dem Nachweis der Konformität schließen.
Zum Abschnitt springen
In einem früheren Beitrag haben wir erläutert, wie Teams mit TÜV-zertifiziertem GoogleTest und C/C++test CT – einem C/C++-Softwaretesttool mit zertifizierter GoogleTest-Unterstützung – ihre Ziele hinsichtlich der Codeabdeckung erreichen können . Sie können die strukturelle Codeabdeckung aus GoogleTest-basierten Tests erfassen, Abdeckungslücken analysieren und die erforderlichen Nachweise für die Vollständigkeit der Tests generieren.
Die Codeabdeckung stellt jedoch nur eine Dimension der Vollständigkeit von Unit-Tests dar.
In Projekten, in denen die Einhaltung von Standards für funktionale Sicherheit zwingend erforderlich ist, müssen die Teams zudem eine angemessene Verifizierung der Softwareanforderungen anhand von Testfällen nachweisen. Dies geschieht üblicherweise durch die Dokumentation der Rückverfolgbarkeit von Anforderungen, wodurch die Beziehungen zwischen Anforderungen, Tests und Testergebnissen klar definiert werden.
Die Rückverfolgbarkeit von Anforderungen ermöglicht es Teams, mehrere grundlegende Fragen zu beantworten.
Ohne diese Informationen beweist weder eine erfolgreiche GoogleTest-Ausführung noch ein hoher Codeabdeckungsgrad allein, dass das beabsichtigte Softwareverhalten vollständig verifiziert wurde.
In diesem Blog erklären wir, wie Parasoft C/C++test CT das GoogleTest-Framework um die Rückverfolgbarkeit von Anforderungen erweitert und es ermöglicht, Testergebnisse mit Anforderungen zu korrelieren, die in einem externen Anforderungsmanagementsystem verwaltet werden.
Die Abdeckung des strukturellen Codes und die Abdeckung der Anforderungen bieten komplementäre Sichtweisen auf die Vollständigkeit der Unit-Tests.
Codeabdeckungsberichte zeigen, welche Teile der Implementierung während der Tests geprüft wurden. Abhängig vom jeweiligen Entwicklungsprozess und dem Sicherheitsintegritätsniveau müssen Teams möglicherweise Kennzahlen wie die Abdeckung von Anweisungen, Verzweigungen, Entscheidungen, Bedingungen oder MC/DC-Anweisungen erfassen.
Anforderungsrückverfolgbarkeitsberichte behandeln eine andere Frage. Anstatt aufzuzeigen, welche Codekonstrukte ausgeführt wurden, zeigen sie, ob das spezifizierte Softwareverhalten verifiziert wurde.
Aus diesem Grund werden bei Compliance-orientierten Projekten typischerweise beide Arten von Nachweisen verwendet:
Zusammen bieten diese Berichte einen umfassenderen Überblick über den Verifizierungsstatus. Teams können so Lücken in den Anforderungen, Tests und der Implementierung identifizieren.
GoogleTest wird häufig für Unit-Tests von C- und C++-Software eingesetzt. Es bietet ein vertrautes Framework zum Definieren von Testfällen, Organisieren von Testsuiten, Ausführen von Tests und Generieren von XML-Testergebnissen.
Der GoogleTest-Ausführungsbericht beschreibt jedoch primär die Teststruktur und den Ausführungsstatus. Er zeigt an, welche Tests ausgeführt wurden und ob sie bestanden, fehlgeschlagen oder übersprungen wurden. Er bietet jedoch keinen vollständigen, auf Compliance ausgerichteten Workflow zur Korrelation dieser Ergebnisse mit Anforderungen, die in einem unternehmensweiten Anforderungsmanagementsystem gespeichert sind.
Teams versuchen diese Lücke häufig mit Tabellenkalkulationen, Namenskonventionen, benutzerdefinierten Skripten oder manuell gepflegten Rückverfolgbarkeitsmatrizen zu schließen. Diese Ansätze mögen für kleine Projekte funktionieren, werden aber mit zunehmender Anzahl an Anforderungen, Testfällen, Produktvarianten und Testkonfigurationen immer schwieriger zu handhaben.
Parasoft C/C++test CT erweitert den GoogleTest-Workflow um die Unterstützung für die Berichterstellung zur Anforderungsrückverfolgbarkeit. Sie können Testfälle mit Anmerkungen versehen, die deren Bezug zu den Anforderungen kennzeichnen.
Ein einzelner Testfall kann mit einer oder mehreren Anforderungen verknüpft sein. Ebenso können mehrere Testfälle eine einzelne Anforderung überprüfen, wenn unterschiedliche Eingaben, Betriebsmodi, Randbedingungen oder Fehlerszenarien bewertet werden müssen.
Diese Annotationen stellen die erste Verbindung zwischen der Implementierung der Unit-Tests und den Projektanforderungen her. Der Workflow zur Rückverfolgbarkeit der Anforderungen besteht aus drei Hauptphasen.
Entwickler beginnen damit, GoogleTest-Testfälle den entsprechenden Anforderungskennungen zuzuordnen.
Die Kennungen sollten den im Anforderungsmanagementsystem des Projekts hinterlegten Anforderungen entsprechen.
Indem die Anforderungsreferenzen nahe an der Testimplementierung platziert werden, wird die Beziehung während der Entwicklung sichtbar und ermöglicht die Verwaltung über dieselben Überprüfungs- und Versionskontrollprozesse wie beim Testcode.
Verwenden Sie GoogleTest, um die annotierten Tests auszuführen und einen XML-Ausführungsbericht mit den Testergebnissen zu generieren.
C/C++test CT liest den XML-Bericht, der sowohl die Testausführungsergebnisse als auch die Anforderungsannotationen enthält, und sendet diese Informationen an Parasoft DTP, eine Reporting-Plattform.
DTP verbindet sich mit Ihrem RMS, importiert die relevanten Anforderungsdaten und generiert den Rückverfolgbarkeitsbericht.
Sie können diesen Workflow in Ihren lokalen Entwicklungsprozess oder, noch besser, in eine Continuous-Integration-Pipeline integrieren.
DTP stellt eine Verbindung zum Anforderungsmanagementsystem der Organisation her, beispielsweise Jama, Polarion, Codebeamer oder DOORS Next, und ruft Informationen über die referenzierten Anforderungen ab.
DTP korreliert anschließend die Anforderungsdatensätze mit den von C/C++test CT erhaltenen Unit-Test-Ergebnissen.
Diese Korrelation kombiniert Informationen aus zwei Quellen:
Dadurch können Sie den Verifizierungsstatus analysieren, ohne die vollständige Anforderungsdefinition im Testquellcode zu duplizieren oder Testergebnisse manuell in das Anforderungsmanagementsystem zu übertragen.
Das Anforderungsmanagementsystem bleibt die maßgebliche Quelle für Anforderungsinformationen, während DTP eine konsolidierte Sicht auf die Beziehungen zwischen Anforderungen und Testnachweisen bietet.
Sobald die Informationen miteinander verknüpft sind, können Rückverfolgbarkeitsberichte Lücken aufzeigen, die in einem Standard-GoogleTest-Bericht schwer zu erkennen sind.
Der Bericht kann beispielsweise folgende Anforderungen aufzeigen:
Diese Ergebnisse unterstützen sowohl die tägliche Entwicklung als auch die formalen Compliance-Aktivitäten.
Die Rückverfolgbarkeitsberichterstattung ersetzt nicht das technische Urteilsvermögen. Vielmehr liefert sie objektive Daten, die die Prüfer auf Zusammenhänge hinweisen, die einer weiteren Analyse bedürfen.
Anforderungen und Testreihen bleiben selten statisch.
Anforderungen können hinzugefügt, geändert, aufgeteilt, ersetzt oder entfernt werden. Testfälle können umbenannt, refaktoriert, parametrisiert oder in kleinere Tests unterteilt werden. Produktvarianten können zudem unterschiedliche Teilmengen von Anforderungen und Tests erfordern.
Da C/C++test CT die Rückverfolgbarkeitsinformationen im Rahmen des regulären GoogleTest-Ausführungsablaufs verarbeitet, können Berichte bei jeder Ausführung der Testsuite aktualisiert werden. Dies reduziert die Abhängigkeit von Rückverfolgbarkeitsmatrizen, die separat vom Quellcode verwaltet werden und schnell veralten können.
Kontinuierliche Rückverfolgbarkeit ermöglicht zudem frühzeitiges Feedback. Warten Sie nicht auf ein formelles Audit oder einen Release-Meilenstein, um fehlende Zusammenhänge aufzudecken. Überprüfen Sie die Abdeckung der Anforderungen während der gesamten Entwicklung.
Dies ist besonders wertvoll in dynamischen Entwicklungsumgebungen, in denen Implementierung, Anforderungsverfeinerung und Testentwicklung häufig parallel ablaufen.
Die Rückverfolgbarkeit von Anforderungen gewinnt noch mehr an Wert, wenn sie zusammen mit den im ersten Teil dieser Serie besprochenen Codeabdeckungsfunktionen analysiert wird.
Betrachten wir eine Anforderung, die mit einem bestandenen Test verknüpft ist. Aus Anforderungssicht scheint die Anforderung verifiziert zu sein. Eine Strukturabdeckungsanalyse kann jedoch zeigen, dass der zugehörige Test nicht alle relevanten Zweige oder Bedingungen in der Implementierung abdeckt.
Umgekehrt kann eine Funktion eine vollständige strukturelle Abdeckung erreichen, während die Rückverfolgbarkeitsanalyse zeigt, dass kein Test explizit mit der Anforderung verknüpft wurde, die das erwartete Verhalten der Funktion definiert.
Diese beiden Beweismittelformen helfen den Teams, die Vollständigkeit der Verifizierung aus beiden Richtungen zu untersuchen.
Diese kombinierte Analyse unterstützt einen systematischeren Verifizierungsprozess und liefert stärkere Belege für Überprüfungen, Bewertungen und Audits.
Ein wichtiger Vorteil dieses Ansatzes ist, dass die Teams GoogleTest als ihr Unit-Testing-Framework beibehalten können.
Entwickler müssen weder etablierte Testsuiten aufgeben noch ein separates, proprietäres Testdefinitionsformat einführen, nur um Rückverfolgbarkeitsberichte zu generieren. Stattdessen bietet C/C++test CT die für die Compliance-orientierte Entwicklung erforderlichen Berichts- und Integrationsfunktionen.
GoogleTest bleibt das Framework zur Definition und Ausführung von Unit-Tests. C/C++test CT verarbeitet die Ausführungsdaten und Anforderungsannotationen. Parasoft DTP integriert diese Ergebnisse mit Informationen aus dem ursprünglichen Anforderungsmanagementsystem und stellt die konsolidierte Rückverfolgbarkeitsansicht bereit.
Für sicherheitskritische Software sind eine erfolgreiche Testausführung und eine ausreichende strukturelle Codeabdeckung zwar notwendige, aber nicht hinreichende Nachweise. Die Teams müssen außerdem nachweisen, dass die Softwareanforderungen mit geeigneten Testfällen verknüpft und durch die aktuellen Testergebnisse belegt sind.
C/C++test CT erweitert das GoogleTest-Framework um die Funktion der Anforderungsrückverfolgbarkeitsberichterstattung.
Durch die Integration der Rückverfolgbarkeit in den bestehenden GoogleTest- und CI-Workflow können Teams:
In Kombination mit der strukturellen Codeabdeckungsanalyse bietet dieser Ansatz eine umfassendere und skalierbarere Grundlage für den Nachweis der Vollständigkeit von Unit-Tests in sicherheitskritischen C- und C++-Projekten.
Erfahren Sie, wie Ihr Team die Verifizierungsabdeckung mit C/C++test CT, integriert mit dem einzigen TÜV-zertifizierten GoogleTest, nachweisen kann.
Weiterführende Inhalte