Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Parasoft-Blog
CI/CD sind zwei Begriffe, die in der Softwareentwicklung für viel Diskussionsstoff gesorgt haben. Erfahren Sie, welche Schlüsselrolle CI/CD in der Automobilindustrie spielt und wie Parasoft Ihnen helfen kann, Ihre CI/CD-Strategie effizienter zu gestalten.
Zum Abschnitt springen
Moderne Fahrzeuge haben typischerweise mehr als 100 Millionen Codezeilen. Die Aufrechterhaltung von Qualität und Erschwinglichkeit sind für viele Entwicklungsteams zu Prioritäten und einzigartigen Herausforderungen geworden. Dies geht einher mit strengeren Sicherheitsanforderungen. All dies trägt dazu bei, dass das Testen noch mehr zu einem integralen Bestandteil des Softwareentwicklungslebenszyklus (SDLC) wird.
Da die Automobilindustrie zunehmend auf agile Entwicklungsmethoden setzt , rücken weitere Prozesse in den Fokus, die beschleunigt werden können. Dazu gehört die Bereitstellung mittels DevOps mit besonderem Fokus auf kontinuierliches Testen. DevOps zielt darauf ab, alle notwendigen Schritte zu automatisieren, die erforderlich sind, um Anwendungscode zu erstellen und an den Endnutzer auszuliefern. Im Wesentlichen funktioniert es wie ein Förderband, das den Anwendungscode durch verschiedene Phasen transportiert.
Die heutigen DevOps- und Continuous-Everything-Initiativen erfordern die Fähigkeit, die mit einem Release Candidate verbundenen Risiken sofort und kontinuierlich zu bewerten. Kontinuierliches Testen bietet eine automatisierte, unaufdringliche Möglichkeit, sofortiges Feedback zu den Geschäftsrisiken zu erhalten, die mit einem Software-Release-Kandidaten verbunden sind. Es leitet Entwicklungsteams an, die Geschäftserwartungen zu erfüllen, und hilft Managern, fundierte Kompromissentscheidungen zu treffen, um den Geschäftswert eines Release-Kandidaten zu optimieren. Vieles davon wird durch kontinuierliche Integration (CI) durchgeführt.
Unser Whitepaper zu diesem Thema verdeutlicht, wie CI/CD DevOps für Automobilentwicklungsprojekte von Nutzen sein kann. Dieser Blog behandelt einige der gleichen Themen und beantwortet die folgenden Fragen.
Kontinuierliche Integration als Teil eines kontinuierlichen Entwicklungszyklus.
CI/CD steht für Continuous Integration und Continuous Delivery. Die Kombination beider Verfahren schafft eine automatisierte Pipeline, in der Code erstellt, getestet und anschließend mithilfe automatisierter Prozesse bereitgestellt wird. Dies ermöglicht es Entwicklungsteams außerdem, in kürzeren Zyklen und mit einem effizienteren Workflow zu arbeiten.
Teams, die CI/CD einsetzen, reduzieren in der Regel Risiken, Kosten und Entwicklungszeiten. Wie oben im CI/CD-DevOps-Zyklus dargestellt, ermöglicht die Feedbackschleife die kontinuierliche Automatisierung. Automatisierte Tests sind jedoch der Motor des gesamten Zyklus.
Da ein Großteil der Automobilentwicklung mittlerweile softwarebasiert ist, gehört das Einspielen von Updates mittlerweile eher zur Routine als die Behebung von Hardwarefehlern. Die Einhaltung von Aktualisierungen funktionaler Sicherheitsstandards wie ISO 26262 , AUTOSAR und anderen erfordert von den Teams eine schnelle Anpassung.
Der Einsatz agiler Methoden, kontinuierlicher Tests und Automatisierung ist die beste Strategie, um diese modernen Probleme bei der Entwicklung und Wartung von Automobilsoftware anzugehen.
Hier sind sieben Vorteile von CI/CD-Pipelines in der Automobilsoftwareentwicklung.
Zu wissen, welcher Code durch die Testfallausführung abgedeckt wurde und welcher nicht, ermöglicht es Teams, potenzielle Fehlerquellen besser zu erkennen. Es hilft auch dabei, die Anzahl der benötigten Testfälle für die erforderlichen Codeabdeckungsziele zu bestimmen und genauere Ergebnisse zu erzielen.
Der Einsatz statischer Analysen im Rahmen des CI/CD DevOps-Workflows erleichtert die Einhaltung branchenspezifischer Codierungsanforderungen wie MISRA C/C++.
Durch die Nutzung immenser Arbeits- und Kosteneinsparungen kann ein automatisierter, kontinuierlicher Test von Automobilsoftware entwickelt werden, der nur wenig menschliches Eingreifen erfordert.
Frühes und häufiges Testen trägt dazu bei, dass weniger Bedrohungsvektoren, Fehler und Probleme während Ihres Arbeitsablaufs auftreten. Fehler werden früher aufgedeckt, was zu einfacheren Korrekturen, kürzeren Bereitstellungszeiten und geringeren Projektkosten führt.
Die Verwendung von Codierungsstandards für statische Analyse wie SEI CERT C/C++ ermöglicht die frühzeitige Erkennung von Sicherheitslücken und Fehlern.
Diese können dabei helfen, reproduzierbare, konsistente und sichere Entwicklungsumgebungen zu schaffen. Sie können zentral aktualisiert und dann bereitgestellt werden, wenn Entwickler den Code aktualisieren.
Die Grundlage für kontinuierliches Testen ist die Datengenerierung und -analyse. Indem Sie die entsprechenden Daten für bestimmte Szenarien erstellen, die Sie ausführen möchten, können Sie das Szenario besser simulieren, anstatt sich auf Produktionsdatenquellen zu verlassen.
Es ist wichtig, die DevOps-Phasen vollständig zu verstehen und zu wissen, wann Sie mit der Verwendung der richtigen Tools beginnen sollten, um die besten Ergebnisse zu erzielen. Es gibt auch verschiedene bewährte CI/CD-Pipeline-Tools oder -Lösungen auf dem Markt, die Ihre DevOps-Bereitstellung unterstützen. Einige dieser Tools für die Automobilindustrie sind:
Ein Beispiel für DevOps-Phasen mit ggf. Testmethoden.
Vielleicht haben Sie schon einmal den Begriff DevSecOps gehört . Dabei handelt es sich um die Integration von Sicherheit in den DevOps-Workflow. Dies erfordert einen Mentalitätswandel in den Teams, um Sicherheitstools und -praktiken in diese Methodik zu integrieren.
Die Integration von Sicherheitsmaßnahmen in Ihre Arbeitsabläufe ist von größter Bedeutung, da Sicherheit für viele Automobilhersteller höchste Priorität hat. Regulatorische Anforderungen der UNECE-Arbeitsgruppe 29 und die Notwendigkeit, Sicherheitsverfahren gemäß Normen wie ISO 21434 zu integrieren, machen dies erforderlich.
Die Integration von Sicherheit in die CI/CD-Phasen ist in der obigen Abbildung dargestellt, ebenso wie Testmethoden angewendet werden können.
Eine der Kernkomponenten von DevOps ist Continuous Integration. CI ist das Zusammenführen von Codefunktionen, Korrekturen oder kleinen Änderungen, die durch Prozesse unterstützt werden, die Versionskontrolle und Software-Build-Automatisierung umfassen.
Automatisierte Verfahren variieren für Entwicklerteams je nach Projektumfang, Prioritäten, verwendeten Tools, Budget und anderen Faktoren.
Ein Beispiel für einen Continuous-Integration-Workflow.
Kurz gesagt, der typische Workflow beginnt damit, dass Entwickler einen Zweig erstellen, von dem aus sie arbeiten können. Entwickler führen jeden Tag eine Pull-Anforderung aus, schreiben Code und nehmen Änderungen vor – mehrmals am Tag. Es wird ein Push oder Commit für die Codeänderung durchgeführt, wodurch eine Zusammenführungsanforderung erstellt wird.
Der Code wird in ein Repository wie Git gepusht, typischerweise innerhalb einer DevOps-Plattform wie GitLab. GitLab führt eine Pipeline für jeden Commit im Zweig des Entwicklers aus. Mit anderen Worten, es erstellt den Code und führt automatisierte Testskripte aus (statische Analyse, Komponententests, Codeabdeckung usw.). Docker-Images können auch verwendet werden, um die Pipeline zu erfüllen. Sobald der Code verifiziert wurde, wird er in den Hauptzweig eingebunden.
Andere Code-Hosting-Plattformen wie GitHub werden ebenfalls häufig verwendet und können selbst gehostete Runner hosten. Diese Runner können physische Server, virtuelle Maschinen oder Container-Images sein und vor Ort oder in einer öffentlichen Cloud wie Google Cloud ausgeführt werden.
Automatisierung reicht nicht mehr aus. Aus diesem Grund arbeiten kontinuierliche Tests mit der Automatisierung in DevOps zusammen, um bessere Ergebnisse, kürzere Lebenszyklen und weniger Fehler zu liefern. Es ermöglicht Teams einen schnellen Wechsel – eine notwendige Eigenschaft in der heutigen Welt sich ständig ändernder Anforderungen und Aktualisierungen.
Das Erstellen Ihrer eigenen Automotive-CI/CD-DevOps-Pipeline hängt von Ihrem Team, Ihren Arbeitsabläufen, Ihrem Projekt und dergleichen ab. Aber im Allgemeinen hängt der Bau der Pipeline von einigen Schlüsselaspekten ab.
Wenn ein Entwickler neuen Code erstellt oder einen Fix fertiggestellt hat, löst dessen Übergabe an das Repository Tests mit einem inkrementellen Build-Test und einem statischen Analysetest auf der Einheit aus. Entwickler können diese Ergebnisse verwenden, um sie nach Bedarf umzugestalten.
Entwickler können projektweite Builds auch manuell oder zu bestimmten Zeiten während der Arbeitszeit auslösen. Dies würde einen vollständigen statischen Analyselauf starten, gefolgt von einer Regressionstestsuite mit neuen und aktualisierten Komponententests.
Wenn sie zu einem früheren Zeitpunkt in der Codeentwicklung und beim Refactoring durchgeführt wird, kann die statische Analyse teure und schwer zu behebende Downstream-Fehler beseitigen.
Mit besonderem Fokus auf statische Analyse und Unit-Tests spielt die Testautomatisierung die wichtigste Rolle in der Code-, Build- und Testphase des SDLC.
Die Integration wichtiger Qualitäts- und Sicherheitsprüfungen erfordert statische Analysewerkzeuge.
Beispiel für die Bereitstellung mit Parasoft C/C++test und einer containerisierten Kompilierungs-Toolchain.
Entwicklungsteams wissen, dass CI/CD-Workflows gleich funktionieren können, unabhängig davon, ob sie containerisiert sind oder nicht. Container ermöglichen es DevOps-Teams jedoch, Anwendungen einfacher bereitzustellen sowie sie zu patchen und an die Anforderungen einer Organisation anzupassen. Im Wesentlichen beschleunigen Container die Entwicklung, das Testen und die Produktion, wie sie im Rahmen der Agile- und DevOps-Nutzung angewendet werden.
Bei der Verwaltung komplexer Entwicklungsumgebungen, insbesondere im sicherheitskritischen Bereich, kämpfen Teams normalerweise mit den folgenden Herausforderungen.
All diese Probleme lassen sich mit Containern lösen.
Jede Strategie, die die Markteinführungszeit und Kosten reduziert und die Arbeit für Entwicklungsteams vereinfacht, ist eine Win-Win-Win-Situation. Die Übernahme der Agile-Methodik und der Wechsel nach links in Richtung CI/CD-DevOps ist eine Notwendigkeit für moderne Entwickler in der Automobilindustrie. Aber nicht alle Tools auf dem Markt für diesen Zweck sind gleich geschaffen.
Parasoft bietet eine einzigartige Lösung für Ihre CI/CD-DevOps-Anforderungen . Unser Tool generiert automatisch Datenberichte, verfügt über eine intuitive, benutzerfreundliche Oberfläche, unterstützt End-to-End-Systemtests und vieles mehr. Fragen zur Tool-Qualifizierung und Probleme bei der Dokumentation gehören der Vergangenheit an. Verfolgen Sie den Fortschritt mithilfe intelligenter Berichte und Dashboards, die Daten zu Unit-Tests, statischer Analyse und weiteren Metriken liefern.
Unsere Lösungen halten die für sicherheitskritische Software erforderlichen Standards und Zertifizierungen ein. Darüber hinaus profitieren Parasoft-Benutzer von einer flexiblen, zentralisierten webbasierten Schnittstelle zum Durchsuchen von Ergebnissen bei der Integration in CI/CD-Workflows. Das dynamische webbasierte Berichts-Dashboard verwendet unsere Process Intelligence Engine, um Funktionen für die Lebensqualität bereitzustellen, wie:
„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.