Erfahren Sie, wie Sie statische Analysen, Komponententests und andere C- und C++-Softwaretestmethoden einfach in Ihre CI/CD-Pipeline integrieren können. Für Demo registrieren >>

Automotive CI/CD DevOps & Testautomatisierung

Von Ricardo Camacho

7. April 2022

7  min lesen

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.

So wie es die Automobilindustrie weiterhin tut nutzen Sie die agile Entwicklungsmethodik, treten andere Prozesse auf, die beschleunigt werden können. Dazu gehört die Bereitstellung durch DevOps mit besonderem Fokus auf kontinuierliches Testen. DevOps zielt darauf ab, alle notwendigen Schritte zu automatisieren, die erforderlich sind, um Anwendungscode zu übernehmen und an den Endbenutzer zu liefern. Im Wesentlichen funktioniert es wie ein Förderband, um Anwendungscode durch verschiedene Phasen zu bewegen.

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 zum Thema zeigt, wie CI/CD DevOps für automobile Entwicklungsprojekte nützlich sein können. Dieser Blog behandelt einige der gleichen Themen und beantwortet die folgenden Fragen.

  1. Was ist CI/CD in der ADAS-Entwicklung?
  2. Was sind die Vorteile von CI/CD?
  3. Wie passt es zu DevOps in der Automobilindustrie?
  4. Was kann Testautomatisierung für Ihr Team tun?
  5. Was sind Container und wie funktionieren sie?
  6. Warum ist Parasoft gut für CI/CD DevOps in der Automobilentwicklung?
Leitfaden zu CI/CD für Automotive DevOps
Endlosschleife für kontinuierliche Integration und kontinuierliche Entwicklung: Planen, Codieren, Erstellen, Testen, Freigeben, Bereitstellen, Betreiben, Überwachen und wieder mit Planen fortfahren.
Kontinuierliche Integration als Teil eines kontinuierlichen Entwicklungszyklus.

Was ist CI/CD?

CI/CD steht für Continuous Integration und Continuous Delivery. Die Kombination aus beidem erstellt eine automatisierte Pipeline wo Code erstellt, dann getestet und dann mithilfe automatisierter Prozesse bereitgestellt wird. Es bedeutet auch, dass Entwicklungsteams in kürzeren Zyklen in einem optimierten Arbeitsablauf arbeiten.

DevOps Best Practices für die Automobilentwicklung

Teams, die CI/CD verwenden haben in der Regel geringere Risiken, Kosten und Entwicklungszeiten bei der Verwendung dieser Methodik und dieses Ansatzes. Wie oben im CI/CD-DevOps-Zyklus dargestellt, ermöglicht die Feedback-Schleife den „kontinuierlichen“ Aspekt der Methodik, um die Automatisierung zu ermöglichen. Es sind jedoch automatisierte Tests, die die gesamte Schleife antreiben.

Wie passt CI/CD in DevOps für die Automobilindustrie?

Da ein Großteil der Automobilentwicklung in Software verwickelt ist, ist das Pushen von Updates zur Routinearbeit geworden, anstatt Hardwarefehlfunktionen zu beheben. Einhaltung von Updates zu funktionale Sicherheitsstandards wie ISO 26262, AUTOSAR, und mehr bedeutet, dass Teams sich schnell anpassen müssen.

Der Einsatz agiler Methoden, kontinuierlicher Tests und Automatisierung ist die beste Strategie, um diese modernen Probleme bei der Entwicklung und Wartung von Automobilsoftware anzugehen.

ISO 26262 Software-Compliance in der Automobilindustrie

Vorteile von CI/CD-Pipelines

Hier sind sieben Vorteile von CI/CD-Pipelines in der Automobilsoftwareentwicklung.

Code- und Testabdeckung

Wissen, welcher Code abgedeckt war und welcher nicht Durch die Ausführung von Testfällen können Teams besser verstehen, wo Fehler lauern könnten. Es hilft auch, zu wissen, wie viele weitere Testfälle für die erforderlichen Codeabdeckungsziele erforderlich sind, und genauere Ergebnisse zu erhalten.

