GoogleTest ist in C++-Teams beliebt. Doch reicht es für sicherheitskritische Software? Hierauf kommt es bei Unit-Testing, Tool-Qualifizierung und Konformität an.
Unit-Tests in regulierten Branchen müssen mehr leisten als reine Fehlerprüfung. Der Artikel zeigt, wie GoogleTest bewertet wird und welche Rolle C/C++test CT dabei spielen kann.
(Bild: Parasoft)
Entwickler von sicherheitskritischer C- und C++-Software müssen das richtige Framework für Unit-Tests auswählen. Normen wie ISO 26262, DO-178C und IEC 61508 schreiben Anforderungsverfolgbarkeit, strukturelle Codeabdeckung und Qualifizierung der Tools vor, um die Konformität sicherzustellen. Bislang setzten Unternehmen auf proprietäre Frameworks. Heute nutzen viele Entwicklerteams Open-Source-Optionen wie GoogleTest. Das spart Schulungskosten und beschleunigt die Einführung. GoogleTest erfüllt jedoch nicht alle Anforderungen. Um sicherheitskritische Anforderungen zu erfüllen, muss seine Funktionalität erweitert und seine Dokumentation verbessert werden. Wichtige Kriterien für Unit-Testing-Frameworks in sicherheitskritischen Umgebungen sind:
Flexibilität,
nahtlose Integration mit Bazel und CMake,
weit verbreitete Vertrautheit unter Entwicklern.
Bei der Auswahl eines Unit-Testing-Frameworks für die sicherheitskritische Entwicklung ist ein Balanceakt zwischen Konformität, Produktivität und Kosten zu vollbringen. Open-Source-Tools sind kostengünstig, bieten aber keinen zertifizierten Support und keine Qualifizierungskits. Das birgt Risiken in regulierten Umgebungen. Proprietäre Frameworks bieten dagegen Konformitätsfunktionen und werden durch den Support des Anbieters begleitet. Allerdings können sie Entwickler durch starre Formate und Konventionen behindern. Einige kommerzielle Tools zwingen die Nutzer beispielsweise dazu, Tests über grafische Oberflächen zu erstellen. Um die richtige Entscheidung zu treffen, müssen Teams die Konformitätsbereitschaft, die Einfachheit der Testerstellung, den Integrationsaufwand und die langfristige Wartbarkeit gegeneinander abwägen. Die folgenden Kriterien zeigen auf, worauf bei der Auswahl eines Frameworks zu achten ist.
Sicherheitsstandards und Anforderungen für Tests auf Unit-Ebene
Unit-Testing-Tools müssen mehr als nur Tests ausführen. Sie müssen Nachweise, Traceability- und Abdeckungsdaten liefern, die belegen, dass das System die Sicherheitsziele erfüllt. Ein Standard-konformes Unit-Testing-Framework muss Folgendes unterstützen:
anforderungsbasiertes Testen, das die Verknüpfung jedes Tests mit spezifischen Anforderungen unterstützt,
Traceability-Reports: Berichte, die Anforderungen, Implementierung und Testergebnisse zur Nachweisführung der Konformität miteinander in Beziehung setzen,
Metriken zur strukturellen Abdeckung: Reports, die die Abdeckung des ausgeführten Codes dokumentieren, einschließlich Anweisungs-, Verzweigungs- und in vielen Fällen MC/DC-Abdeckung,
Fehlerinjektion und Zuverlässigkeitstests: Dabei wird überprüft, wie das System auf unerwartete Fehler reagiert, und es wird sichergestellt, dass es sicher ausfällt.
Typische Unit-Testing-Frameworks aus dem Open-Source-Bereich wie GoogleTest verfügen nicht über die oben genannten Funktionen, mit Ausnahme von Fault-Injection-Tests. Codeabdeckung und Traceability-Berichte sowie die zugehörigen Funktionen müssen mit externen Tools ergänzt werden.
Ein weiteres wichtiges Thema ist die Tool-Qualifizierung, die von allen Sicherheitsstandards vorgeschrieben wird. Wenn dieser Prozess für ein Open-Source-Tool manuell durchgeführt werden muss, ist das sehr zeitaufwändig. Viele kommerzielle Tools sind bereits zertifiziert, wodurch sich der Qualifizierungsaufwand vereinfacht. Es ist daher vorteilhaft, sich einen Überblick über die Qualifizierungsunterstützung der infrage kommenden Frameworks zu verschaffen.
Einfache Integration in Build- und CI/CD-Pipelines
In sicherheitskritischen Projekten muss sich das Unit-Testing-Framework nahtlos in moderne Build-Systeme und CI/CD-Pipelines integrieren lassen. Komplexe C++-Projekte stützen sich oft auf verteilte Builds mit Tools wie Bazel. Ein Framework, das sich nahtlos in diese Umgebungen einfügt, reduziert den Wartungsaufwand und beschleunigt die Feedback-Zyklen. In diesem Bereich sind Open-Source-Frameworks wie GoogleTest besonders leistungsfähig. Sie verfolgen einen schlanken, codezentrierten Ansatz, der proprietäre Formate vermeidet, was die Integration in bestehende Build- und CI-Automatisierungs-Workflows vereinfacht. Diese Flexibilität ist einer der Gründe, warum sich GoogleTest zum De-facto-Standard in der groß angelegten C++-Entwicklung, einschließlich ADAS- und autonomer Fahrprojekte, entwickelt hat.
Viele proprietäre bzw. kommerzielle Frameworks lassen sich dagegen nur schwer in komplexe Systeme integrieren. Sie speichern Testressourcen und Konfigurationen in verschiedenen Dateien und schreiben oft ihre eigene Vorgehensweise beim Erstellen der Testbinärdatei vor. Bei der Auswahl eines Frameworks für ein großes und komplexes Projekt, sollte man sich daher über die Kosten für die Build-Integration und die Integration in CI-Pipelines im Klaren sein.
Kosten für die Entwicklerschulung
Schulungskosten sind ein entscheidender Faktor bei der Auswahl eines Unit-Testing-Frameworks. Bei proprietären Lösungen müssen Teams oft herstellerspezifische APIs oder Formate erlernen, was die Einführung verlangsamen und die Einarbeitungskosten erhöhen kann. Das ist besonders wichtig, wenn das Framework für ein großes Unternehmen ausgewählt wird.
GoogleTest nutzt dagegen Standardkonstrukte von C++. Es ist vielen Entwicklern bereits vertraut – insbesondere in Unternehmen mit großen C++-Teams. Die Verwendung von GoogleTest bietet folgende Vorzüge, die bei kommerziellen Projekten mit strenger Überwachung von Produktivität und Kosteneffizienz zum Tragen kommen:
minimierte Einarbeitungszeit
verkürzte Anlaufzeit
niedrige Schulungskosten
Kosten für das Erstellen und die Pflege von Testfällen
Die Kosten für Unit-Tests entstehen oft weniger durch Tool-Lizenzen als durch den Aufwand für die Erstellung und Pflege von Testfällen. Proprietäre Frameworks bieten zwar möglicherweise eine automatisierte Testgenerierung, doch ihre starren APIs können das Schreiben und Aktualisieren von Tests für moderne C++-Codebasen erschweren.
Im Gegensatz dazu verwendet GoogleTest eine übersichtliche, C++-native API. Dadurch lassen sich komplexe Testszenarien leichter ausdrücken und pflegen. Dies reduziert den Aufwand und hilft Teams, mit sich weiterentwickelnden Codebasen Schritt zu halten – ein entscheidender Faktor in sicherheitskritischen Projekten.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel Communications Group GmbH & Co. KG, Max-Planckstr. 7-9, 97082 Würzburg einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von redaktionellen Newslettern nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung, Abschnitt Redaktionelle Newsletter.
Kosten für die Migration bestehender Testfälle
Teams mit einer großen Anzahl bestehender Unit-Tests müssen beim Wechsel des Frameworks mit hohen Kosten rechnen. Proprietäre Tools basieren oft auf herstellerspezifischen Formaten oder Skriptsprachen. Das erschwert die Wiederverwendung bestehender Testfälle und verteuert sie. Wenn es in einem Projekt bereits eine umfangreiche Anzahl von GoogleTest-Fällen gibt, kann dies ein wichtiger Entscheidungsfaktor sein. Die Anpassung von GoogleTest an die Anforderungen von Sicherheitsstandards kann kostengünstiger sein als die Einführung eines neuen proprietären Frameworks und die Migration aller bestehenden Google-Tests in das neue Framework. Wurden bereits Testfälle mit einem proprietären/kommerziellen Framework erstellt und wird ein Tool-Wechsel in Betracht gezogen, kann die Migration der Tests in ein Framework, das reines C/C++ als Format verwendet – wie beispielsweise GoogleTest –, deutlich kostengünstiger sein als die Migration von Tests zwischen zwei verschiedenen proprietären Frameworks.
Bewertung von GoogleTest anhand von Auswahlkriterien
Die folgende Tabelle fasst die oben genannten Überlegungen zusammen und vergleicht GoogleTest mit einem typischen kommerziellen/proprietären Unit-Testing-Framework.
Kriterium
GoogleTest mit C/C++test CT
Typisches kommerzielles Framework
Anforderungsbasiertes Testen und Berichterstellung zur Traceability
Vollständige Unterstützung, einschließlich Traceabilty- Reports und der Weitergabe von Testergebnissen an RMS
Integriert und zertifiziert für den Einsatz in sicherheitskritischen Anwendungen
Fault Injection Tests
Möglich über GoogleMock
Vollständig unterstützt und integriert
Tool Qualifizierung / Zertifizierung
Mit TÜV-Zertifizierung bereitsgestellt
Bereitgestellt, oft mit Zertifizierung
Integration in Build-Systeme und CI/CD-Pipelines
Einfach und gut unterstützt
Deutlich komplexer und zeitaufwändiger
Kosten für das Erstellen und Pflegen von Testfällen
Gering
Höher, insbesondere bei komplexem und vorlagenintensivem C++ Code
Automatische Generierung von Testfällen
KI-gesteuert zur Schließung von Abdeckungslücken
In der Regel unterstützt durch die Generierung grundlegender Eingabe-/ Ausgabekombinationen
Kosten und Aufwand für die Migration bestehender Tests
Gering
Hoch
Auf den ersten Blick scheinen kommerzielle Frameworks für C-Projekte und kleinere C++-Systeme die bessere Lösung zu sein. Bei großen und komplexen C++-Projekten sieht die Situation jedoch anders aus. Die Herausforderungen bei der Integration und Automatisierung solcher Frameworks in moderne Build-Systeme sowie die höheren Kosten für die Testentwicklung können deren Vorteile schnell überwiegen. Es ist praktischer, GoogleTest um die fehlenden Funktionen zu erweitern und die Tool-Qualifizierung nach Bedarf durchzuführen, anstatt den laufenden Aufwand eines proprietären Frameworks mit nicht optimalen Testformaten und eingeschränkter Flexibilität für Entwickler zu tragen. Dieser Ansatz ist durch Parasoft C/C++test CT noch praktikabler geworden. Dieses Tool ergänzt GoogleTest um fehlende Funktionen und vereinfacht den Prozess der Tool-Qualifizierung für Sicherheitsstandards.
Wie hilft C/C++test CT?
C/C++test CT erweitert die Funktionen von GoogleTest und macht es zu einer umfassenden, sicheren Testlösung für die moderne C++-Entwicklung. Das Tool bietet folgende Vorteile:
Das in C/C++test CT integrierte, branchenweit erste TÜV-zertifizierte GoogleTest-Framework ist für die sicherheitskritische Entwicklung zugelassen und unterstützt Standards wie ISO 26262, IEC 61508, IEC 62304 und EN 50716.
Robuste Berichterstellung zur Anforderungsverfolgbarkeit.
Umfassende Überwachung der Codeabdeckung.
KI-gesteuerte Testgenerierung zur Beschleunigung und Verbesserung der Testerstellung.
Durch diese Zertifizierung entfällt die Notwendigkeit einer separaten Tool-Qualifizierung, wodurch sich die Konformität erheblich vereinfacht und der Verwaltungsaufwand verringert wird.
Die folgende Tabelle veranschaulicht, wie C/C++test CT mit GoogleTest eine vollständige und moderne Alternative zu herkömmlichen kommerziellen Frameworks für sicherheitskritische C++-Software bietet.
Kriterium
GoogleTest mit C/C++test CT
Typisches kommerzielles Framework
Anforderungsbasiertes Testen und Berichterstellung zur Traceability
Vollständige Unterstützung, einschließlich Traceability-Reports und der Weitergabe von Testergebnissen an RMS
Integriert und zertifiziert für den Einsatz in sicherheitskritischen Anwendungen
Fault Injection Tests
Möglich über GoogleMock
Vollständig untersützt und integriert
Tool Qualifizierung / Zertifizierung
Mit TÜV-Zertifizierung bereitgestellt
Bereitgestellt, oft mit Zertifizierung
Integration in Build-Systeme und CI/CD-Pipelines
Einfach und gut unterstützt
Deutlich komplexer und zeitaufwändiger
Kosten für das Erstellen und Pflegen von Testfällen
Gering
Höher, insbesondere bei komplexem und vorlagenintensivem C++-Code
Automatische Generierung von Testfällen
KI-gesteuert zur Schließung von Abdeckungslücken
In der Regel unterstützt durch die Generierung grundlegender Eingabe-/ Ausgabekombinationen
Kosten und Aufwand für die Migration bestehender Tests
Gering
Hoch
Für Teams, die moderne, groß angelegte C++-Anwendungen entwickeln, bietet C/C++test CT mit GoogleTest die ideale Balance zwischen Entwicklerproduktivität, Einhaltung von Sicherheitsstandards und einfacher Toolchain. Es verbindet die Flexibilität von Open-Source-Frameworks mit der Stringenz zertifizierter kommerzieller Lösungen und stellt somit eine technisch optimale und praktisch effiziente Lösung dar. Mit C/C++test CT müssen Sie sich nicht mehr zwischen Entwickleragilität und der Einhaltung von Sicherheitsvorschriften entscheiden. Sie erhalten beides. (sg)
* Miroslaw Zielinski ist Director of Product Management bei Parasoft.