Logo Parasoft

Choisir le bon framework de tests unitaires pour les logiciels critiques en matière de sécurité et de conformité : GoogleTest est-il une option ?

By Miroslaw Zielinski 30 octobre 2025 6 min de lecture

Découvrez comment choisir un framework de tests unitaires adapté aux secteurs réglementés et évaluez GoogleTest dans ce contexte. Nous montrerons comment la version de GoogleTest certifiée TÜV SÜD (disponible en janvier 2026), proposée par C/C++test CT, comblera les lacunes en simplifiant la certification et en réduisant les coûts de mise en conformité.

Choisir le bon framework de tests unitaires pour les logiciels critiques en matière de sécurité et de conformité : GoogleTest est-il une option ?

By Miroslaw Zielinski 30 octobre 2025 6 min de lecture

Découvrez comment choisir un framework de tests unitaires adapté aux secteurs réglementés et évaluez GoogleTest dans ce contexte. Nous montrerons comment la version de GoogleTest certifiée TÜV SÜD (disponible en janvier 2026), proposée par C/C++test CT, comblera les lacunes en simplifiant la certification et en réduisant les coûts de mise en conformité.

Le choix d'un framework de tests unitaires adapté est crucial pour les équipes développant des logiciels C et C++ critiques pour la sécurité. Des normes telles que l'ISO 26262, la DO-178C et la CEI 61508 exigent la traçabilité des exigences, la couverture du code structurel et la qualification des outils afin de garantir la conformité.

Traditionnellement, les organisations s'appuyaient sur des frameworks propriétaires conçus pour répondre à ces besoins. Aujourd'hui, de nombreuses équipes adoptent des solutions open source telles que Google Test pour diverses raisons qui permettent notamment de réduire les coûts de formation et d'accélérer l'adoption :

  • Souplesse
  • Intégration transparente avec Bazel et CMake
  • Familiarité généralisée des développeurs

Malgré cela, GoogleTest, à lui seul, ne dispose pas de toutes les fonctionnalités essentielles de conformité. Pour répondre aux exigences critiques en matière de sécurité, ses fonctionnalités et sa documentation doivent être étendues.

Critères clés pour les frameworks de tests unitaires dans les environnements critiques pour la sécurité

Choisir un framework de tests unitaires pour le développement de systèmes critiques pour la sécurité est un exercice d'équilibre entre conformité, productivité et coût.

Les outils open source sont économiques, mais l'absence de support certifié et de kits de qualification engendre des risques dans les environnements réglementés. Imaginez rencontrer un problème lié à un outil juste avant le lancement de votre produit, sans aucun fournisseur pour vous aider.

En revanche, les frameworks propriétaires offrent des fonctionnalités de conformité et bénéficient du support du fournisseur. Cependant, leurs formats et conventions rigides peuvent ralentir le développement.
Certains outils commerciaux obligent les utilisateurs à créer des tests avec des interfaces graphiques, ce que les développeurs détestent vraiment.

Pour faire le bon choix, les équipes doivent évaluer la conformité réglementaire, la facilité de création des tests, l'effort d'intégration et la maintenabilité à long terme. Les critères suivants mettent en lumière les éléments à prendre en compte lors de la sélection d'un framework.

1. Exigences relatives aux normes de sécurité pour les essais au niveau de l'unité

Les normes telles que l'ISO 26262 exigent que les outils de test unitaire aillent au-delà de la simple exécution des tests. Ils doivent fournir des preuves, une traçabilité et des données de couverture démontrant que le système répond aux objectifs de sécurité.

Un framework de tests unitaires conforme doit prendre en charge :

  • Tests basés sur les exigences. Prise en charge de la liaison de chaque test à des exigences spécifiques.
  • Rapports de traçabilité. Rapports établissant la corrélation entre les exigences, la mise en œuvre et les résultats des tests, à titre de preuve de conformité.
  • Métriques de couverture structurelle. Rapports documentant la couverture du code exécuté, y compris la couverture des instructions, des branches et, dans de nombreux cas, la couverture MC/DC.
  • Injection de défauts et tests de robustesse. Valider la manière dont le système réagit aux erreurs inattendues et s'assurer qu'il tombe en panne de manière sécurisée.

Les frameworks de tests unitaires open source classiques comme GoogleTest ne proposent pas les fonctionnalités mentionnées ci-dessus, à l'exception des tests d'injection de fautes, qui peuvent être mis en œuvre à l'aide de frameworks de simulation.

La couverture de code, les rapports de traçabilité et les fonctionnalités connexes doivent être ajoutés à l'aide d'outils externes.

La qualification des outils est un autre sujet important. Toutes les normes de sécurité exigent une qualification des outils. C'est un processus long et fastidieux si l'on doit le réaliser soi-même pour un outil open source.

