Logo Parasoft Rechercher

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

Blog Parasoft

Comment prouver la couverture de vérification avec GoogleTest et C/C++test CT

Portrait de Miroslaw Zielinski, directeur de la gestion des produits
By Miroslaw Zielinski • 22 juillet 2026 • 6 min de lecture
22 juillet 2026 | 6 min de lecture
By Miroslaw Zielinski
Texte de gauche : Comment prouver la couverture de vérification avec GoogleTest et C/C++test CT. Le graphique de droite montre plusieurs documents de normes alignés horizontalement, une loupe étant placée au-dessus du document central coché pour indiquer sa conformité.

La couverture de code indique le code exécuté, mais ne prouve pas quelles exigences ont été vérifiées. Découvrez comment étendre Google Test avec la traçabilité des exigences grâce à Parasoft C/C++test CT et combler ainsi l'écart entre la réussite des tests et la preuve de conformité.

Points clés à retenir

  • Pourquoi la couverture de code n'est-elle pas suffisante pour les logiciels critiques pour la sécurité ? La couverture structurelle indique quel code a été exécuté, tandis que la traçabilité des exigences prouve quels comportements spécifiés ont été vérifiés. Les deux sont nécessaires pour démontrer l'exhaustivité des tests unitaires.
  • Comment ajouter la traçabilité des exigences aux suites de tests Google existantes ? En annotant les cas de test GoogleTest avec des identifiants d'exigences, en conservant les liens visibles dans le contrôle de version, puis en utilisant Parasoft C/C++test CT pour traiter le rapport d'exécution XML et envoyer les résultats à Parasoft DTP.
  • Comment corréler les résultats des tests avec les exigences externes ? Parasoft DTP se connecte directement aux systèmes de gestion des exigences, tels que Jama, Polarion, Codebeamer et DOORS Next, pour faire correspondre les métadonnées des exigences aux résultats d'exécution des tests unitaires sans duplication de données ni de feuilles de calcul manuelles.
  • Quelles lacunes en matière de vérification les rapports de traçabilité peuvent-ils révéler ? Il met en évidence les exigences non testées, les exigences liées uniquement à des tests ayant échoué et les exigences associées à des tests qui n'ont jamais été exécutés – des lacunes qu'un rapport GoogleTest standard ne peut pas révéler.
  • Comment cela évolue-t-il face à l'intégration continue et aux changements d'exigences ? Comme la traçabilité se met à jour à chaque exécution de GoogleTest, les équipes reçoivent un retour d'information rapide et continu sur les changements d'exigences et la refactorisation des tests, ce qui élimine la charge de maintenance liée à la mise à jour manuelle des matrices de traçabilité.

Pourquoi la traçabilité des exigences est importante pour GoogleTest dans les logiciels critiques pour la sécurité

Dans un article précédent, nous avons expliqué comment les équipes peuvent atteindre leurs objectifs de couverture de code grâce à GoogleTest (certifié TÜV) et à C/C++test CT, un outil de test logiciel C/C++ compatible avec GoogleTest. Vous pouvez collecter la couverture structurelle du code à partir des tests basés sur GoogleTest, analyser les lacunes de couverture et générer les preuves nécessaires pour démontrer l'exhaustivité des tests.

Mais la couverture de code ne représente qu'une dimension de l'exhaustivité des tests unitaires.

Dans les projets où le respect des normes de sécurité fonctionnelle est obligatoire, les équipes doivent également démontrer une vérification adéquate des exigences logicielles à l'aide de cas de test. Elles y parviennent généralement grâce à la production de rapports de traçabilité des exigences, qui établissent des liens documentés entre les exigences, les tests et leurs résultats.

La traçabilité des exigences permet aux équipes de répondre à plusieurs questions fondamentales.

  • Toutes les exigences logicielles applicables ont-elles été testées ?
  • Quels cas de test vérifient une exigence particulière ?
  • Quel a été le résultat d'exécution de chaque test ?
  • Existe-t-il des exigences sans tests associés ?

Sans ces informations, une exécution réussie de GoogleTest ou un pourcentage élevé de couverture de code ne démontrent pas, en soi, que le comportement attendu du logiciel a été entièrement vérifié.

Dans ce blog, nous expliquons comment Parasoft C/C++test CT étend le framework GoogleTest avec des rapports de traçabilité des exigences et permet de corréler les résultats des tests avec les exigences gérées dans un système de gestion des exigences externe.

Pourquoi la couverture de code ne suffit pas

La couverture du code structurel et la couverture des exigences offrent des perspectives complémentaires sur l'exhaustivité des tests unitaires.

Les rapports de couverture de code indiquent quelles parties de l'implémentation ont été testées. Selon le processus de développement et le niveau d'intégrité de sécurité requis, les équipes peuvent avoir besoin de collecter des indicateurs tels que la couverture des instructions, des branches, des décisions, des conditions ou des MC/DC.
Les rapports de traçabilité des exigences répondent à une question différente. Plutôt que d'indiquer quelles constructions de code ont été exécutées, ils montrent si le comportement logiciel spécifié a été vérifié.

