Optez pour une voie plus rapide et plus intelligente vers l'automatisation des tests C/C++ pilotée par l'IA. Découvrez comment >>
Livre blanc
Avant de vous lancer, consultez l'aperçu ci-dessous.
Alors que l'industrie automobile continue d'adopter un Méthodologie de développement agileIls commencent alors à identifier d'autres processus pouvant être accélérés, comme la livraison par DevOps, notamment grâce aux tests continus. DevOps vise à automatiser toutes les étapes nécessaires pour que le code applicatif soit déployé auprès de l'utilisateur final.
DevOps Ce système fonctionne comme un tapis roulant pour faire passer le code applicatif à travers les différentes phases. Les initiatives DevOps et d'amélioration continue actuelles exigent la capacité d'évaluer instantanément et en continu les risques associés à une version candidate.
Les tests continus offrent une méthode automatisée et non intrusive pour obtenir un retour d'information immédiat sur les risques métier associés à une version candidate. Ils permettent aux équipes de développement de répondre aux attentes métier et aident les responsables à prendre des décisions éclairées afin d'optimiser la valeur ajoutée de la version candidate. Une grande partie de ce processus est réalisée grâce à l'intégration continue (CI).
Dans ce livre blanc, nous aborderons les points suivants : meilleures pratiques pour le DevOps dans le domaine des logiciels automobiles:
Il est essentiel de bien comprendre les phases DevOps et de savoir à quel moment utiliser les outils adéquats pour obtenir les meilleurs résultats. De nombreuses solutions et outils CI/CD éprouvés sont disponibles sur le marché pour faciliter votre déploiement DevOps. Parmi les outils utilisés dans l'industrie automobile, on peut citer Parasoft, Jenkins, GitHub, GitLab, Azure DevOps, Bitbucket, Bamboo, Docker (conteneurs), et bien d'autres.
L'un des éléments clés du DevOps est l'intégration continue. L'IC consiste à fusionner des fonctionnalités, des correctifs ou des modifications mineures de code selon des processus automatisés, notamment le contrôle de version et la compilation logicielle. L'objectif de l'IC est d'établir une méthode cohérente et automatisée pour compiler, empaqueter et tester les applications au sein d'un pipeline logiciel.
Dans la plupart des cas, les tests constituent le principal obstacle à une intégration continue fluide et efficace. Les tests manuels étant exclus, il faut choisir entre automatiser les tests ou s'abstenir de tout test. L'automatisation des tests Cela va au-delà des simples tests unitaires ; cela inclut également les meilleures pratiques telles que l’analyse statique et les tests de régression. Les tests automatisés génèrent un retour d’information immédiat qui permet d’ajuster et de replanifier l’itération ou le sprint suivant.
L'automatisation des tests en DevOps consiste à automatiser vos méthodes de test. Il est important de bien connaître chacune des phases de cette méthodologie et de savoir où déclencher vos méthodes de vérification et de validation des tests.
Vous avez peut-être aussi entendu parler du terme DevSecOps, qui désigne la pratique de intégrer la sécurité au flux de travail DevOpsCela nécessite un changement de mentalité au sein des équipes pour intégrer les outils et les pratiques de sécurité à cette méthodologie. La sécurité est devenue primordiale pour de nombreux constructeurs automobiles en raison des exigences réglementaires de la norme WP.29 R155 et de la nécessité d'intégrer les processus issus de normes telles que… ISO 21434.
Un avantage important du pipeline CI/CD réside dans la boucle de rétroaction qu'il offre pour garantir le bon fonctionnement de la partie « continue ». Tout blocage dans cette boucle engendre des inefficacités qui entraînent des retards dans le développement et le déploiement.
Les outils d'automatisation des tests permettent de contourner les obstacles suivants liés aux tests unitaires :
En optimisant les tests au sein du pipeline CI/CD, il est possible d'améliorer la couverture des tests à chaque cycle et de ne pas entraver l'avancement du projet grâce à des tests continus.
Outils d'analyse statique sont essentiels pendant la phase de codage, tant du point de vue de la qualité que de la sécurité, ainsi que du point de vue de conformité aux normes de codagePour les logiciels automobiles qui doivent être conformes aux normes MISRA C ou C++, par exemple, des rapports clairs lors du codage et de l'intégration sont nécessaires pour garantir une conformité continue.
L'étape de compilation déclenche l'analyse statique et les tests de régression à l'échelle de l'application. À ce stade, les outils d'analyse statique s'exécutent sur l'ensemble du projet, offrant une meilleure précision et permettant de détecter d'éventuelles erreurs au niveau unitaire. C'est également à ce stade que les tests de régression sont lancés. Leurs résultats orientent la phase suivante : les tests.
À ce stade, les tests des nouvelles fonctionnalités débutent, ainsi que la gestion des tests de régression ayant échoué. Les résultats de ces tests orientent le cycle de planification suivant.
L'intégration continue n'est qu'une partie d'un processus de développement continu qui nécessite des tests et une mise en production pour tirer pleinement parti de cette approche.
Test continu Il offre une méthode automatisée et non intrusive pour obtenir un retour d'information immédiat sur une version candidate d'un logiciel. Les tests continus ne se limitent pas à une simple automatisation accrue des tests. Leur objectif est d'intégrer la qualité et la sécurité au produit dans le cadre d'un processus d'intégration, de déploiement et de livraison continus.
Au niveau du développement, le développement de logiciels automobiles ne diffère guère du développement d'applications classiques. Il requiert des environnements de développement intégrés (IDE), des compilateurs, des outils d'analyse statique et dynamique, ainsi que des outils de compilation. Cependant, ces outils ciblent souvent des architectures différentes de celles sur lesquelles ils fonctionnent, par exemple, l'environnement hôte et l'environnement cible. L'utilisation de versions compatibles avec ces outils est essentielle pour garantir un environnement de développement homogène au sein de l'équipe.
Automatisation des tests pour les logiciels automobiles La complexité du lancement et du suivi des tests sur des systèmes embarqués, ainsi que l'accès limité des équipes logicielles au matériel cible, rendent la tâche plus ardue. L'automatisation des tests logiciels est essentielle pour garantir le bon déroulement des tests automobiles, du système de développement hôte au système cible.
Tester les logiciels automobiles est particulièrement chronophage. L'automatisation des tests de régression permet de réaliser d'importantes économies de temps et de coûts. De plus, la collecte des résultats de tests et des données de couverture de code du système cible est essentielle à la validation et à la conformité aux normes.
La traçabilité entre les cas de test, les résultats des tests, le code source et les exigences doit être enregistrée et maintenue, ce qui signifie que la collecte de données est essentielle à l'exécution des tests.
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.
L'un des principaux avantages de la solution Parasoft C/C++test réside dans son intégration dédiée 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. Les environnements IDE compatibles incluent :
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 des modifications du code altèrent ou perturbent les fonctionnalités testées lors des tests de régression. En cas de modification, ces cas de test échouent afin d'alerter l'équipe. 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.
Les équipes de développement savent que les flux de travail CI/CD fonctionnent de la même manière, qu'ils soient conteneurisés ou non. L'avantage des conteneurs pour les équipes DevOps réside dans la facilité de déploiement et de mise à jour des applications. Les organisations peuvent adapter le nombre de conteneurs à leurs besoins afin d'accélérer le développement, les tests et la production dans le cadre des méthodologies 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:
Tous ces problèmes se résolvent facilement grâce aux conteneurs. Chaque conteneur renferme les versions standardisées de la chaîne d'outils de développement, incluant les outils d'analyse statique, le compilateur, l'EDI et les outils de compilation. Ces conteneurs sont mis à jour de manière centralisée et déployés à la demande, selon les besoins, lorsqu'un développeur travaille sur le code d'un projet.
L'homogénéité de l'environnement de développement élimine les erreurs potentielles liées à des versions légèrement différentes des outils installés sur les postes de travail des développeurs. C'est un excellent moyen de garantir que chacun utilise la version correcte de chaque outil, ce qui peut s'avérer crucial ultérieurement pour la conformité réglementaire. Les conteneurs offrent également une solution centralisée pour la mise à jour des outils et assurent leur diffusion immédiate au sein de l'organisation.
Le DevOps dans le domaine des logiciels automobiles exige une visibilité instantanée et continue sur les risques et la qualité de chaque version candidate, ce que les tests continus permettent grâce à un retour d'information automatisé et en temps réel. Bien que la transition du développement traditionnel en cascade vers les méthodes Agile et CI/CD puisse s'avérer complexe pour les systèmes embarqués critiques, elle reste possible avec une préparation adéquate et des pratiques exemplaires. Celles-ci incluent l'automatisation des tests pour favoriser l'intégration continue, la suppression des goulots d'étranglement liés à la vérification et à la validation par des tests sur les systèmes hôte et cible, l'utilisation de conteneurs pour garantir des environnements de développement cohérents et sécurisés, l'extension de la couverture des tests grâce à la génération automatisée et à l'exécution intelligente des tests, et l'exploitation d'un reporting centralisé pour une prise de décision basée sur les données. Ensemble, ces techniques modernes réduisent considérablement les inefficacités des tests manuels dans le secteur automobile et rendent les approches automatisées actuelles bien plus performantes.
Prêt à plonger plus profondément ?