Logo Parasoft

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

Blog Parasoft

Atteinte des objectifs de couverture de code avec GoogleTest et C/C++test CT certifiés TÜV

Portrait de Miroslaw Zielinski, directeur de la gestion des produits
By Miroslaw Zielinski le 9 avril 2026 4 min de lecture
le 9 avril 2026 | 4 min de lecture
By Miroslaw Zielinski
Texte à gauche : Atteindre les objectifs de couverture de code avec GoogleTest et C/C++test, certifiés TÜV. À droite, une image d'un écran d'ordinateur affichant des blocs horizontaux verts et rouges représentant du code C/C++. Au premier plan figurent un cube GoogleTest et le logo TÜV SÜD.

Découvrez comment surveiller les indicateurs de couverture de code et identifier et corriger efficacement les lacunes de couverture des logiciels critiques pour la sécurité à l'aide de C/C++test CT avec GoogleTest certifié TÜV SÜD.

Points clés à retenir

  • Les normes de sécurité telles que l'ISO 26262, la DO-178C et la CEI 61508 exigent une preuve objective de l'exhaustivité des tests grâce à la traçabilité des exigences et à la couverture du code structurel, ce qui requiert une intégration transparente entre les cadres de tests unitaires, les RMS et les outils de couverture.
  • Dans les projets du monde réel dont les exigences sont incomplètes ou évolutives, les équipes doivent analyser de manière itérative les lacunes de couverture, identifier les stimuli manquants, développer des cas de test et utiliser ces tests pour affiner les exigences – un flux de travail réactif mais courant que des outils bien intégrés peuvent prendre en charge.
  • Notre solution inclut GoogleTest, certifié TÜV SÜD, avec documentation des processus de sécurité fonctionnelle et rapports de couverture intégrés. Elle prend en charge l'exécution locale et en pipeline CI et simplifie l'analyse MC/DC en fournissant des vecteurs de test minimaux précalculés pour les conditions non couvertes.
  • Un serveur MCP expose des données de couverture structurées aux agents d'IA, permettant aux utilisateurs de demander la génération automatique de cas de test GoogleTest ciblant les scénarios non couverts, que les développeurs peuvent ensuite examiner par rapport au comportement et aux exigences du système.
  • En combinant un framework GoogleTest certifié TÜV SÜD avec une analyse de couverture avancée et une génération de tests basée sur l'IA, les équipes peuvent identifier efficacement les lacunes, générer les tests manquants et maintenir un flux de travail de vérification évolutif et conforme pour le C++ moderne.

Pour les équipes développant des systèmes critiques pour la sécurité, le respect des exigences de couverture de code ne se limite pas à l'exécution de tests ; il nécessite un flux de travail fondamentalement intégré entre votre framework de tests unitaires, la traçabilité des exigences et les outils de couverture.

Exigences de conformité pour les tests unitaires dans les logiciels critiques pour la sécurité

Les tests unitaires sont un élément fondamental de processus de vérification et de validation (V&V) pour les logiciels embarqués critiques pour la sécurité. Toutes les principales normes de sécurité fonctionnelle exigent une preuve objective de l'exhaustivité des tests au niveau unitaire.

Cette exhaustivité est généralement démontrée par la traçabilité des exigences et les rapports de couverture du code structurel. Par conséquent, tout framework de tests unitaires utilisé dans le cadre de la conformité Le contexte doit s'intégrer parfaitement au système de gestion des exigences (RMS) du projet et aux outils de couverture de code.

Un flux de travail pratique pour combler les lacunes de couverture

Dans un scénario de développement idéal, les équipes commencent par définir des exigences claires et sans ambiguïté, accompagnées d'une spécification de test complète. L'implémentation se déroule conformément à ces exigences, et les rapports de couverture de code ne fournissent qu'une preuve objective de l'exhaustivité de la vérification au niveau du code source.

En pratique, les équipes atteignent rarement cet idéal. Elles entament souvent la mise en œuvre et le développement des tests avec des exigences incomplètes ou évolutives.

Dans certains cas, les exigences formelles peuvent être totalement absentes, par exemple lorsque les processus de vérification et de validation et de sécurité sont appliqués rétrospectivement à un code source existant qui n'a pas été initialement développé dans le cadre d'un système de sécurité fonctionnelle.

Dans de telles situations, le développement, la définition des exigences et la création des tests se déroulent en parallèle. Ce flux de travail oblige les équipes à :

  • Analyser de manière itérative les lacunes identifiées dans les rapports de couverture de code.
  • Déterminer quels stimuli d'entrée ou scénarios d'exécution manquent pour tester le code non couvert.
  • Affiner en permanence les exigences en fonction du comportement observé du système.

Un écart de couverture peut indiquer du code mort, un cas de test manquant ou une exigence incomplète ou non définie.

Dans tous les cas, l'enjeu crucial est de comprendre pourquoi une structure de code donnée reste non couverte. Pour des indicateurs relativement simples comme la couverture de lignes, cette analyse est souvent directe. Cependant, des critères plus avancés comme la couverture conditionnelle/décisionnelle modifiée (MC/DC) peuvent rendre l'analyse des causes profondes beaucoup plus complexe.

Bien que ce flux de travail soit loin d'être idéal, en pratique, le processus commence souvent par l'identification d'une lacune en matière de couverture, suivie de l'analyse des stimuli manquants nécessaires pour exécuter le code non couvert.

