Logo Parasoft

Découvrez GoogleTest certifié TÜV avec Agentic AI pour les tests C/C++ !
Plus de détails »

Fond géométrique avec des touches de bleu et de vert
Image de couverture du livre blanc « Guide CI/CD pour le DevOps automobile »

Livre blanc

Guide de CI/CD pour DevOps automobile

Vous vous demandez ce que contient ce guide ? Découvrez un aperçu ci-dessous.

Marché

La croissance rapide des logiciels automobiles, alimentée par les systèmes avancés d'aide à la conduite (ADAS) et les exigences croissantes en matière de sûreté et de sécurité, a rendu le développement et les tests de plus en plus coûteux et complexes. Les véhicules modernes contenant plus de 100 millions de lignes de code, les constructeurs automobiles adoptent les pratiques CI/CD et DevOps pour réduire les délais de mise sur le marché et maîtriser les coûts.

Ce livre blanc explique comment l'intégration des tests automatisés — en particulier l'analyse statique, les tests unitaires et la couverture structurelle du code alignés sur la norme ISO 26262 — dans les pipelines CI permet des tests continus, améliorant considérablement la productivité, réduisant les efforts de test et améliorant la qualité et la sécurité globales des logiciels.

Automatisation dans l'intégration continue/le CD

Intégration continue repose sur des processus de compilation et de déploiement automatisés afin d'éviter les flux de travail manuels et lents qui nuisent à son efficacité.

L'intégration continue (CI) exige un dépôt de code source unique, des builds automatisés et une résolution rapide des problèmes d'intégration. Cependant, les initiatives CI/CD stagnent souvent lors de la phase de test, où la détermination des éléments à tester et l'exécution des tests, notamment manuelle, s'avèrent chronophages et coûteuses. Si l'automatisation des tests est essentielle, elle ne suffit pas à elle seule, soulignant la nécessité de stratégies de test plus complètes pour garantir une livraison continue.

CI/CD pour le développement des systèmes ADAS

L'intégration continue et la livraison continue (CI/CD) gagnent en popularité au sein des entreprises de développement de logiciels automobiles. Cependant, les projets sont souvent soumis à des contraintes que le développement d'applications ne connaît pas.

Outre les contraintes physiques et informatiques du matériel cible, il existe des contraintes liées au marché. Les logiciels automobiles doivent répondre à des exigences de sécurité, de sûreté, de fiabilité et avoir une durée de vie extrêmement longue ; les produits peuvent rester sur le marché pendant des décennies.

Au niveau du développement, les logiciels automobiles nécessitent des environnements de développement intégrés (IDE), des compilateurs, des outils d'analyse statique et dynamique, ainsi que des outils de compilation. Ces outils ciblent souvent des architectures différentes de celle sur laquelle ils fonctionnent (environnement hôte versus environnement cible). Il est essentiel que les versions des outils soient compatibles au sein de l'équipe.

Infographie illustrant l'intégration continue comme partie intégrante d'un cycle de développement continu.

L'automatisation au niveau de la compilation utilise les mêmes techniques. Cependant, lorsque le code doit être exécuté, la barrière hôte/cible devient significative. L'automatisation nécessitant l'exécution de code requiert un support spécifique dans le développement de logiciels automobiles.

Automatisation des tests pour les logiciels automobiles est plus difficile en raison de la complexité du lancement et de l'observation des tests sur des cibles embarquées, de l'accès limité au matériel cible et de la nécessité de tests continus fonctionnels entre les systèmes de développement hôtes et les systèmes cibles.

Tests automatisés de l'hôte vers la cible

Une solution comme Parasoft C / C ++test Il est livré avec un banc d'essai optimisé pour minimiser la surcharge supplémentaire liée à l'empreinte binaire et le fournit sous forme de code source, où il peut être personnalisé si des modifications spécifiques à la plateforme sont nécessaires.

Exécution de tests unitaires et de couverture de code sur le matériel cible

