Rejoignez-nous le 30 avril : dévoilement de Parasoft C/C++test CT pour l'excellence en matière de tests continus et de conformité | En savoir plus

DevOps CI/CD automobile et automatisation des tests

Portrait de Ricardo Camacho, directeur de la conformité de la sûreté et de la sécurité
7 avril 2022
7 min lire

CI/CD sont des termes jumeaux qui ont suscité de nombreuses discussions dans le paysage du développement logiciel. Découvrez comment le CI/CD joue un rôle clé dans l'industrie automobile et comment Parasoft peut vous aider à rendre votre CI/CD plus efficace.

Les véhicules modernes ont généralement plus de 100 millions de lignes de code. Maintenir à la fois la qualité et l'abordabilité sont devenus des priorités et des défis uniques pour de nombreuses équipes de développement. Cela s'accompagne d'exigences plus rigoureuses en matière de sûreté et de sécurité. Tout cela s'ajoute au fait que les tests deviennent encore plus partie intégrante du cycle de vie du développement logiciel (SDLC).

Alors que l'industrie automobile continue de adopter la méthodologie de développement Agile, d'autres processus qui peuvent être accélérés apparaissent. Cela inclut la livraison par DevOps avec un accent particulier sur les tests continus. DevOps vise à automatiser toutes les étapes nécessaires pour prendre le code d'application et le livrer à l'utilisateur final. Essentiellement, cela fonctionne comme un tapis roulant pour déplacer le code d'application à travers des phases distinctes.

Les initiatives DevOps et continues d'aujourd'hui nécessitent la capacité d'évaluer les risques associés à une version candidate instantanément et en continu. Les tests continus offrent un moyen automatisé et discret d'obtenir un retour d'information immédiat sur les risques commerciaux associés à une version logicielle candidate. Il guide les équipes de développement pour répondre aux attentes de l'entreprise et aide les responsables à prendre des décisions de compromis éclairées afin d'optimiser la valeur commerciale d'une version candidate. Une grande partie de cela est réalisée par l'intégration continue (CI).

Nos livre blanc sur le sujet éclaire à quel point CI/CD DevOps peut être utile pour les projets de développement automobile. Ce blog couvre certains des mêmes sujets et répond aux questions suivantes.

  1. Qu'est-ce que le CI/CD dans le développement ADAS ?
  2. Quels sont les avantages du CI/CD ?
  3. Comment s'intègre-t-il dans le DevOps de l'industrie automobile ?
  4. Que peut faire l'automatisation des tests pour votre équipe ?
  5. Que sont les conteneurs et comment fonctionnent-ils ?
  6. Pourquoi Parasoft est-il bon pour CI/CD DevOps dans le développement automobile ?

Intégration continue et boucle infinie de développement continu : planifier, coder, construire, tester, publier, déployer, exploiter, surveiller, continuer à nouveau avec le plan.

Intégration continue dans le cadre d'un cycle de développement continu.

Qu'est-ce que CI/CD ?

CI/CD signifie intégration continue et livraison continue. La combinaison des deux crée un pipeline automatisé où le code est construit puis testé puis déployé à l'aide de processus automatisés. Cela implique également que les équipes de développement travaillent selon des cycles plus courts dans un flux de travail plus rationalisé.

Équipes utilisant CI/CD ont généralement réduit les risques, les coûts et les temps de développement tout en utilisant cette méthodologie et cette approche. Comme illustré ci-dessus dans le cycle CI/CD DevOps, la boucle de rétroaction permet à l'aspect « continu » de la méthodologie de permettre l'automatisation. Cependant, ce sont les tests automatisés qui alimentent toute la boucle.

Comment CI/CD s'intègre-t-il dans DevOps pour l'industrie automobile ?

Étant donné qu'une grande partie du développement automobile s'est concentrée sur les logiciels, pousser les mises à jour est devenu le travail le plus routinier plutôt que de résoudre les dysfonctionnements matériels. Adhérer aux mises à jour de normes de sécurité fonctionnelle comme ISO 26262, AUTOSAR, et de plus signifie que les équipes doivent s'adapter rapidement.

