Logo Parasoft Rechercher

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

Blog Parasoft

Vérification vs validation dans les logiciels embarqués

By Ricardo Camacho • 15 septembre • 8 min de lecture
15 septembre | 8 min de lecture
By Ricardo Camacho
Vérification vs validation dans les logiciels embarqués

La vérification par rapport à la validation dans les logiciels embarqués est un sujet brûlant dans l'espace de développement logiciel. Bien que les deux termes aient des significations similaires, il existe des différences notables. Consultez cet article pour les apprendre.

Points clés à retenir

  • La vérification et la validation ont des objectifs différents mais complémentaires. La vérification garantit l'exactitude du travail, tandis que la validation démontre que le produit final répond aux exigences.
  • L'automatisation des tests accélère les tâches de vérification telles que la tenue des registres, la documentation, la production de rapports et l'analyse. Dans le cadre du processus de validation, elle réduit la dépendance aux tests manuels.
  • L'IA et les tests en amont permettent aux équipes travaillant sur des projets critiques de gagner en rapidité sans compromettre la qualité. En intégrant les tests automatisés, l'intégration continue, l'analyse assistée par l'IA et la génération de tests dès les premières étapes du développement, vous pouvez combler les lacunes de couverture, améliorer la conformité et produire plus efficacement les preuves nécessaires à la certification de qualité, de sécurité et de sûreté.

Comment l'automatisation des tests accélère la vérification et la validation

Garantir le bon fonctionnement, la qualité, la sûreté et la sécurité des logiciels embarqués représente une part importante des activités logicielles liées aux systèmes embarqués . Les équipes y parviennent généralement grâce aux tests logiciels et tout au long du développement, par le biais de l'analyse, de la traçabilité, de la documentation, etc. Les logiciels critiques pour la sécurité font l'objet de méthodes rigoureuses de vérification et de validation, souvent codifiées dans des normes industrielles. Dès lors, une question se pose : quelle est la différence ?

Quelle est la différence entre la vérification et la validation?

Les définitions officielles de la validation et de la vérification sont définies dans le glossaire standard IEEE de la terminologie du génie logiciel.

Vérification : Processus permettant de déterminer si les produits d'une phase donnée du cycle de développement logiciel satisfont ou non aux exigences établies lors de la phase précédente.

Validation : Processus d'évaluation du logiciel à la fin du processus de développement afin de garantir sa conformité aux exigences logicielles.

Barry Boehm a écrit dans son ouvrage « Verifying and Validating Software Requirements and Design Specifications » des définitions plus succinctes :

Vérification : « Suis-je en train de concevoir le produit correctement ? »

Validation : « Suis-je en train de construire le bon produit ? »

Ces définitions vont au cœur de la différence entre ces deux aspects clés des tests.

L'objectif de la vérification et de la validation

Le but ultime est de créer le bon produit. Plus que cela, il s'agit de s'assurer que le produit a la qualité, la sûreté et la sécurité nécessaires pour s'assurer qu'il reste le bon produit.

La vérification fait partie du processus de développement logiciel qui garantit que le travail est correct. La vérification du logiciel comprend généralement:

  • Conformité aux normes de l'industrie, garantissant que le processus et les artefacts respectent les directives.
  • Examens, procédures pas à pas, inspections.
  • Code statique analyse et autres activités sur les artefacts produits au cours du développement.
  • Application des normes d'architecture, de conception et de codage

La validation démontre que le produit final répond aux exigences. Ces exigences englobent la fonctionnalité ainsi que la fiabilité, les performances, la sûreté et la sécurité.

Pour les produits physiques, la validation inclut les clients qui voient, essaient et testent eux-mêmes le produit. Mais pour les logiciels, la validation consiste en l'exécution du logiciel et la démonstration de son fonctionnement. Cela implique généralement:

  • Exécution de code pour démontrer la fonctionnalité correcte.
  • Exécution dans les environnements cibles.
  • Stress, performances, pénétration et autres tests non fonctionnels.
  • Tests d'acceptation aux clients directement et souvent.
  • Utilisation d'artefacts issus de processus de vérification pour illustrer traçabilité des exigences pour mettre fin aux fonctionnalités, en particulier pour les fonctions de sûreté et de sécurité spécifiques.

