Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Zum Abschnitt springen
Parasoft-Blog
Erfahren Sie, wie Sie mit C/C++test CT und dem TÜV SÜD-zertifizierten GoogleTest Codeabdeckungsmetriken überwachen und Abdeckungslücken für sicherheitskritische Software effizient identifizieren und beheben können.
Zum Abschnitt springen
Für Teams, die sicherheitskritische Systeme entwickeln, geht es bei der Erfüllung der Codeabdeckungsvorgaben nicht nur um das Ausführen von Tests – es bedarf eines grundlegend integrierten Workflows zwischen Ihrem Unit-Testing-Framework, der Rückverfolgbarkeit der Anforderungen und den Tools zur Codeabdeckung.
Unit-Tests sind ein grundlegendes Element von Verifizierungs- und Validierungsprozess (V&V) für eingebettete, sicherheitskritische Software. Alle wichtigen Normen für funktionale Sicherheit fordern objektive Nachweise über die Vollständigkeit der Tests auf Komponentenebene.
Diese Vollständigkeit wird typischerweise durch Berichte zur Rückverfolgbarkeit der Anforderungen und zur strukturellen Codeabdeckung nachgewiesen. Folglich wird jede Ein im Rahmen der Konformitätsprüfung verwendetes Unit-Testing-Framework Der Kontext muss sich nahtlos in das Anforderungsmanagementsystem (RMS) des Projekts und die Codeabdeckungswerkzeuge integrieren.
Im Idealfall beginnen die Teams mit klar definierten, eindeutigen Anforderungen und einer vollständigen Testspezifikation. Die Implementierung erfolgt gemäß diesen Anforderungen, und Codeabdeckungsberichte liefern objektive Belege für die Vollständigkeit der Verifizierung auf Quellcodeebene.
Teams erreichen dieses Ideal in der Praxis selten. Oft beginnen sie die Implementierung und Testentwicklung mit unvollständigen oder sich ändernden Anforderungen.
In einigen Fällen können formale Anforderungen gänzlich fehlen – beispielsweise wenn V&V- und Sicherheitsprozesse nachträglich auf eine bestehende Codebasis angewendet werden, die ursprünglich nicht im Rahmen eines funktionalen Sicherheitsrahmens entwickelt wurde.
In solchen Situationen erfolgen Entwicklung, Anforderungsdefinition und Testerstellung parallel. Dieser Workflow zwingt die Teams dazu:
Eine Abdeckungslücke kann auf toten Code, einen fehlenden Testfall oder eine unvollständige oder undefinierte Anforderung hinweisen.
In allen Fällen ist es entscheidend zu verstehen, warum eine bestimmte Codekonstruktion ungedeckt bleibt. Bei relativ einfachen Metriken wie der Zeilenabdeckung ist diese Analyse oft unkompliziert. Komplexere Kriterien wie MC/DC (modifizierte Bedingungs-/Entscheidungsabdeckung) können die Ursachenanalyse jedoch deutlich erschweren.
Dies ist zwar alles andere als der ideale Arbeitsablauf, in der Praxis beginnt der Prozess jedoch oft mit der Identifizierung einer Abdeckungslücke, gefolgt von der Analyse der fehlenden Reize, die erforderlich sind, um den nicht abgedeckten Code auszuführen.
Auf Grundlage dieser Analyse erstellen die Entwickler einen Testfall, um das bisher ungetestete Verhalten abzudecken.
Der so entstandene Testfall bildet die Grundlage für ein besseres Systemverständnis und dient als Leitfaden für nachfolgende Verfeinerungen und Anforderungsdefinitionen.
Gut integrierte Unit-Testing-Tools können diesen Prozess unterstützen, indem sie Details über Abdeckungsmängel liefern und in einigen Fällen bei der Generierung der ersten Testfälle helfen, um die oben beschriebenen Anforderungsverfeinerungen voranzutreiben.
Parasoft C/C++Test CT Bietet eine TÜV-zertifizierte Distribution von GoogleTest mit integrierter Codeabdeckungsanalyse, was die Analyse von Abdeckungslücken deutlich vereinfacht. Zudem beinhaltet es KI-basierte Funktionen zur automatisierten Testfallgenerierung.
Teams können ihre GoogleTest-Testsuiten ausführen und die Codeabdeckung sowohl lokal als auch innerhalb von CI-Pipelines mit C/C++test CT erfassen.
Viele Teams schätzen die Möglichkeit, vor dem Commit von Änderungen eine ausgewählte Teilmenge der GoogleTest-Testfälle lokal auszuführen und anschließend die vollständige Testsuite in der CI-Pipeline zu nutzen. Die Ergebnisse der Testabdeckung können dann direkt aus der CI-Pipeline abgerufen und in der IDE analysiert werden, was einen effizienten Feedback-Loop ermöglicht. Für Teams, die Visual Studio Code verwenden, bietet C/C++test CT optimierte Unterstützung für diesen Workflow.
Sobald die Abdeckungsberichte vorliegen, folgt die Lückenanalyse. C/C++test CT vereinfacht diesen Prozess, insbesondere bei anspruchsvolleren Abdeckungskriterien wie MC/DC.
Der folgende Screenshot veranschaulicht ein Beispiel für die MC/DC-Abdeckungsergebnisse für eine bestimmte Entscheidung innerhalb einer Funktion.