L'utilisation de la méthodologie Agile, des tests continus et de l'automatisation est la meilleure stratégie pour répondre à ces préoccupations modernes dans le développement et la maintenance de logiciels automobiles.

Conformité des logiciels ISO 26262 dans l'industrie automobile

Avantages des pipelines CI/CD

Voici sept avantages des pipelines CI/CD dans le développement de logiciels automobiles.

Couverture des codes et des tests

Savoir quel code était et n'était pas couvert grâce à l'exécution des cas de test permet aux équipes de mieux comprendre où les bogues pourraient se cacher. Cela permet également de savoir combien de cas de test supplémentaires sont nécessaires pour atteindre les objectifs de couverture de code requis et d'obtenir des résultats plus précis.

Normes des codes

Utilisation de l'analyse statique dans le flux de travail CI/CD DevOps facilite la conformité aux exigences de codage de l'industrie telles que MISRA C/C++.

Automatisation des tests en continu

Tirez parti d'une main-d'œuvre considérable et d'une réduction des coûts pour créer un logiciel automobile tests automatisés en continu qui nécessite peu d'interaction humaine.

Test de décalage vers la gauche

Tester tôt et souvent permet de réduire le nombre de vecteurs de menace, d'erreurs et de problèmes au cours de votre flux de travail. Les bogues sont exposés plus tôt, ce qui facilite les correctifs, réduit les temps de déploiement et réduit les coûts du projet.

Sécurité

Utilisation de l'analyse statique normes de codage comme SEI CERT C/C++ permet une détection plus précoce des failles de sécurité et des bogues.

Conteneurs

Ceux-ci peuvent aider à créer des environnements de développement reproductibles, cohérents et sécurisés. Ils peuvent être mis à jour de manière centralisée, puis déployés au fur et à mesure que les développeurs mettent à jour le code.

Axée sur les données

Les tests continus reposent sur la génération et l'analyse de données. En créant les données appropriées pour les scénarios spécifiques que vous souhaitez exécuter, vous pouvez mieux simuler le scénario au lieu de vous fier aux sources de données de production.

Meilleures pratiques DevOps pour le développement automobile

Construire le bon écosystème d'automatisation des tests DevOps

Il est important de bien comprendre les phases DevOps et de savoir quand commencer à utiliser les bons outils pour obtenir les meilleurs résultats. Il existe également sur le marché divers outils ou solutions de pipeline CI/CD éprouvés qui prennent en charge votre déploiement DevOps. Certains de ces outils pour l'industrie automobile comprennent :

  • Parasoft
  • Jenkins
  • GitHub
  • gitlab ce
  • DevOps Azure
  • bitbucket
  • Bambou
  • Docker (conteneurs)
Boucle infinie d'intégration continue et de développement continu montrant les méthodes de test le cas échéant.
Un exemple de phases DevOps avec des méthodes de test le cas échéant.

Automatisation des tests de sécurité pour le développement de logiciels automobiles

Vous avez peut-être entendu le terme, DevSecOps, avant de. Il s'agit de la pratique consistant à intégrer la sécurité dans le flux de travail DevOps. Cela nécessite un changement de mentalité dans les équipes pour intégrer des outils et des pratiques de sécurité dans cette méthodologie.

Adopter la sécurité dans votre flux de travail est primordial car la sécurité est devenue très importante pour de nombreux constructeurs automobiles. Les exigences réglementaires du WP.29 par la CEE-ONU et la nécessité d'intégrer les processus de sécurité de normes comme ISO 21434 le nécessiter.

L'intégration de la sécurité dans les phases CI/CD est illustrée dans la figure ci-dessus, ainsi que les endroits où les méthodes de test peuvent être appliquées.

Intégration continue dans les logiciels automobiles

L'intégration continue est l'un des principaux composants de DevOps. CI est la fusion de fonctionnalités de code, de correctifs ou de petites modifications soutenues par des processus qui incluent le contrôle de version et l'automatisation de la construction de logiciels.