De nombreux outils commerciaux sont pré-certifiés, ce qui simplifie le processus de qualification. Assurez-vous d'avoir une vision complète du soutien à la qualification offert par les référentiels candidats.

2. Facilité de développement et intégration des pipelines

Dans les projets critiques pour la sécurité, le framework de tests unitaires doit s'intégrer parfaitement aux systèmes de compilation modernes et aux pipelines CI/CD. Les projets C++ complexes s'appuient souvent sur des compilations distribuées avec des outils comme Bazel. Un framework qui s'intègre naturellement à ces environnements réduit les efforts de maintenance et accélère les cycles de retour d'information.

Les frameworks open source comme GoogleTest sont particulièrement performants dans ce domaine. Ils utilisent une approche légère et axée sur le code qui évite les formats propriétaires, facilitant ainsi leur intégration aux flux de travail d'automatisation de la compilation et de l'intégration continue existants.

Cette flexibilité est l'une des raisons pour lesquelles GoogleTest est devenu la norme de facto dans le développement C++ à grande échelle, notamment pour les projets ADAS et de conduite autonome.

De nombreux frameworks propriétaires/commerciaux sont difficiles à intégrer aux systèmes complexes. Ils stockent les ressources et configurations de test dans divers fichiers et imposent souvent leur propre méthode de génération du binaire de test. Par conséquent, si vous choisissez un framework pour un projet vaste et complexe, assurez-vous de bien comprendre le coût de son intégration aux processus de compilation et d'intégration continue.

3. Coût de la formation des développeurs

Les coûts de formation constituent un facteur déterminant dans le choix d'un framework de tests unitaires. Les solutions propriétaires exigent souvent des équipes qu'elles maîtrisent des API ou des formats spécifiques au fournisseur, ce qui peut ralentir l'adoption et augmenter les coûts d'intégration. Ce facteur est particulièrement important pour les grandes organisations.

À l'inverse, GoogleTest exploite les constructions standard du C++. Comme il est déjà familier à de nombreux développeurs, notamment dans les organisations disposant d'importantes équipes C++, l'utilisation de GoogleTest :

  • Réduit la courbe d'apprentissage.
  • Réduit le temps de montée en puissance.
  • Réduit les dépenses globales de formation.

De ce fait, cela crée un avantage significatif dans les projets commerciaux qui surveillent de près la productivité et la rentabilité.

4. Coût de création et de maintenance des cas de test

Le coût à long terme des tests unitaires est souvent moins lié aux licences des outils qu'à l'effort requis pour créer et maintenir les cas de test.

Les frameworks propriétaires peuvent proposer une génération de tests automatisée, mais leurs API rigides et axées sur les données peuvent rendre l'écriture et la mise à jour des tests pour les bases de code C++ modernes fastidieuses.

À l'inverse, GoogleTest utilise une API C++ native et épurée, simplifiant la création de scénarios de test complexes et leur maintenance dans le temps. Cela réduit la charge de travail et permet aux équipes de suivre l'évolution du code source, un facteur essentiel pour les projets critiques où les tests doivent évoluer au même rythme que les exigences et les modifications de conception.

5. Coût de la migration des cas de test existants

Pour les équipes disposant d'une base importante de tests unitaires existants, le coût de la migration peut être considérable lors d'un changement de framework. Les outils propriétaires s'appuient souvent sur des formats ou des langages de script spécifiques au fournisseur, ce qui rend la réutilisation des cas de test existants difficile et coûteuse.

Si votre projet comporte déjà un nombre important de cas de test Google, cela peut constituer un facteur de décision important. Adapter Google Test aux exigences des normes de sécurité peut s'avérer plus rentable que d'introduire un nouveau framework propriétaire et de migrer tous les tests Google existants vers ce nouveau framework.

Si vous avez des cas de test préexistants créés avec un framework propriétaire/commercial et que vous envisagez de changer d'outils, la migration des tests vers un framework utilisant le C/C++ pur comme format, comme GoogleTest, peut s'avérer nettement moins coûteuse que la migration des tests entre deux frameworks propriétaires différents.

Évaluation de GoogleTest par rapport aux critères de sélection

Le tableau ci-dessous résume les considérations ci-dessus, en comparant GoogleTest à un framework de test unitaire commercial/propriétaire typique.