C’est pourquoi les projets axés sur la conformité utilisent généralement les deux formes de preuves :

Ensemble, ces rapports offrent une vue d'ensemble plus complète de l'état de la vérification. Les équipes peuvent ainsi identifier les lacunes au niveau des exigences, des tests et de la mise en œuvre.

Le défi de la traçabilité des exigences avec GoogleTest

GoogleTest est largement utilisé pour les tests unitaires des logiciels C et C++. Il offre un cadre familier pour la définition des cas de test, l'organisation des suites de tests, l'exécution des tests et la génération des résultats d'exécution au format XML.

Le rapport d'exécution de GoogleTest, pris isolément, décrit principalement la structure des tests et leur état d'exécution. Il indique quels tests ont été exécutés et s'ils ont réussi, échoué ou ont été ignorés, mais il ne fournit pas un flux de travail complet, axé sur la conformité, permettant de corréler ces résultats avec les exigences stockées dans un système de gestion des exigences d'entreprise.

Les équipes tentent souvent de combler cette lacune à l'aide de tableurs, de conventions de nommage, de scripts personnalisés ou de matrices de traçabilité mises à jour manuellement. Si ces approches peuvent convenir aux petits projets, elles deviennent difficiles à maintenir à mesure que le nombre d'exigences, de cas de test, de variantes de produit et de configurations de test augmente.

Extension de Google Test avec la traçabilité des exigences

Parasoft C/C++test CT étend le flux de travail de GoogleTest en prenant en charge la génération de rapports de traçabilité des exigences. Vous pouvez annoter les cas de test en indiquant leur lien avec les exigences.
Un même cas de test peut être associé à une ou plusieurs exigences. De même, plusieurs cas de test peuvent vérifier une même exigence lorsque différentes entrées, modes de fonctionnement, conditions limites ou scénarios de défaillance doivent être évalués.

Ces annotations établissent le lien initial entre l'implémentation du test unitaire et les exigences du projet. Le processus de traçabilité des exigences comprend trois étapes principales.

1. Annoter les cas de test GoogleTest avec les identifiants des exigences

Les développeurs commencent par associer les cas de test GoogleTest aux identifiants d'exigences appropriés.

Les identifiants doivent correspondre aux exigences gérées dans le système de gestion des exigences du projet.

Le fait de conserver les références aux exigences à proximité de l'implémentation des tests rend la relation visible pendant le développement et permet de la gérer par le biais des mêmes processus de revue et de contrôle de version que le code de test.

2. Traiter les résultats d'exécution de GoogleTest avec C/C++test CT

Utilisez GoogleTest pour exécuter les tests annotés et générer un rapport d'exécution XML contenant les résultats des tests.

C/C++test CT lit le rapport XML, qui contient à la fois les résultats d'exécution des tests et les annotations des exigences, et envoie ces informations à Parasoft DTP, une plateforme de reporting.
DTP se connecte à votre RMS, importe les données d'exigences pertinentes et génère le rapport de traçabilité.

Vous pouvez intégrer ce flux de travail à votre processus de développement local ou, mieux encore, à un pipeline d'intégration continue.

3. Corréler les résultats des tests avec les exigences dans Parasoft DTP

DTP se connecte au système de gestion des exigences de l'organisation, tel que Jama, Polarion, Codebeamer ou DOORS Next, et récupère des informations sur les exigences référencées.
DTP met ensuite en corrélation les enregistrements d'exigences avec les résultats des tests unitaires reçus de C/C++test CT.

Cette corrélation combine des informations provenant de deux sources :

  • Définitions des exigences et métadonnées issues du système de gestion des exigences d'origine
  • Les relations de test et les résultats d'exécution du flux de travail GoogleTest

Par conséquent, vous pouvez analyser l'état de la vérification sans dupliquer la définition complète des exigences dans le code source du test ni transférer manuellement les résultats des tests dans le système de gestion des exigences.

Le système de gestion des exigences demeure la source faisant autorité en matière d'informations sur les exigences, tandis que le DTP offre une vue consolidée des relations entre les exigences et les preuves de test.

Diagramme de flux de processus illustrant comment assurer la traçabilité des exigences à l'aide de GoogleTest et de Parasoft C/C++test CT

Identification des lacunes en matière de vérification des exigences

Une fois les informations corrélées, les rapports de traçabilité peuvent mettre en évidence des lacunes difficiles à détecter à partir d'un rapport GoogleTest standard.

Par exemple, le rapport peut révéler les types d'exigences suivants :

  • Aucun test unitaire associé
  • Associé uniquement aux tests ayant échoué
  • Associé à des tests qui n'ont pas été exécutés

