Découvrez GoogleTest certifié TÜV avec Agentic AI pour les tests C/C++ !
Plus de détails »
Aller à la section
Blog Parasoft
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é.
Aller à la section
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.
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.
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.
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.
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.
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.
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.
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 :
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.
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 :
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.
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.
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.
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.
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é.
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.
En intégrant la traçabilité au flux de travail GoogleTest et CI existant, les équipes :
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.