Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Whitepaper
Neugierig, was der Ratgeber beinhaltet? Unten finden Sie eine Vorschau.
Das rasante Wachstum der Automobilsoftware – bedingt durch Fahrerassistenzsysteme (ADAS) und steigende Sicherheitsanforderungen – hat Entwicklung und Tests zunehmend kostspielig und komplex gemacht. Da moderne Fahrzeuge über 100 Millionen Codezeilen enthalten, setzen Automobilhersteller verstärkt auf CI/CD- und DevOps-Methoden, um die Markteinführungszeit zu verkürzen und Kosten zu senken.
Dieses Whitepaper erläutert, wie die Integration von automatisierten Tests – insbesondere statischer Analyse, Unit-Tests und struktureller Codeabdeckung gemäß ISO 26262 – in CI-Pipelines kontinuierliches Testen ermöglicht, die Produktivität deutlich steigert, den Testaufwand reduziert und die allgemeine Softwarequalität und -sicherheit verbessert.
Kontinuierliche Integration setzt auf automatisierte Build- und Deployment-Prozesse, um langsame, manuelle Arbeitsabläufe zu vermeiden, die die Effektivität beeinträchtigen.
CI erfordert ein zentrales Quellcode-Repository, automatisierte Builds und die schnelle Behebung von Integrationsproblemen. CI/CD-Projekte scheitern jedoch häufig in der Testphase, da die Festlegung der Testkriterien und die Durchführung der Tests, insbesondere manuell, zeitaufwändig und kostspielig sind. Testautomatisierung ist zwar unerlässlich, aber allein nicht ausreichend. Dies unterstreicht den Bedarf an umfassenderen Teststrategien für eine nachhaltige kontinuierliche Bereitstellung.
CI/CD gewinnt in der Automobilsoftwareentwicklung immer mehr an Bedeutung. Projekte unterliegen jedoch oft Einschränkungen, die bei der Anwendungsentwicklung nicht auftreten.
Neben den physikalischen und rechnerischen Beschränkungen der Zielhardware gibt es auch Marktbeschränkungen. Automobilsoftware muss Anforderungen an Sicherheit, Zuverlässigkeit und extrem lange Lebenszyklen erfüllen – Produkte können jahrzehntelang auf dem Markt bleiben.
Auf der Entwicklungsebene benötigt Automobilsoftware IDEs, Compiler, statische und dynamische Analysetools sowie Build-Tools. Die Tools sind oft auf andere Architekturen ausgerichtet als die, auf denen sie laufen (Host- vs. Zielumgebung). Versionskonsistenz der Tools im gesamten Team ist unerlässlich.
Die Automatisierung auf Build-Ebene nutzt dieselben Techniken. Wenn jedoch Code ausgeführt werden muss, wird die Barriere zwischen Host und Zielsystem relevant. Automatisierung, die die Ausführung von Code erfordert, benötigt daher in der Automobil-Softwareentwicklung spezielle Unterstützung.
Automatisierte Tests für Automobilsoftware ist aufgrund der Komplexität der Initiierung und Beobachtung von Tests auf eingebetteten Systemen, des eingeschränkten Zugangs zur Zielhardware und der Notwendigkeit eines praktikablen kontinuierlichen Testens von den Host-Entwicklungssystemen zu den Zielsystemen eine größere Herausforderung.
Eine Lösung wie Parasoft C / C ++ test Es wird mit einem optimierten Testframework geliefert, um den zusätzlichen Aufwand für den Binärspeicherbedarf zu minimieren, und stellt dieses in Form von Quellcode zur Verfügung, sodass es bei Bedarf an plattformspezifische Änderungen angepasst werden kann.