Les procédures automatisées varieront pour les équipes de développeurs en fonction de la portée du projet, des priorités, des outils utilisés, du budget et d'autres facteurs.

Infographie montrant le workflow d'intégration continue.
Un exemple de workflow d'intégration continue.

En un mot, le flux de travail typique commence par la création par les développeurs d'une branche à partir de laquelle travailler. Les développeurs effectuent une demande d'extraction, écrivent du code et apportent des modifications tous les jours, plusieurs fois par jour. Un push ou un commit pour le changement de code est effectué, ce qui crée une demande de fusion.

Le code est poussé dans un référentiel tel que Git, généralement au sein d'une plate-forme DevOps telle que GitLab. GitLab exécutera un pipeline pour chaque commit sur la branche du développeur. En d'autres termes, il construira le code et exécutera des scripts de test automatisés (analyse statique, tests unitaires, couverture de code, etc.). Les images Docker peuvent également être utilisées pour remplir le pipeline. Une fois le code vérifié, il sera fusionné dans la branche principale.

D'autres plates-formes d'hébergement de code comme GitHub sont également couramment utilisées et peuvent héberger des coureurs auto-hébergés. Ces exécuteurs peuvent être des serveurs physiques, des machines virtuelles ou des images de conteneurs et s'exécuter sur site ou sur un cloud public, comme Google Cloud.

Guide de CI/CD pour DevOps automobile

Flux de travail d'automatisation des tests

L'automatisation ne suffit plus. C'est pourquoi les tests continus fonctionnent en tandem avec l'automatisation dans DevOps pour fournir de meilleurs résultats, des cycles de vie plus courts et moins de bogues. Il permet aux équipes de pivoter rapidement, une caractéristique nécessaire dans le monde actuel d'exigences et de mises à jour en constante évolution.

Comment construisez-vous le pipeline ?

La création de votre propre pipeline DevOps CI/CD automobile dépendra de votre équipe, de vos flux de travail, de votre projet, etc. Mais en général, la construction du pipeline repose sur certains aspects clés.

  1. Identifier le matériel cible, l'objectif du logiciel et les résultats attendus.
  2. Connaître les facteurs de risque possibles, les vulnérabilités de sécurité et les problèmes.
  3. Établir des tests automatisés en identifiant quels tests peuvent et doivent être automatisés et en les appliquant en conséquence.
  4. Utiliser les bons outils qui aident le mieux les développeurs à gérer les mises à jour, les bogues et les flux de travail globaux.
  5. Créer une documentation autour du système pour plus de transparence et une communication plus facile entre les membres de l'équipe.

Qu'est-ce qui déclenche le pipeline ?

Lorsqu'un développeur a créé un nouveau code ou terminé un correctif, le valider dans le référentiel déclenche des tests avec à la fois un test de construction incrémentiel et un test d'analyse statique sur l'unité. Les développeurs peuvent utiliser ces résultats pour refactoriser selon les besoins.

Les développeurs peuvent également déclencher des builds à l'échelle du projet manuellement ou à certains moments pendant les heures de travail. Cela lancerait une analyse statique complète suivie d'une suite de tests de régression comprenant des tests unitaires nouveaux et mis à jour.

Infographie montrant que les tests de décalage vers la gauche permettent d'éliminer les erreurs en aval coûteuses et difficiles à corriger.
Lorsqu'elle est effectuée plus tôt dans le développement et la refactorisation du code, l'analyse statique peut éliminer les erreurs en aval coûteuses et difficiles à corriger.

Points d'intégration pour les tests automatisés

Avec un accent particulier sur l'analyse statique et les tests unitaires, l'automatisation des tests joue le rôle le plus important dans la phase de code, de construction et de test du SDLC.

  • Code. En termes de conformité aux normes de codage, de qualité et de sécurité, les outils d'analyse statique sont essentiels. Par exemple, un logiciel automobile conforme à MISRA C ou C++ nécessite des rapports propres au codage et à l'enregistrement pour assurer une conformité continue.
  • Construire. Cette étape déclenche les outils d'analyse statique et initie les tests de régression. Cela fournit une portée complète du logiciel avec une précision pour l'emplacement des erreurs et des données pour les tests futurs.
  • Test. Cette étape permet aux équipes de résoudre les tests de régression ayant échoué et de tester les fonctionnalités nouvellement ajoutées. La régression et d'autres résultats de test déterminent le cycle de planification.