Vue d'ensemble du déploiement, de l'exécution et de l'observation des tests de l'hôte vers la cible.

L'un des principaux avantages de la solution Parasoft C/C++test réside dans ses intégrations dédiées aux environnements de développement intégrés (IDE) et aux débogueurs embarqués, ce qui simplifie et automatise l'exécution des cas de test. Parmi les IDE pris en charge figurent Eclipse, Code VS, Green Hills Multi, Wind River Workbench, IAR EW, ARM MDK, ARM DS-5, TI CCS, Visual Studio, et bien d'autres.

La solution Parasoft permet de créer des référentiels de tests de régression sous forme d'ensemble organisé de tests et vérifie automatiquement tous les résultats. Ces tests s'exécutent automatiquement et régulièrement afin de vérifier si les modifications de code altèrent ou perturbent les fonctionnalités détectées par les tests de régression. Lors des tests suivants, C++test signale les tâches s'il détecte des changements de comportement par rapport au test initial.

L'équivalence des capacités d'exécution à distance avec les tests sur hôte signifie que les équipes de développement logiciel automobile peuvent bénéficier des mêmes avantages de l'automatisation que pour tout autre type de développement d'applications.

Plateforme de développement conteneurisée sur le poste de travail de chaque développeur

Le déploiement conteneurisé d'outils de développement est devenu incontournable pour les équipes de développement automobile. Bien que les conteneurs aient été initialement conçus pour résoudre les problèmes de déploiement de microservices et d'applications web, ils ont récemment gagné en popularité auprès des équipes de développement, notamment les grandes équipes qui les utilisent pour gérer des chaînes d'outils complexes.

Lorsqu'il s'agit de gérer des environnements de développement complexes, notamment dans le développement de logiciels critiques pour la sécurité, les équipes sont généralement confrontées aux défis suivants :

  • Synchronisation des mises à jour pour toute l'équipe vers une nouvelle version d'un outil tel qu'un compilateur ou une chaîne d'outils de construction
  • Réagir dynamiquement à un nouveau correctif de sécurité pour la bibliothèque ou le kit de développement logiciel (SDK)
  • Garantir la cohérence de la chaîne d'outils pour tous les membres de l'équipe et l'infrastructure automatisée (CI/CD)
  • Gestion des versions de l'environnement de développement et restauration de celui-ci pour prendre en charge l'ancienne version du produit certifiée avec une chaîne d'outils spécifique.
  • Intégration et configuration des nouveaux développeurs

Tous ces problèmes sont faciles à résoudre avec des conteneurs.

Utilisation d'un outil en ligne de commande avec une chaîne d'outils de compilation conteneurisée

L'outil en ligne de commande Parasoft C/C++test Professional est facile à configurer pour fonctionner avec une chaîne d'outils de compilation et un environnement d'exécution déployé dans des conteneurs. Il prend en charge les déploiements basés sur Linux et les conteneurs Docker.

Avantages de l'intégration continue/déploiement continu (CI/CD)

Le principal avantage de l'intégration continue et du déploiement continu (CI/CD) est la réduction des risques liés aux projets. Auparavant, trop de projets s'appuyaient sur des efforts d'intégration logicielle « big bang », où les équipes tentaient d'intégrer leurs logiciels trop près de la fin du développement produit. Ces équipes rencontraient d'énormes problèmes d'intégration et étaient souvent soumises à des délais extrêmement serrés pour terminer le projet. Les tests étaient repoussés encore plus tard, devenant alors insuffisants et trop tardifs.

Grâce à l'intégration continue, les équipes de développement logiciel disposent toujours d'une version complète du produit prête pour les tests, le déploiement et la mise en production. Au lieu de tout assembler d'un coup, l'équipe procède par étapes d'intégration plus petites et continues afin de détecter les problèmes au plus tôt et de réduire les risques liés à une intégration tardive.