Ein Beispiel für MC/DC-Abdeckungsergebnisse für eine spezifische Entscheidung innerhalb einer Funktion in Parasoft C/C++test CT.
Wie dargestellt, liefern die Ergebnisse eine detaillierte Aufschlüsselung der abgedeckten und nicht abgedeckten Bedingungen innerhalb der Entscheidung sowie eine Tabelle mit dem vorab berechneten minimalen Satz von Testvektoren, der für eine vollständige 100%ige Abdeckung erforderlich ist. Dieser minimale Satz ist besonders wertvoll, da er Entwickler auf die spezifischen Bedingungskombinationen hinweist, die zur Erfüllung der MC/DC-Anforderungen geprüft werden müssen.
Sobald die Lücken in der Codeabdeckung identifiziert sind, werden üblicherweise ein oder mehrere Testfälle entwickelt, die den nicht abgedeckten Code testen. So können die Teams beurteilen, ob Aktualisierungen oder Anpassungen der Anforderungen notwendig sind. Wie bereits erwähnt, handelt es sich dabei zwar um einen reaktiven Arbeitsablauf, er ist aber in vielen Projekten gängige Praxis.
Diese Testfälle können manuell auf Basis der von C/C++test CT bereitgestellten Abdeckungsanalysen erstellt oder automatisch mithilfe der verfügbaren Tool-Unterstützung generiert werden.
C/C++test CT beinhaltet einen MCP-Server, der KI-Agenten strukturierte Abdeckungsdaten zur Verfügung stellt. Für fortgeschrittene Metriken wie MC/DC enthalten diese Daten detaillierte Informationen über fehlende Testvektoren, die erforderlich sind, um alle Bedingungen innerhalb einer gegebenen Entscheidung vollständig abzudecken.
Mit dem MCP-Server von C/C++test CT können Benutzer unter anderem den KI-Agenten bitten: „Generiere GoogleTest-Testfälle, um Abdeckungslücken in der Datei <> zu schließen.“
Die untenstehende Grafik zeigt eine vereinfachte Darstellung des Datenflusses zwischen der Coverage-Engine, dem MCP-Server und dem KI-Agenten.
Vereinfachter Datenfluss zwischen Coverage-Engine, MCP-Server und KI-Agent
Mithilfe dieser strukturierten Eingabe können KI-Agenten automatisch GoogleTest-Testfälle für bisher nicht abgedeckte Szenarien generieren. Dies trägt zu einer verbesserten Testabdeckung bei und reduziert gleichzeitig den Entwicklungsaufwand. Entwickler können die generierten Tests anschließend überprüfen und deren Relevanz hinsichtlich des Systemverhaltens sowie bestehender oder noch zu definierender Anforderungen bewerten.
Durch die Kombination eines TÜV-zertifizierten GoogleTest-Frameworks mit fortschrittlicher Abdeckungsanalyse und KI-gestützter Testgenerierung optimiert C/C++test CT den Weg zu vollständiger Codeabdeckung und Compliance. Es ermöglicht Teams, die mit modernem C++ entwickeln, Testlücken zu identifizieren, fehlende Tests zu generieren und einen effizienten, skalierbaren Verifizierungs-Workflow aufrechtzuerhalten.
Erfahren Sie, wie Ihr Team seine Ziele hinsichtlich der Codeabdeckung mit C/C++test CT erreichen kann, das in den einzigen TÜV-zertifizierten GoogleTest integriert ist.
Weiterführende Inhalte
Blog
5 min gelesen
KURZE DEMO
Whitepaper