Code-Standards

Statische Analyse anwenden innerhalb des CI/CD-DevOps-Workflows erleichtert die Einhaltung von Coding-Anforderungen der Branche wie MISRA C/C++.

Kontinuierliche Testautomatisierung

Nutzen Sie immense Arbeits- und Kosteneinsparungen, um Automotive-Software zu erstellen Tests auf automatisierter kontinuierlicher Basis das erfordert wenig menschliche Interaktion.

Shift-Left-Tests

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.

Sicherheit

Statische Analyse verwenden Codierungsstandards wie SEI CERT C/C++ ermöglicht eine frühere Erkennung von Sicherheitslücken und Fehlern.

Behälter

Diese können helfen Erstellen Sie reproduzierbare, konsistente und sichere Entwicklungsumgebungen. Sie können zentral aktualisiert und dann bereitgestellt werden, wenn Entwickler Code aktualisieren.

Datengesteuert

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.

DevOps Best Practices für die Automobilentwicklung

Aufbau des richtigen Ökosystems für die DevOps-Testautomatisierung

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:

  • Parasoft
  • Jenkins
  • GitHub
  • Gitlab
  • Azure-DevOps
  • Bit Bucket
  • Bambus
  • Docker (Container)
Kontinuierliche Integration und kontinuierliche Entwicklung Endlosschleife, die gegebenenfalls die Testmethoden zeigt.
Ein Beispiel für DevOps-Phasen mit ggf. Testmethoden.

Sicherheitstestautomatisierung für die Automobilsoftwareentwicklung

Sie haben vielleicht den Begriff gehört, DevSecOps, Vor. Dies ist die Praxis der Integration von Sicherheit in den DevOps-Workflow. Es erfordert ein Umdenken in den Teams, um Sicherheitstools und -praktiken in diese Methodik zu integrieren.

Die Integration von Sicherheit in Ihren Arbeitsablauf ist von größter Bedeutung, da Sicherheit für viele Automobilhersteller sehr wichtig geworden ist. Regulatorische Anforderungen aus WP.29 der UNECE und die Notwendigkeit, Sicherheitsprozesse einzubinden Standards wie ISO 21434 erfordern es.
Die Integration von Sicherheit in die CI/CD-Phasen ist in der obigen Abbildung dargestellt, ebenso wie Testmethoden angewendet werden können.

Automotive DevOps: Automatisierung von Qualität, Sicherheit und Schutz

Kontinuierliche Integration in Automotive-Software

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.

Infografik, die den kontinuierlichen Integrationsworkflow zeigt.
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.

DevOps Best Practices für die Automobilentwicklung

Testautomatisierungs-Workflow

Automatisierung reicht nicht mehr aus. Deshalb Kontinuierliches Testen funktioniert zusammen mit der Automatisierung in DevOps, um bessere Ergebnisse, kürzere Lebenszyklen und weniger Fehler zu liefern. Es ermöglicht Teams, schnell umzuschwenken – eine notwendige Eigenschaft in der heutigen Welt der sich ständig ändernden Anforderungen und Aktualisierungen.

Wie baut man die Pipeline?

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.

  1. Identifizieren der Zielhardware, des Softwarezwecks und der erwarteten Ergebnisse.
  2. Kenntnis möglicher Risikofaktoren, Sicherheitslücken und Probleme.
  3. Etablieren automatisierter Tests, indem identifiziert wird, welche Tests automatisiert werden können und sollten, und diese entsprechend anwenden.
  4. Verwenden Sie die richtigen Tools, die Entwicklern am besten dabei helfen, Updates, Fehler und allgemeine Arbeitsabläufe zu beheben.
  5. Erstellen von Dokumentationen rund um das System für Transparenz und einfachere Kommunikation zwischen den Teammitgliedern.

Was löst die Pipeline aus?

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.