Il est important de comprendre les différences entre les objectifs de vérification et de validation, et que le développement logiciel a besoin des deux. Ces activités constituent une part importante des efforts consacrés au développement de logiciels. Les organisations cherchent toujours à les rationaliser sans compromettre la sûreté, la sécurité ou la qualité.

Comment aborder la vérification et la validation

Le modèle en V montre l'approche pour une vérification et une validation plus formelles, que le développement de logiciels critiques pour la sécurité utilise. Il illustre les activités à chaque étape de développement et les relations entre elles.

Validation du modèle V

Le modèle en V du développement logiciel montrant la relation entre chaque phase et la validation déduite à chaque étape du test.

Le modèle V est bon pour illustrer la relation entre les étapes de développement et les étapes de validation. À chaque étape de test, des parties plus complètes du logiciel sont validées par rapport à la phase qui le définit. Cependant, le modèle en V pourrait impliquer une méthode de développement en cascade. Il existe des moyens d'intégrer Agile, DevOps et CI / CD dans ce type de développement de produit.

La vérification, en revanche, garantit que chaque étape est terminée et effectuée correctement:

Vérification du modèle V

Le modèle en V du développement logiciel montrant la relation de vérification entre chaque étape de développement.

La vérification implique des examens, des procédures pas à pas, une analyse, une traçabilité, des tests et une couverture de code, ainsi que d'autres activités pour s'assurer que les équipes élaborent correctement le processus et le produit. À titre d'exemple, l'exécution de tests unitaires est une activité de validation, et assurer la traçabilité, la couverture du code et la progression des tests des tests unitaires est une vérification. Le rôle clé de la vérification est de garantir que les artefacts livrés par le bâtiment de l'étape précédente aux spécifications sont conformes aux directives de l'entreprise et de l'industrie.

Confusion de nom de vérification et de validation

Les organisations sont susceptibles d'utiliser la vérification et la validation de manières légèrement différentes. Il est courant de considérer la validation comme une activité qui se produit vers la fin du développement logiciel, où les équipes présentent le produit au client (ou aux testeurs agissant en tant que leurs mandataires) et démontrent qu'elles satisfont à toutes les exigences. Le développement intégré utilise toujours le concept d'un test d'acceptation en usine (FAT).

Une autre différence notable en matière de philosophie réside dans la norme DO-178B/C et les normes connexes relatives au développement de logiciels avioniques critiques pour la sécurité, pour lesquels la validation n'est pas un concept reconnu. En effet, la validation est considérée comme superflue si la vérification est complète.

« La validation est le processus permettant de déterminer que les exigences logicielles sont correctes et complètes. La norme DO-178C ne fournit pas de directives pour les tests de validation logicielle, car on considère qu'un logiciel dont la conformité est vérifiée ne devrait, en théorie, présenter aucun problème de validation lors des tests d'intégration, sauf si les exigences logicielles sont incomplètes ou incorrectes. » – Certification des logiciels critiques pour la sécurité selon les normes DO-178C et DO-278A, Stephen A. Jacklin, Centre de recherche Ames de la NASA

Bien que je pense que la définition de Boehm corresponde à l'usage le plus courant de ces termes, il est probable que certaines personnes considèrent les tests unitaires et d'intégration logicielle comme des étapes de vérification plutôt que de validation.

Pipelines DevOps hybrides pour les logiciels critiques pour la sécurité

Dans de nombreuses organisations de logiciels embarqués, la mise en œuvre d'un processus entièrement Agile n'est pas compatible avec les restrictions que les normes de sécurité et de sûreté de l'industrie leur imposent. Les artefacts, le code, les résultats des tests et la documentation ont souvent des dates de livraison obligatoires et définies. Les progrès sont basés sur ces livrables (jalons).

Dans certains cas, comme les grands projets militaires et de défense, les livrables d'étape sont intégrés au contrat et aux modalités de paiement. Bien que cela implique une approche en cascade, il n'y a aucune raison de limiter le développement logiciel à cela. Les équipes peuvent utiliser des modèles hybrides pour atteindre des jalons pour les livrables à l'aide de méthodes itératives et Agiles en interne.

Modèle en V Agile Parasoft

Modèle en V Agile Parasoft