Voici d'autres avantages de l'intégration continue :

  • Les tests d'intégration sont effectués tôt et fréquemment., ce qui signifie que les bugs sont détectés plus tôt, ce qui permet de les corriger plus facilement et à moindre coût.
  • Les tests de régression commencent plus tôt afin de pouvoir tester les nouvelles fonctionnalités et observer leur impact sur le code existant. De nouveaux tests sont ajoutés à la suite de tests de régression après chaque itération.
  • Améliorations progressives du produit en termes d'ajout et de test de nouvelles fonctionnalités et de correction de bogues. Il est plus facile d'intégrer la qualité et la sécurité de manière progressive.
  • Permet des tests et une livraison continusqui constituent des éléments essentiels du processus de développement continu. L'intégration continue seule n'est pas efficace sans test continu et livraison continue

 

L'intégration continue/déploiement continu (CI/CD) nécessite des tests continus.

L'intégration continue n'est qu'une partie d'un processus de développement continu qui comprend des tests et une mise en production. Les tests continus fournissent un retour d'information automatisé, non intrusif et immédiat sur les versions logicielles candidates ; il ne s'agit pas simplement d'une automatisation accrue des tests, mais bien d'une intégration de la qualité et de la sécurité dès la conception des produits, dans le cadre des processus d'intégration continue, de mise en production et de livraison.

Analyse statique

La détection précoce des bogues et des failles de sécurité sur le poste de travail du développeur empêche ces bogues de gaspiller du temps lors des tests unitaires et de s'introduire dans la version du logiciel.

Application des normes de codage

Aide se conformer aux normes industrielles requises comme MISRA C/C++ ou CERT C/C++, empêchant ainsi des catégories entières de défauts et de mauvaises pratiques de codage de pénétrer dans la version compilée.

Exécution de test automatisée

Nécessaire dès que l'application est compilée. Les tests requis comprennent des tests unitaires ainsi que des tests non fonctionnels de charge, de sécurité et de performance exécutés directement depuis les systèmes d'orchestration d'intégration continue.

Traçabilité des exigences

Assure la cohérence entre le code, les tests et autres ressources et les exigences métier. Fournit une évaluation objective des exigences non implémentées, des lacunes dans les tests et de l'avancement vers la livraison.

Analyse d'impact des tests

Ce document indique les axes prioritaires des efforts de test. Du point de vue des risques, toute modification de code a un impact qui dépasse le simple cadre du logiciel lui-même ; elle affecte également les tests et les ressources associés.

Gestion des données de test

Augmente considérablement l'efficacité de la stratégie de tests continus. Données de test de qualité et pratiques de gestion des données de test Augmenter la couverture et obtenir des résultats plus précis.

Décalage vers la gauche avec CI/CD

Le lecteur à décaler vers la gaucheLa sécurité et la fiabilité dans le cycle de vie du développement logiciel (SDLC) reposent sur la volonté de détecter et de corriger les bogues et les failles de sécurité le plus tôt possible. Il est bien plus simple, économique et risqué de corriger les problèmes au début. Cela paraît évident, mais l'industrie du logiciel regorge d'exemples où des défauts critiques ont eu des conséquences catastrophiques.

Les exigences essentielles pour un déploiement progressif vers la gauche (shift left) reposent sur la nécessité d'intégrer la qualité dès la conception de toutes les applications. La sûreté et la sécurité ne peuvent être ajoutées a posteriori ; elles doivent être intégrées dès la conception. Voici quelques recommandations pour un déploiement progressif vers la gauche dans le pipeline CI/CD, contribuant à créer la plateforme nécessaire aux tests continus :

  • Améliorer l'automatisation des tests
  • Augmenter la couverture de code
  • Automatiser la traçabilité bidirectionnelle
Diagramme avec l'axe Y affichant le pourcentage de défauts et l'axe X affichant les étapes de développement montrant comment le coût des défauts augmente au fur et à mesure qu'ils sont détectés dans le cycle de vie du développement.
Trouver et corriger rapidement les failles de sécurité est moins coûteux et moins risqué.