Sur la base de cette analyse, les développeurs créent un cas de test pour couvrir le comportement qui n'avait pas été testé auparavant.

Le cas de test ainsi obtenu sert de base à une meilleure compréhension du système et oriente les améliorations et définitions d'exigences ultérieures.

Les outils de tests unitaires bien intégrés peuvent soutenir ce processus en fournissant des détails sur les lacunes de couverture et, dans certains cas, en aidant à générer les cas de test initiaux pour orienter les affinements des exigences comme décrit ci-dessus.

Comment C/C++test CT simplifie l'analyse des lacunes de couverture

Test CT Parasoft C/C++ Cette version de GoogleTest, certifiée TÜV, intègre un système de rapports de couverture de code, simplifiant considérablement l'analyse des écarts de couverture. Elle inclut également des fonctionnalités d'intelligence artificielle pour la génération automatisée de cas de test.

Avec C/C++test CT, les équipes peuvent exécuter leurs suites de tests GoogleTest et collecter la couverture de code à la fois localement et au sein de pipelines CI.

De nombreuses équipes apprécient la possibilité d'exécuter localement un sous-ensemble ciblé de tests Google Test avant de valider leurs modifications, puis d'exécuter la suite complète de tests dans leur pipeline d'intégration continue (CI). Les résultats de couverture peuvent ensuite être récupérés depuis le pipeline CI et analysés directement dans l'IDE, ce qui permet un cycle de rétroaction efficace. Pour les équipes utilisant Visual Studio Code, C/C++test CT offre une prise en charge simplifiée de ce flux de travail.

Graphique illustrant le flux des demandes de fusion pour l'exécution des tests unitaires GoogleTest et les résultats de couverture de code pour la génération de rapports

Une fois les rapports de couverture disponibles, l'étape suivante consiste à analyser les écarts. C/C++test CT simplifie ce processus, notamment pour les critères de couverture plus exigeants tels que MC/DC.

La capture d'écran ci-dessous illustre un exemple de résultats de couverture MC/DC pour une décision spécifique au sein d'une fonction.

Capture d'écran de Parasoft C/C++test CT montrant un exemple de résultats de couverture MC/DC pour une décision spécifique au sein d'une fonction.

Un exemple de résultats de couverture MC/DC pour une décision spécifique au sein d'une fonction dans Parasoft C/C++test CT.

Comme indiqué, les résultats fournissent une analyse détaillée des conditions couvertes et non couvertes par la décision, ainsi qu'un tableau de l'ensemble minimal précalculé de vecteurs de test requis pour atteindre une couverture complète de 100 %. Cet ensemble minimal est particulièrement précieux car il oriente les développeurs vers les combinaisons de conditions spécifiques à mettre en œuvre pour satisfaire aux exigences MC/DC.

Création et génération de cas de test GoogleTest manquants

Une fois les lacunes de couverture identifiées, l'étape suivante consiste généralement à développer un ou plusieurs cas de test couvrant le code non couvert, permettant ainsi aux équipes d'évaluer si des mises à jour ou des améliorations des exigences sont nécessaires. Comme indiqué précédemment, bien qu'il s'agisse d'une approche réactive, cette pratique est courante dans de nombreux projets.

Ces cas de test peuvent être créés manuellement, sur la base des informations de couverture fournies par C/C++test CT, ou générés automatiquement à l'aide des outils disponibles.

C/C++test CT inclut un serveur MCP qui expose des données de couverture structurées aux agents d'IA. Pour les métriques avancées telles que MC/DC, ces données contiennent des informations détaillées sur les vecteurs de test manquants nécessaires pour explorer pleinement toutes les conditions d'une décision donnée.

Avec le serveur MCP de C/C++test CT, les utilisateurs peuvent, entre autres requêtes, demander à l'agent IA : « Générez des cas de test GoogleTest pour éliminer les lacunes de couverture dans le fichier <> ».

Le graphique ci-dessous présente une vue simplifiée du flux de données entre le moteur de couverture, le serveur MCP et l'agent d'IA.

Graphique illustrant le flux de données entre un moteur de couverture, un serveur MCP et un agent d'IA, avec une capture d'écran de C/C++test CT en arrière-plan.

Flux de données simplifié entre le moteur de couverture, le serveur MCP et l'agent d'IA

Grâce à ces données structurées, les agents d'IA peuvent générer automatiquement des cas de test Google Test ciblant les scénarios non couverts, ce qui contribue à améliorer la couverture tout en réduisant l'effort de développement. Les développeurs peuvent ensuite examiner ces tests générés et évaluer leur pertinence par rapport au comportement du système et aux exigences existantes ou à définir.

Conclusion

En combinant un framework GoogleTest certifié TÜV avec une analyse de couverture avancée et une génération de tests basée sur l'IA, C/C++test CT simplifie l'obtention d'une couverture de code complète et la conformité. Il permet aux équipes de développement C++ modernes d'identifier les lacunes en matière de tests, de générer les tests manquants et de maintenir un flux de travail de vérification efficace et évolutif.

Découvrez comment votre équipe peut atteindre ses objectifs de couverture de code grâce à C/C++test CT intégré à GoogleTest, le seul logiciel certifié TÜV.

Démonstration de la plateforme