La raison de soulever ce point dans une discussion sur la vérification et la validation est que les équipes peuvent tirer parti de nombreux avantages de l'intégration et des tests continus sur des applications complexes critiques pour la sécurité. Une partie de cela consiste à déplacer la vérification et la validation de gauche le plus tôt possible dans le processus de développement. Par exemple, il n'y a aucune raison de retarder les tests unitaires jusqu'à ce que toutes les unités soient codées ou d'attendre pour analyser le code avec une analyse statique jusqu'à ce qu'il soit prêt pour l'intégration.

Prenons l’exemple de la robotique : examinons comment les équipes peuvent commencer à tester le logiciel avant même que le robot complet ne soit disponible.

De même, les développeurs doivent tenter des tests d'intégration dès que des composants testés unitairement sont prêts. La combinaison de l'automatisation et d'une approche itérative continue offre d'énormes avantages pour la validation et la vérification des logiciels. Parasoft dispose d'outils qui traitent des tests, de la qualité et de la sécurité à toutes les phases du SDLC, comme indiqué ci-dessous.

Le modèle en V montre l'approche pour une vérification et une validation plus formelles, que le développement de logiciels critiques pour la sécurité utilise.

Modèle V intégré

Comment les solutions d'automatisation des tests C/C++ de Parasoft s'intègrent à chaque phase du modèle en V du cycle de vie du développement logiciel (SDLC).

Accélérer la vérification

La vérification implique le travail pour s'assurer que chaque phase de développement satisfait aux spécifications de l'étape précédente. En termes de codage et de test des logiciels, la vérification consiste à s'assurer que le code satisfait à la conception du module et, en fin de compte, à la conception de haut niveau et aux exigences supérieures.

De plus, la vérification garantit le respect des exigences du projet. Ces exigences comprennent la conformité aux normes sectorielles, la gestion des risques, la traçabilité et les indicateurs (couverture et conformité du code). Les outils d'automatisation des tests logiciels de Parasoft accélèrent la vérification en automatisant les nombreuses tâches fastidieuses liées à la tenue des registres, à la documentation, à la production de rapports, à l'analyse et à la production de rapports.

  • Utilisez l'analyse statique le plus tôt possible pour garantir la qualité et la sécurité lorsque les développeurs écrivent du code. En outre, l'analyse statique empêche les bogues et vulnérabilités futurs, réduisant ainsi l'impact en aval des bogues manqués lors des inspections et des tests.
  • Automatisation de la conformité aux normes de codage pour réduire l'effort manuel et accélérer les inspections de code.
  • Traçabilité bidirectionnelle pour tous les artefacts pour s'assurer que les exigences ont un code et des tests pour prouver qu'elles sont remplies. Les métriques, les résultats des tests et les résultats des analyses statiques sont attribués aux composants et vice versa.
  • Code et couverture de test pour s'assurer que toutes les exigences sont mises en œuvre et pour s'assurer que la mise en œuvre est testée selon les besoins.
  • Rapports et analyse pour aider à la prise de décision et suivre les progrès. La prise de décision doit être basée sur les données collectées à partir des processus automatisés.
  • Génération de documentation automatisée des analyses et des résultats de test pour soutenir la conformité des processus et des normes.
  • Automatisation de la conformité aux normes pour réduire les frais généraux et la complexité en automatisant les processus les plus répétitifs et les plus fastidieux. De plus, les outils peuvent suivre l'historique du projet et relier les résultats aux exigences, aux composants logiciels, aux tests et aux écarts enregistrés.

Accélérer la validation

La validation prouve qu'un produit répond à ses exigences lorsque l'exécution de code est nécessaire soit de manière isolée pour les tests unitaires, soit à différentes étapes d'intégration. L'automatisation de ces suites de tests est un gain de temps considérable pour le développement de logiciels embarqués.

