Découvrez GoogleTest certifié TÜV avec Agentic AI pour les tests C/C++ !
Plus de détails »
Découvrez le test Parasoft C/C++ en action !
Démarrez votre essai gratuit de 14 jours.
Inscrivez-vousContenu recommandé
WEBINAIRE
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 domaine des systèmes embarqués, les langages C et C++ sont fréquemment utilisés dans les systèmes critiques pour la sûreté et la sécurité. Des secteurs tels que l'automobile (ISO 26262), l'aéronautique (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 niveau SIL 4 de la norme IEC 61508 recommande fortement une couverture à 100 % des instructions, des branches et des contrôles MC/DC. Le point commun de ces normes réside dans l'importance accordée à la couverture des instructions, des branches et des contrôles MC/DC, car il s'agit de bonnes pratiques reconnues par les experts du secteur pour garantir un code de haute qualité, sûr et fiable.
L'obtention d'une couverture de code peut être réalisée grâce à 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.