L'intégration des contrôles vitaux de qualité et de sécurité nécessite des outils d'analyse statique.

Graphique montrant le déploiement à l'aide de Parasoft C/C++test et d'une chaîne d'outils de compilation conteneurisée.
Exemple de déploiement à l'aide de Parasoft C/C++test et d'une chaîne d'outils de compilation conteneurisée.

Comment les conteneurs améliorent le développement de logiciels automobiles

Les équipes de développement savent que les workflows CI/CD peuvent fonctionner de la même manière, qu'ils soient conteneurisés ou non. Mais les conteneurs permettent aux équipes DevOps de déployer plus facilement des applications, ainsi que de les corriger et de les adapter aux besoins d'une organisation. Essentiellement, les conteneurs accélèrent le développement, les tests et la production tels qu'ils sont appliqués dans l'utilisation Agile et DevOps.

Lorsqu'il s'agit de gérer des environnements de développement complexes, en particulier dans l'espace critique pour la sécurité, les équipes sont généralement confrontées aux défis suivants.

  • Synchroniser les mises à niveau pour toute l'équipe vers une nouvelle version d'un outil comme un compilateur, créer une chaîne d'outils, etc.
  • Réagir dynamiquement à un nouveau correctif de sécurité pour la bibliothèque ou le kit de développement logiciel (SDK).
  • Assurer la cohérence de la chaîne d'outils pour tous les membres de l'équipe et de l'infrastructure automatisée (CI / CD).
  • Possibilité de versionner l'environnement de développement et de le restaurer pour entretenir l'ancienne version du produit qui a été certifiée avec la chaîne d'outils spécifique.
  • Intégration et mise en place de nouveaux développeurs.

Tous ces problèmes peuvent être résolus à l'aide de conteneurs.

Conclusion

Toute stratégie qui réduit les délais de mise sur le marché, les coûts et facilite les choses pour les équipes de développement est une situation gagnant-gagnant-gagnant. Adopter la méthodologie Agile et passer à gauche vers CI/CD DevOps est une nécessité pour les développeurs de l'industrie automobile moderne. Mais tous les outils disponibles sur le marché à cet effet ne sont pas créés de la même manière.

Pourquoi Parasoft est-il bon pour les DevOps CI/CD dans le développement automobile ?

Parasoft présente une solution unique à vos besoins CI/CD DevOps. Notre outil génère automatiquement des rapports de données, dispose d'une interface utilisateur intuitive adaptée aux débutants, facilite les tests système de bout en bout, et bien plus encore. Éliminez les questions sur la qualification des outils ou les problèmes de tenue de registres. Suivez les progrès à l'aide de rapports et de tableaux de bord intelligents qui fournissent des données sur les tests unitaires, l'analyse statique et d'autres mesures.

Nos solutions maintiennent les normes et les certifications requises pour les logiciels critiques pour la sécurité. De plus, les utilisateurs de Parasoft bénéficient d'une interface Web flexible et centralisée pour parcourir les résultats lors de l'intégration dans les flux de travail CI/CD. Le tableau de bord de création de rapports dynamique basé sur le Web utilise notre Process Intelligence Engine pour offrir des fonctionnalités de qualité de vie telles que :

  • Navigation dans le code source
  • Widgets de rapports personnalisables
  • Analyse avancée
  • Filtrage avancé
Mettez en œuvre les meilleures pratiques DevOps dans votre flux de travail CI/CD et rationalisez les tests.

« MISRA », « MISRA C » et le logo triangulaire sont des marques déposées de The MISRA Consortium Limited. ©The MISRA Consortium Limited, 2021. Tous droits réservés.