CritèreGoogleTestCadre commercial typique
Rapports de tests et de traçabilité basés sur les exigencesNon pris en charge, nécessite des outils externesEntièrement pris en charge, y compris les rapports de traçabilité
Assistance à la couverture de codeNon inclus, nécessite des outils externesConçu et certifié pour une utilisation en toute sécurité
Test d'injection de défautsPossible via GoogleMockEntièrement pris en charge et intégré
qualification/certification des outilsIndisponibleFourni, souvent avec une certification
Intégration avec les systèmes de construction et les pipelines CI/CDSimple et bien pris en chargeNettement plus complexe et plus long à mettre en œuvre
Coût de création et de maintenance des cas de testFaiblePlus élevé, notamment pour le code C++ complexe ou utilisant beaucoup de modèles
génération automatique des cas de testIndisponibleGénéralement, cela s'effectue en générant des combinaisons d'entrées/sorties de base.
Coût et effort liés à la migration des tests existantsFaible Haute

À première vue, la comparaison semble favorable aux frameworks commerciaux et propriétaires, notamment en raison de leur prise en charge complète des exigences critiques de sécurité. En effet, pour les projets C et les systèmes C++ plus petits et moins complexes, ces outils offrent souvent une solution complète et conforme prête à l'emploi.

Cependant, pour les projets C++ de grande envergure et complexes, la situation est tout à fait différente.

Les difficultés liées à l'intégration des frameworks commerciaux actuellement disponibles dans les systèmes de construction modernes, à leur automatisation dans les pipelines CI/CD et à la gestion du coût plus élevé du développement des tests peuvent rapidement surpasser leurs avantages.

Dans de nombreux cas de ce genre, il est plus pratique d'étendre GoogleTest avec les fonctionnalités manquantes et de procéder à la qualification des outils au besoin, plutôt que de supporter les coûts permanents d'un framework propriétaire avec des formats de test non optimaux et une flexibilité limitée pour les développeurs.

Cette approche est devenue encore plus viable avec l'émergence de Test CT Parasoft C/C++, qui est un produit conçu pour compléter GoogleTest en ajoutant des fonctionnalités manquantes et en simplifiant le processus de qualification des outils pour les normes de sécurité.

Comment C/C++test CT peut-il vous aider ?

C/C++test CT étend les fonctionnalités de GoogleTest, le transformant en une solution de test complète et sécurisée pour le développement C++ moderne, avec :

  • Rapports de traçabilité des exigences robustes
  • Surveillance complète de la couverture du code, y compris les indicateurs MC/DC
  • Génération de tests pilotée par l'IA pour accélérer et améliorer la création de tests

Avec la version 2025.2, C/C++test CT est fourni avec une édition certifiée de GoogleTest. L'ensemble de la chaîne d'outils, y compris GoogleTest, est certifié TÜV pour une utilisation dans le développement de systèmes critiques pour la sécurité, conformément aux normes ISO 26262, IEC 61508, IEC 62304 et IEC 50716.

Cette certification supprime la nécessité d'une qualification séparée des outils, simplifiant considérablement la conformité et réduisant les frais administratifs.

Le tableau ci-dessous illustre comment C/C++test CT avec GoogleTest offre une alternative complète et moderne aux frameworks commerciaux traditionnels pour les logiciels C++ critiques pour la sécurité.

CritèreGoogleTest avec C/C++test CTCadre commercial typique
Rapports de tests et de traçabilité basés sur les exigencesPrise en charge complète, y compris les rapports de traçabilité et la propagation des résultats de tests vers RMSEntièrement pris en charge, y compris les rapports de traçabilité
Assistance à la couverture de codeEntièrement pris en chargeConçu et certifié pour une utilisation en toute sécurité
Test d'injection de défautsPossible via GoogleMockEntièrement pris en charge et intégré
qualification/certification des outilsFourni avec la certification TÜVFourni, souvent avec une certification
Intégration avec les systèmes de construction et les pipelines CI/CDSimple et bien soutenuNettement plus complexe et plus long à mettre en œuvre
Coût de création et de maintenance des cas de testFaiblePlus élevé, notamment pour le code C++ complexe ou utilisant beaucoup de modèles
génération automatique des cas de testCombler les lacunes de couverture grâce à l'IA Généralement, cela s'effectue en générant des combinaisons d'entrées/sorties de base.
Coût et effort liés à la migration des tests existantsFaible Haute

En résumé

Pour les équipes développant des applications C++ modernes et de grande envergure, C/C++test CT avec GoogleTest offre un équilibre idéal entre productivité des développeurs, conformité aux normes de sécurité et simplicité de la chaîne d'outils. Il comble le fossé entre la flexibilité des frameworks open source et la rigueur des solutions commerciales certifiées, proposant ainsi une voie à la fois techniquement optimale et pratiquement efficace.

En résumé, avec C/C++test CT, vous n'avez plus à choisir entre agilité de développement et conformité aux normes de sécurité. Vous bénéficiez des deux.

Accélérez vos tests C/C++ critiques pour la sécurité grâce à un framework de tests unitaires GoogleTest intégré et certifié dès aujourd'hui !

Demander une démo personnalisée