Ces résultats appuient à la fois le développement quotidien et les activités de conformité formelles.
Les rapports de traçabilité ne remplacent pas le jugement des ingénieurs. Ils fournissent plutôt des données objectives qui orientent les examinateurs vers les relations nécessitant une analyse plus approfondie.

Comment la traçabilité aide les équipes à gérer les changements d'exigences

Les exigences et les suites de tests restent rarement statiques.

Les exigences peuvent être ajoutées, modifiées, décomposées, remplacées ou supprimées. Les cas de test peuvent être renommés, restructurés, paramétrés ou divisés en tests plus petits. Les variantes de produit peuvent également nécessiter différents sous-ensembles d'exigences et de tests.

Étant donné que C/C++test CT traite les informations de traçabilité dans le cadre du flux d'exécution standard de GoogleTest, les rapports peuvent être mis à jour à chaque exécution de la suite de tests. Cela réduit la dépendance aux matrices de traçabilité gérées séparément du code source et susceptibles de devenir rapidement obsolètes.

La traçabilité continue permet également un retour d'information plus rapide. N'attendez pas un audit formel ou une étape clé de la mise en production pour identifier les relations manquantes. Vérifiez la couverture des exigences tout au long du développement.

Ceci est particulièrement précieux dans les environnements de développement dynamiques, où l'implémentation, l'affinage des exigences et le développement des tests se déroulent fréquemment en parallèle.

Combiner la traçabilité des exigences et la couverture de code

La production de rapports de traçabilité des exigences prend encore plus de valeur lorsqu'elle est analysée conjointement avec les capacités de couverture de code abordées dans la première partie de cette série.

Prenons l'exemple d'une exigence liée à un test réussi. Du point de vue des exigences, l'exigence semble avoir été vérifiée. Cependant, une analyse de couverture structurelle peut révéler que le test associé n'explore pas toutes les branches ou conditions pertinentes de l'implémentation.

À l'inverse, une fonction peut atteindre une couverture structurelle complète, tandis que l'analyse de traçabilité montre qu'aucun test n'a été explicitement associé à l'exigence qui définit le comportement attendu de la fonction.

Ces deux types de preuves aident les équipes à examiner l'exhaustivité de la vérification dans les deux sens.

  • Des exigences aux tests → Chaque exigence a-t-elle été vérifiée ?
  • Des tests aux exigences → Chaque test pertinent en matière de conformité a-t-il un objectif défini ?
  • Des tests au code → Quelles structures d'implémentation ont été mises en œuvre ?
  • Du code non couvert aux exigences → Le comportement non testé est-il requis, non intentionnel ou inaccessible ?

Cette analyse combinée soutient un processus de vérification plus systématique et fournit des preuves plus solides pour les examens, les évaluations et les audits.

Assurer la conformité sans remplacer le flux de travail de développement

Un avantage important de cette approche est que les équipes peuvent conserver GoogleTest comme framework de tests unitaires.

Les développeurs n'ont pas besoin d'abandonner leurs suites de tests existantes ni d'adopter un format de définition de test propriétaire distinct uniquement pour générer des rapports de traçabilité. C/C++test CT ajoute les fonctionnalités de reporting et d'intégration nécessaires au développement axé sur la conformité.

GoogleTest demeure le framework utilisé pour définir et exécuter les tests unitaires. C/C++test CT traite les données d'exécution et les annotations des exigences. Parasoft DTP intègre ces résultats aux informations du système de gestion des exigences d'origine et fournit une vue consolidée de la traçabilité.

Une traçabilité compatible avec votre flux de travail GoogleTest

Pour les logiciels critiques pour la sécurité, la réussite des tests et la couverture structurelle du code sont des preuves de vérification nécessaires, mais non suffisantes. Les équipes doivent également démontrer que les exigences logicielles sont liées à des cas de test appropriés et étayées par les résultats d'exécution actuels.
C/C++test CT étend le framework GoogleTest avec un système de reporting de traçabilité des exigences.

  • Les développeurs annotent les cas de test GoogleTest avec des identifiants d'exigences.
  • C/C++test CT traite le rapport d'exécution XML et publie les résultats sur Parasoft DTP.
  • DTP se connecte au système de gestion des exigences de l'organisation afin de corréler les informations relatives aux exigences avec les résultats des tests unitaires.

En intégrant la traçabilité au flux de travail GoogleTest et CI existant, les équipes :

  • Identifier plus tôt les lacunes en matière de vérification.
  • Réduire les efforts de reporting manuel.
  • Fournir des preuves cohérentes pour les examens de conformité.

Combinée à un rapport de couverture de code structurel, cette approche offre une base plus complète et évolutive pour démontrer l'exhaustivité des tests unitaires dans les projets C et C++ critiques pour la sécurité.

Découvrez comment votre équipe peut prouver la couverture de vérification en utilisant C/C++test CT intégré à GoogleTest, le seul logiciel certifié TÜV.

Démonstration de la plateforme