Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

Vérification vs validation dans les logiciels embarqués

Par Ricardo Camacho

22 octobre 2020

7  min lire

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

Assurer le bon fonctionnement, la qualité, la sûreté et la sécurité des logiciels embarqués constitue une part importante des activités logicielles des systèmes embarqués. En grande partie, les équipes accomplissent cela grâce à des tests logiciels et tout au long du développement via l'analyse, la traçabilité, la documentation, etc. Les logiciels critiques pour la sécurité ont des approches rigoureuses de vérification et de validation qui sont souvent codifiées dans les normes de l'industrie. Cela soulève la question: 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 consistant à 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 des logiciels à la fin du processus de développement logiciel pour garantir la conformité aux exigences logicielles.

Barry Boehm a écrit dans Vérification et validation des exigences logicielles et des spécifications de conception définitions plus succinctes:

Vérification: «Est-ce que je conçois le produit correctement?»

Validation: «Suis-je en train de créer 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 de philosophie est DO-178B / C et les normes connexes pour le développement de logiciels d'avionique critiques pour la sécurité pour lesquels la validation n'est pas un terme connu. En fait, la validation est considérée comme redondante si la vérification est terminée.

«La validation est le processus consistant à déterminer que les exigences logicielles sont correctes et complètes. DO-178C ne fournit pas de conseils pour les tests de validation logicielle car il est estimé que le logiciel dont la validité est vérifiée ne devrait, en théorie, pas avoir de problèmes de validation lors des tests d'intégration logicielle, à moins que les exigences logicielles ne soient incomplètes ou incorrectes. - Certification des logiciels critiques pour la sécurité sous DO-178C et DO-278A, Stephen A. Jacklin, NASA Ames Research Center

Bien que je pense La définition de Boehm correspond à l'usage le plus courant des termes, il y a probablement des gens qui pourraient considérer l'unité et tests d'intégration de logiciels 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.

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 Parasoft V: vérification vs validation
Comment les produits Parasoft s'intègrent dans chaque phase du modèle en V du 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 au niveau du projet. Ces exigences incluent la conformité aux normes de l'industrie, la gestion des risques, la traçabilité et les mesures (couverture du code et conformité). Outils d'automatisation des tests logiciels de Parasoft Accélérez la vérification en automatisant les nombreux aspects fastidieux de la tenue de registres, de la documentation, des rapports, de l'analyse et des 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 d'utiliser au mieux les ressources, les personnes et le matériel disponibles. Outils d'automatisation des tests Parasoft Accélérez la validation en réduisant la dépendance aux tests manuels - en maintenant la traçabilité et la couverture du code à partir de tous les 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.

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 consomment une grande partie des ressources du développement de produits intégrés. Suite d'automatisation des tests logiciels de Parasoft fournit un ensemble unifié d'outils pour accélérer les tests en aidant les équipes à déplacer les tests vers les premières étapes du développement tout en maintenant la traçabilité, la tenue des registres des résultats des tests, les détails de la couverture du code, la génération de rapports et la documentation de conformité.

Webinaire: Automatisez les tests essentiels pour vérifier la validation des exigences Polarion

Par Ricardo Camacho

Responsable marketing produit technique pour les solutions de test embarquées de Parasoft. Il possède une expertise dans le SDLC et l'automatisation des tests d'applications embarquées en temps réel, critiques pour la sûreté et la sécurité, et la conformité des logiciels aux normes de l'industrie.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.