Ein Überblick über die Bereitstellung, Ausführung und Beobachtung von Tests vom Host bis zum Zielsystem.
Ein großer Vorteil der Parasoft C/C++-Testlösung ist die nahtlose Integration mit eingebetteten IDEs und Debuggern, die die Ausführung von Testfällen reibungslos und automatisiert gestalten. Zu den unterstützten IDE-Umgebungen gehören Eclipse, VS-CodeGreen Hills Multi, Wind River Workbench, IAR EW, ARM MDK, ARM DS-5, TI CCS, Visual Studio und viele andere.
Die Parasoft-Lösung unterstützt die Erstellung von Regressionstest-Baselines als organisierte Testsammlung und überprüft automatisch alle Ergebnisse. Diese Tests werden regelmäßig automatisch ausgeführt, um zu überprüfen, ob Codeänderungen die in den Regressionstests erfasste Funktionalität verändern oder beeinträchtigen. Bei nachfolgenden Tests meldet C++test Aufgaben, wenn Änderungen am im ersten Test erfassten Verhalten festgestellt werden.
Die Gleichwertigkeit der Fähigkeiten von Remote-Target-Ausführung und hostbasiertem Testen bedeutet, dass Automobil-Softwareteams die gleichen Vorteile der Automatisierung nutzen können wie jede andere Art der Anwendungsentwicklung.
Containerisierte Bereitstellungen von Entwicklungswerkzeugen werden für Automobilentwicklungsteams immer wichtiger. Obwohl Container ursprünglich zur Lösung von Problemen bei der Bereitstellung von Microservices und webbasierten Anwendungen entwickelt wurden, erfreuen sie sich in letzter Zeit zunehmender Beliebtheit bei Entwicklungsteams, insbesondere bei großen Teams, die Container zur Verwaltung komplexer Toolchains einsetzen.
Bei der Verwaltung komplexer Entwicklungsumgebungen, insbesondere in der Entwicklung sicherheitskritischer Software, haben Teams üblicherweise mit folgenden Herausforderungen zu kämpfen:
All diese Probleme lassen sich mit Containern leicht lösen.
Das Kommandozeilen-Tool Parasoft C/C++test Professional lässt sich einfach für die Verwendung mit einer Kompilierungs-Toolchain und einer in Containern bereitgestellten Ausführungsumgebung konfigurieren. Das Tool unterstützt Bereitstellungen auf Basis von Linux- und Docker-Containern.
Der größte Vorteil von CI/CD liegt in der Reduzierung des Projektrisikos. In der Vergangenheit setzten zu viele Projekte auf radikale Softwareintegrationen („Big Bang“), bei denen die Softwareteams ihre Software erst kurz vor Abschluss der Produktentwicklung integrierten. Diese Teams stießen auf massive Integrationsprobleme und standen oft unter enormem Zeitdruck, um das Projekt abzuschließen. Die Tests wurden sogar noch weiter ans Ende des Projekts verschoben, sodass sie schließlich zu spät und unzureichend waren.
Durch Continuous Integration verfügen Softwareteams stets über eine vollständige Produktversion, die für Tests, Auslieferung und Veröffentlichung bereit ist. Anstatt alles auf einmal zusammenzuführen, durchläuft das Team kontinuierlich kleinere Integrationsschritte, um Probleme frühzeitig zu erkennen und das Risiko einer späten Integration zu minimieren.
Hier sind weitere Vorteile der kontinuierlichen Integration:
Kontinuierliche Integration ist nur ein Teil eines kontinuierlichen Entwicklungsprozesses, der Tests und Auslieferung erfordert. Kontinuierliches Testen liefert automatisiertes, unaufdringliches und sofortiges Feedback zu Software-Releasekandidaten – nicht nur mehr Testautomatisierung, sondern die tatsächliche Integration von Qualität und Sicherheit in Produkte als Teil der CI-/Release-/Auslieferungsprozesse.
Die frühzeitige Erkennung von Fehlern und Sicherheitslücken auf dem Entwickler-Desktop verhindert, dass Fehler Zeit beim Unit-Testing verschwenden und in den Software-Build gelangen.
Hilft den erforderlichen Branchenstandards entsprechen wie MISRA C/C++ oder CERT C/C++, wodurch verhindert wird, dass ganze Fehlerklassen und schlechte Programmierpraktiken in den Build gelangen.
Erforderlich, sobald die Anwendung erstellt ist. Zu den erforderlichen Tests gehören Unit-Tests sowie nichtfunktionale Last-, Sicherheits- und Leistungstests, die direkt von CI-Orchestrierungssystemen ausgeführt werden.
Verknüpft Code, Tests und andere Ressourcen mit den Geschäftsanforderungen. Bietet eine objektive Bewertung nicht implementierter Anforderungen, Testlücken und des Fortschritts in Richtung Auslieferung.
Gibt vor, wo die Testbemühungen ansetzen müssen. Aus Risikosicht hat geänderter Code mehr Auswirkungen als nur auf die Software selbst – er betrifft auch relevante Tests und Assets.
Erhöht die Effektivität der kontinuierlichen Teststrategie erheblich. Gute Testdaten und Praktiken zur Verwaltung von Testdaten erhöhen die Abdeckung und erzielen genauere Ergebnisse.
Die Fahrt nach nach links verschiebenSicherheit und Zuverlässigkeit im Softwareentwicklungszyklus (SDLC) basieren auf dem Bestreben, Fehler und Sicherheitslücken so früh wie möglich zu finden und zu beheben. Probleme lassen sich deutlich einfacher, kostengünstiger und mit geringerem Risiko frühzeitig beheben. Das klingt logisch, doch die Softwarebranche ist voll von Beispielen, in denen kritische Fehler katastrophale Folgen hatten.
Die wichtigsten Voraussetzungen für Shift-Left-Tests liegen darin, Qualität von Anfang an in alle Anwendungen zu integrieren. Sicherheit lässt sich nicht nachträglich hinzufügen, sondern muss von vornherein eingebaut werden. Hier sind einige Empfehlungen für Shift-Left-Tests in der CI/CD-Pipeline, die die notwendige Plattform für kontinuierliches Testen schaffen:
Erwähnenswert ist, dass DevOps- und DevSecOps-Methoden die Nutzung von Automatisierung und kontinuierlichen Prozessen zur Etablierung kollaborativer Entwicklungszyklen gemeinsam haben. Während DevOps die Liefergeschwindigkeit priorisiert, DevSecOps verlagert die Sicherheit nach linksDies ist besonders wichtig bei Software, die als eingebettete sicherheitskritische Software eingestuft wird.
DevOps und DevSecOps basieren beide auf Automatisierung und kontinuierlicher Zusammenarbeit. DevSecOps legt jedoch einen stärkeren Fokus auf die frühzeitige Integration von Sicherheit in den Entwicklungsprozess – eine wesentliche Voraussetzung für eingebettete, sicherheitskritische Software. Durch die Förderung einer engeren Zusammenarbeit zwischen Entwicklern und Stakeholdern verbessert DevSecOps die Entwicklung sicherer Software. Testautomatisierung ist zwar ein wichtiger Faktor, aber nur ein Teil des Ansatzes. Da Tests häufig einen Engpass im Softwarelebenszyklus darstellen, verbessert die Vorverlagerung von Sicherheitsaktivitäten und die Reduzierung des nachgelagerten Testaufwands sowohl die Softwaresicherheit als auch die Entwicklungseffizienz erheblich.
Moderne DevSecOps-Initiativen erfordern die Fähigkeit, die mit einem Release-Kandidaten verbundenen Risiken sofort und kontinuierlich zu bewerten. Kontinuierliches Testen innerhalb der CI/CD-Pipeline bietet eine automatisierte und unaufdringliche Möglichkeit, sofortiges Feedback zu den Sicherheitsrisiken eines Software-Release-Kandidaten zu erhalten. Es unterstützt Entwicklungsteams bei der Einhaltung der Sicherheitsanforderungen und hilft Managern, fundierte Entscheidungen zur Optimierung des Release-Kandidaten zu treffen.
Kontinuierliches Testen ermöglicht eine quantitative Risikobewertung und liefert konkrete Maßnahmen zur Risikominderung, bevor die Produkte in die nächste Phase des Softwareentwicklungszyklus (SDLC) gelangen. Ziel ist es, unnötige Aktivitäten zu eliminieren, Qualität und Sicherheit zu verbessern und die Entwicklung auf eine erfolgreiche Veröffentlichung auszurichten.
Kontinuierliche Integration und Auslieferung sind in der Automobilentwicklung Standard. Die Umstellung von einem Wasserfallmodell auf CI/CD und agile Entwicklungsmethoden zahlt sich durch Risikominderung sowie Qualitäts- und Sicherheitsverbesserungen aus. Sicherheit hat für Automobilentwickler höchste Priorität, und CI/CD ermöglicht DevSecOps, wodurch Sicherheitsanforderungen und -kontrollen in alle Phasen der Entwicklungspipeline integriert werden.
Container eignen sich ideal für CI/CD. Sie ermöglichen schnelle Bereitstellung und Portabilität in verschiedenen Host-Umgebungen und bieten Unterstützung für Versionierung und zentrale Steuerung. Containerisierte Entwicklungsumgebungen sind für die sichere Entwicklung in einer DevSecOps-Pipeline wichtig, da sie eine reproduzierbare Anwendungsumgebung mit integrierten Sicherheitskontrollen bieten.
Das Testen ist mit Abstand die zeit- und ressourcenintensivste Aktivität in der Automobilentwicklung. Kontinuierliches Testen ist ein notwendiger Bestandteil einer reibungslos funktionierenden CI/CD-Pipeline und bietet einen Rahmen, um das Testen in frühere Phasen des Lebenszyklus zu verlagern.
Durch den gezielten Einsatz von Automatisierung und die Fokussierung auf die risikoreichsten Bereiche der Anwendung lässt sich der Testprozess so optimieren, dass er kontinuierliche Abläufe weniger behindert. Kontinuierliches Testen erfordert Tools zur Automatisierung und Optimierung. Tools, die eine höhere Codeabdeckung, intelligente Testausführung und bidirektionale Rückverfolgbarkeit ermöglichen, verbessern kontinuierliches Testen zusätzlich.
Bereit, tiefer einzutauchen?