La validation nécessite une exécution sur le matériel cible. L'optimisation des tests de régression permet une utilisation optimale des ressources disponibles (personnel, matériel, etc.). Les outils d'automatisation des tests de Parasoft accélèrent le processus de validation en réduisant la dépendance aux tests manuels, tout en garantissant la traçabilité et la couverture du code pour l'ensemble des résultats.

  • Automatisation de toutes les suites de tests minimise les tests manuels et réduit le goulot d'étranglement des tests dû à une disponibilité matérielle limitée.
  • Exécution de test basée sur la cible et l'hôte prend en charge différentes techniques de validation selon les besoins.
  • Test de décalage gauche commence dès que les équipes développent du code. Il exploite les frameworks de tests unitaires et génère automatiquement des harnais à tester dès que le code est prêt. La prise en charge du développement piloté par les tests et des tests continus est disponible à mesure que le processus d'une organisation mûrit.
  • Gérez le changement avec une exécution de test intelligente pour se concentrer sur les tests uniquement pour le code qui a changé et les dépendants concernés.
  • Traçabilité bidirectionnelle parmi le code, les tests, les résultats d'analyse statique, les exigences et le support des outils de gestion du cycle de vie des applications (ALM) à l'échelle de l'entreprise.

Comment l'IA accélère la vérification et la validation

L'IA étend l'automatisation des tests en aidant les ingénieurs à exploiter plus efficacement les résultats de vérification et de validation. Plutôt que de remplacer les pratiques d'ingénierie établies, l'IA peut réduire l'effort manuel nécessaire pour analyser les résultats, corriger les problèmes, créer des tests et combler les lacunes de couverture.

Avec Parasoft C / C ++test Les flux de travail assistés par l'IA aident les développeurs à comprendre et à corriger les violations d'analyse statique. L'IA peut exploiter les informations issues de l'analyse, notamment la violation, la règle de codage et la documentation associée, pour fournir un contexte et suggérer des solutions. Ces fonctionnalités peuvent être intégrées aux flux de travail des développeurs et de l'intégration continue, permettant ainsi aux équipes de traiter les problèmes de qualité, de sécurité et de conformité plus tôt dans le processus de développement.
L'IA peut également accélérer les tests.

C/C++test prend en charge la génération de tests unitaires assistée par l'IA afin de faciliter la création de tests et d'étendre la couverture. Pour les équipes utilisant des frameworks de test C et C++ existants tels que Google Test, C/C++test CT peut utiliser des flux de travail assistés par l'IA pour analyser les lacunes de couverture, notamment la couverture MC/DC, et aider à identifier les conditions de test supplémentaires nécessaires pour explorer les chemins manquants.
Ceci est particulièrement précieux dans le développement de systèmes critiques pour la sécurité, où l'objectif n'est pas simplement de générer plus de code ou de tests. Les équipes ont toujours besoin de preuves objectives des éléments suivants :

  • Les exigences ont été vérifiées.
  • Le logiciel a été testé de manière adéquate.
  • La couverture requise a été atteinte.
  • Les résultats peuvent être suivis et documentés.

L'IA peut accélérer le travail, tandis que les techniques de vérification et de validation établies fournissent les preuves nécessaires pour démontrer la qualité, la sûreté, la sécurité et la conformité des logiciels.
Ainsi, l'IA devient une couche d'automatisation supplémentaire dans le modèle en V, aidant les ingénieurs à examiner les problèmes, à créer et à améliorer les tests, à combler les lacunes de couverture et à passer plus rapidement des résultats de vérification aux actions correctives, tout en leur permettant de garder le contrôle.

Résumé

La validation logicielle garantit que les équipes créent le bon logiciel pour répondre aux exigences des clients et du marché. La validation est la preuve que vous répondez aux exigences et que votre produit est fiable, sûr et sécurisé pour protéger vos clients.

La vérification logicielle garantit que les équipes construisent le produit conformément aux processus et aux normes de votre organisation et à ceux requis par le marché. En d'autres termes, la validation prouve que le produit fonctionne, tandis que la vérification garantit que vous traversez tous les t et dotez tous les i.

La validation et la vérification absorbent une part importante des ressources lors du développement de systèmes embarqués. La suite d'automatisation des tests logiciels de Parasoft offre un ensemble d'outils unifiés pour accélérer les tests en permettant aux équipes de les intégrer dès les premières étapes du développement, tout en garantissant la traçabilité, l'archivage des résultats, les détails de couverture du code, la génération de rapports et la documentation de conformité.

Apprenez à satisfaire aux exigences de vérification et de validation des normes de processus de l'industrie.

Démonstration de la plateforme