Infografik, die Shift-Left-Tests zeigt, wie frühzeitiges Testen dazu beiträgt, teure und schwer zu behebende nachgelagerte Fehler zu beseitigen.
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.

Integrationspunkte für automatisiertes Testen

Mit besonderem Fokus auf statische Analyse und Unit-Tests spielt die Testautomatisierung die wichtigste Rolle in der Code-, Build- und Testphase des SDLC.

  • Code. In Bezug auf die Einhaltung von Codierungsstandards, Qualität und Sicherheit sind statische Analysewerkzeuge unerlässlich. Als Beispiel Automotive Software konform zu MISRA C oder C++ erfordert saubere Berichte beim Kodieren und Einchecken, um eine kontinuierliche Einhaltung zu gewährleisten.
  • Bauen. Diese Phase löst statische Analysewerkzeuge aus und initiiert Regressionstests. Dies bietet einen vollständigen Umfang der Software mit Präzision für die Fehlerlokalisierung und Daten für zukünftige Tests.
  • Test. In dieser Phase gehen die Teams fehlgeschlagene Regressionstests an und testen neu hinzugefügte Funktionen. Regression und andere Testergebnisse bestimmen den Planungszyklus.

Die Integration wichtiger Qualitäts- und Sicherheitsprüfungen erfordert statische Analysewerkzeuge.

Grafik, die die Bereitstellung mit Parasoft C/C++test und einer containerisierten Kompilierungs-Toolchain zeigt.
Beispiel für die Bereitstellung mit Parasoft C/C++test und einer containerisierten Kompilierungs-Toolchain.
Leitfaden zu CI/CD für Automotive DevOps

Wie Container die Entwicklung von Automobilsoftware verbessern

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.

  • Synchronisieren von Upgrades für das gesamte Team auf eine neue Version eines Tools wie eines Compilers, Erstellen einer Toolchain usw.
  • Dynamisches Reagieren auf einen neuen Sicherheitspatch für die Bibliothek oder das Software Development Kit (SDK).
  • Sicherstellung der Konsistenz der Toolchain für alle Teammitglieder und der automatisierten Infrastruktur (CI / CD).
  • Fähigkeit, die Entwicklungsumgebung zu versionieren und sie so wiederherzustellen, dass sie die ältere Version des Produkts bedient, die mit der spezifischen Toolchain zertifiziert wurde.
  • Onboarding und Einrichtung neuer Entwickler.

All diese Probleme lassen sich mit Containern lösen.

Fazit

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.

Warum ist Parasoft gut für CI/CD DevOps in der Automobilentwicklung?

Parasoft präsentiert a einzigartige Lösung für Ihre CI/CD-DevOps-Anforderungen. Unser Tool generiert automatisch Datenberichte, verfügt über eine intuitive Benutzeroberfläche, die anfängerfreundlich ist, unterstützt bei End-to-End-Systemtests und vieles mehr. Eliminieren Sie Fragen zur Werkzeugqualifizierung oder Probleme mit der Aufzeichnung. Verfolgen Sie den Fortschritt mit intelligenten Berichten und Dashboards, die Daten über Komponententests, statische Analysen und andere Metriken bereitstellen.

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:

  • Quellcode-Navigation
  • Anpassbare Berichts-Widgets
  • Erweiterte Analytik
  • Erweiterte Filterung
Implementieren Sie Best Practices von DevOps in Ihren CI/CD-Workflow und optimieren Sie das Testen.

„MISRA“, „MISRA C“ und das Dreieckslogo sind eingetragene Marken von The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Alle Rechte vorbehalten.

Von Ricardo Camacho

Ricardo ist Senior Technical Product Marketing Manager für die eingebetteten Testlösungen von Parasoft und verfügt über Erfahrung in der SDLC- und Testautomatisierung eingebetteter Echtzeit-, sicherheits- und sicherheitskritischer Anwendungen sowie in der Softwarekonformität mit Industriestandards.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.