Améliorer la sécurité grâce au DevSecOps

Il convient de mentionner que les méthodologies DevOps et DevSecOps partagent l'utilisation de l'automatisation et des processus continus pour établir des cycles de développement collaboratifs. Si DevOps privilégie la rapidité de livraison, Le DevSecOps déplace la sécurité vers la gauchece qui est d'autant plus important dans les logiciels classés comme systèmes embarqués critiques pour la sûreté et la sécurité.

Le DevOps et le DevSecOps reposent tous deux sur l'automatisation et la collaboration continue, mais le DevSecOps met davantage l'accent sur l'intégration de la sécurité dès les premières étapes du développement – ​​une exigence essentielle pour les logiciels embarqués et les logiciels critiques pour la sécurité. En favorisant une collaboration plus étroite entre les développeurs et les parties prenantes, le DevSecOps améliore le développement de logiciels sécurisés. Si l'automatisation des tests est un élément clé, elle ne constitue qu'une partie de l'approche. Les tests étant souvent un goulot d'étranglement majeur dans le cycle de vie du logiciel, anticiper les activités de sécurité et réduire l'effort de test en aval améliore considérablement la sécurité du logiciel et l'efficacité du développement.

Accélérez la sécurité grâce à l'intégration continue et au déploiement continu (CI/CD).

Les initiatives DevSecOps modernes exigent la capacité d'évaluer instantanément et en continu les risques associés à une version candidate. Les tests continus au sein du pipeline CI/CD offrent une méthode automatisée et non intrusive pour obtenir un retour d'information immédiat sur les risques de sécurité liés à une version candidate. Ils permettent aux équipes de développement de respecter les exigences de sécurité et aident les responsables à prendre des décisions éclairées afin d'optimiser la version candidate.

Les tests continus permettent une évaluation quantitative des risques ainsi que la mise en place de mesures concrètes pour les atténuer avant leur passage à l'étape suivante du cycle de vie du développement logiciel (SDLC). L'objectif est d'éliminer les activités inutiles tout en améliorant la qualité et la sécurité et en orientant le développement vers une mise en production réussie.

Résumé

L'intégration et le déploiement continus (CI/CD) sont monnaie courante dans le développement automobile. La migration d'un processus en cascade vers le CI/CD et le développement Agile permet de réduire les risques et d'améliorer la qualité et la sécurité. La sécurité est une priorité absolue pour les développeurs automobiles, et le CI/CD facilite le DevSecOps, qui intègre les exigences et les contrôles de sécurité à tous les niveaux du pipeline.

Les conteneurs s'intègrent parfaitement à l'intégration continue et au déploiement continu (CI/CD). Ils permettent un déploiement rapide et une portabilité optimale entre différents environnements hôtes, tout en prenant en charge le versionnage et le contrôle centralisé. Les environnements de développement conteneurisés sont essentiels pour un développement sécurisé dans un pipeline DevSecOps, car ils permettent de fournir un environnement d'application reproductible doté de contrôles de sécurité intégrés.

Les tests représentent de loin l'activité la plus gourmande en temps et en ressources dans le développement automobile. Les tests continus constituent un élément essentiel d'un pipeline CI/CD performant et permettent d'intégrer les tests plus tôt dans le cycle de vie.

Grâce à une automatisation judicieuse et à une attention particulière portée aux zones les plus critiques de l'application, il est possible de rationaliser les tests afin qu'ils constituent moins un frein aux processus continus. Les tests continus nécessitent des outils d'automatisation et d'optimisation. Les outils qui permettent une couverture de code plus large, une exécution intelligente des tests et une traçabilité bidirectionnelle contribuent à améliorer encore les tests continus.

Équipe de développeurs

Prêt à plonger plus profondément ?

Téléchargez le livre blanc complet