Découvrez GoogleTest certifié TÜV avec Agentic AI pour les tests C/C++ !
Plus de détails »
En savoir plus sur le test Parasoft C/C++.
Rejoignez notre démo de produit mensuelle de 30 minutes.
Inscrivez-vousWEBINAIRE
La couverture de code mesure la quantité de code source d'une application testée par diverses méthodes, telles que les tests unitaires, les tests manuels et les tests fonctionnels automatisés. Les objectifs de pourcentage de couverture de code peuvent être subjectifs. L'exhaustivité de la couverture dans les systèmes critiques pour la sécurité dépend du niveau d'intégrité de sécurité (SIL) utilisé dans différents secteurs et du niveau d'assurance de conception (DAL) couramment utilisé en avionique. Pour la conception d'applications critiques pour la sécurité où une défaillance peut entraîner la mort, les normes réglementaires et industrielles exigent une couverture de code structurelle de 100 %.
Cette présentation aborde le sujet essentiel de la couverture de code pour les systèmes C/C++ embarqués, en expliquant son importance, les différents types de mesures et son application pratique. Nous explorons comment réaliser des tests approfondis, notamment dans les environnements critiques pour la sécurité, et présentons des outils qui simplifient le processus.
La couverture de code est une mesure qui indique la quantité de code source de votre application exécutée pendant les tests. Elle permet de répondre à la question : « Avons-nous suffisamment testé ? » En mettant en évidence le code non testé, elle permet de détecter les bugs potentiels et d'identifier le code mort. La méthode la plus courante pour y parvenir est l'instrumentation du code, qui consiste à ajouter du code supplémentaire pour suivre l'exécution des instructions, des décisions ou des branches. Cette instrumentation enregistre ensuite l'exécution, permettant ainsi de calculer et de visualiser un pourcentage de couverture de code, souvent avec le code surligné en vert (exécuté) ou en rouge (non exécuté).
La présentation comprenait une démonstration présentant :
Dans le monde des systèmes embarqués, C et C++ sont fréquemment utilisés dans les systèmes critiques pour la sûreté et la sécurité. Des secteurs comme l'automobile (ISO 26262), l'avionique (DO-178C) et les dispositifs médicaux (IEC 62304) sont soumis à des exigences réglementaires et des normes de processus strictes. Ces normes attribuent souvent des niveaux d'intégrité de sécurité (SIL) ou des niveaux d'assurance de conception (DAL) aux composants logiciels. Plus le niveau est élevé, plus le risque est important en cas de défaillance du logiciel, et plus les tests sont rigoureux. Par exemple, le SIL 4… IEC 61508 Il est fortement recommandé d'assurer une couverture à 100 % pour les relevés, les succursales et les centres de données. Le point commun de ces normes réside dans l'accent mis sur la couverture des relevés, des succursales et des centres de données, car il s'agit des meilleures pratiques reconnues par les experts du secteur pour garantir un code de haute qualité, sûr et fiable.
Atteindre la couverture du code peut être réalisé par différentes méthodes de test :
De nombreuses organisations combinent les résultats de ces différentes méthodes de test pour atteindre leurs objectifs de couverture globale. Par exemple, la couverture des tests unitaires peut être fusionnée avec celle des tests système.
La couverture du code est un élément essentiel d'un pipeline d'intégration/livraison continue (CI/CD). Les outils permettent d'automatiser l'instrumentation, l'exécution et le reporting des données de couverture, en s'intégrant parfaitement aux systèmes de build et aux plateformes CI/CD comme Jenkins, GitLab et Azure DevOps. Cela permet d'obtenir un retour d'information en temps réel sur la qualité du code et de gérer efficacement les risques.
En définitive, la couverture de code est une technique puissante pour garantir la qualité et la fiabilité des systèmes C/C++ embarqués, notamment dans les domaines critiques pour la sécurité. En comprenant les différents critères de couverture et en exploitant les outils appropriés, les équipes de développement peuvent atteindre leurs objectifs de test plus efficacement.