Quelle est la différence entre les tests et la vérification?

15

Chaque manuel que j'ai vu fait une grande partie du fait que le test et la vérification sont deux concepts différents. Pourtant, aucun d'eux ne fait une distinction claire (ou assez claire pour moi, enfin).

Pour fournir un peu de contexte, je m'intéresse à la vérification des conceptions de matériel numérique en utilisant des langages de conception de matériel (HDL).

J'ai vu des explications qui recourent à une différence "physique" ou "tangible": s'il s'agit d'un appareil fabriqué, alors c'est un test. Est-ce toute l'histoire? Si oui, pourquoi le mot "test" revient-il si souvent dans la vérification (surtout dans la vérification fonctionnelle, on parle de cas de test, bancs de test, DUT (dispositif sous test), tests dirigés, tests aléatoires, etc ...)

VHDL Addict
la source

Réponses:

21

Était ingénieur de vérification de conception ASIC chez Qualcomm. De la manière la plus simple, je peux l'expliquer:

Test: S'assurer qu'un produit fonctionne, après avoir créé le produit (pensez QA).

Vérification: s'assurer qu'un produit fonctionne AVANT de l'avoir créé.

Ils testent tous les deux, mais cette vérification est plus compliquée car vous devez trouver un moyen de tester le produit avant qu'il n'existe et vous devez vous assurer qu'il fonctionne comme prévu et spécifier quand il sortira.

Par exemple, Intel conçoit leur prochain processeur, ils ont les spécifications, ils ont les schémas et les simulations. Ils dépensent 1 milliard USD pour passer par la fabrication et la fabrication. Ensuite, la puce revient et ils la testent et découvrent que cela ne fonctionne pas. Ils ont simplement jeté beaucoup d'argent par la fenêtre.

Ajoutez la vérification. Les ingénieurs de vérification créent des modèles qui simulent le comportement de la puce, ils créent le banc de test qui testera ces modèles particuliers. Ils obtiennent les résultats de ces modèles et les comparent ensuite avec les résultats RTL (modèle du circuit écrit dans un langage de conception matérielle). S'ils correspondent, les choses sont (généralement) OK.

Il existe un certain nombre de méthodologies différentes pour le processus de vérification, la plus populaire étant la méthodologie de vérification universelle (UVM) .

Il y a beaucoup de profondeur dans le domaine et les gens peuvent y passer toute leur carrière.

Une autre information aléatoire: généralement, vous avez besoin de 3 ingénieurs de vérification pour 1 ingénieur de conception. C'est ce que tout le monde dit sur le terrain.

EDIT: Beaucoup de gens pensent que la vérification est un rôle de test, mais ce n'est pas le cas; c'est un rôle de conception en soi car vous devez comprendre toutes les subtilités de votre circuit intégré comme le fait un concepteur, puis vous devez savoir comment concevoir des modèles, des bancs de test et tous les cas de test qui couvriront toutes les fonctionnalités de votre circuit intégré. , ainsi que d'essayer de frapper chaque ligne de code RTL pour toutes les combinaisons de bits possibles. N'oubliez pas qu'un processeur possède aujourd'hui des milliards de transistors en raison du processus de fabrication permettant de plus en plus petit (maintenant 14nm).

De plus, dans les grandes entreprises comme Intel, AMD, Qualcomm, etc., les concepteurs ne conçoivent pas réellement la puce. Habituellement, l'architecte définira toutes les spécifications, disposera les types de pièces qui doivent aller de pair pour obtenir une fonction particulière avec une exigence spécifique (vitesse, résolution, etc.), puis le concepteur codera cela en RTL. Ce n'est en aucun cas une tâche facile, ce n'est tout simplement pas autant la conception que beaucoup d'ingénieurs sortant de l'école le pensent. Ce que tout le monde veut être, c'est un architecte, mais il faut beaucoup d'éducation et d'expérience pour arriver à ce point. Beaucoup d'architectes ont des doctorats, et comme 15-20 ans d'expérience dans le domaine en tant que designer. Ce sont des gens brillants (et parfois fous) qui méritent de faire ce qu'ils font, et ils sont bons dans ce domaine. L'architecte sur la toute première puce sur laquelle j'ai travaillé était un peu maladroit et ne respectait pas vraiment certaines normes sociales, mais il pouvait résoudre tout ce qui vous bloquait concernant la puce, et parfois il le résolvait dans sa tête et vous disait regarder un signal et vous vous dites "comment diable a-t-il fait ça?". Ensuite, vous lui demandez d'expliquer et il le fait et ça va bien au-dessus de votre tête. En fait, cela m'a inspiré à lire des manuels, même si j'ai déjà obtenu mon diplôme.

PGT
la source
+1 Merci pour la dernière remarque, nous aide à voir que le domaine est en effet important (bien que RTL et l'ingénierie de conception semblent plus attrayants pour la plupart des ingénieurs, je pense)
VHDL Addict
Pour être complet, cela vous dérangerait-il d'ajouter ce qu'est un cas de test?
VHDL Addict
J'ai ajouté un petit mot sur ce qu'est réellement la vérification en raison de votre premier commentaire sur le rôle de conception étant plus attrayant; ce sont tous les deux de bons rôles, cela dépend juste de ce que vous aimez. En ce qui concerne un cas de test, un SoC comme le Snapdragon pourrait avoir des dizaines à des centaines de milliers de cas de test, et avec des tests aléatoires, par millions. Pour le dire simplement: vous appliquez un ensemble de bits d'entrée et cela change à travers de nombreux modules, puis vous obtenez des bits de sortie en résultat que vous comparez avec les résultats de votre modèle. Quelque chose d'aussi simple que de tester une image apparaissant sur votre téléphone aurait ...
PGT
un grand nombre de cas de test. Supposons que vous souhaitiez afficher un seul pixel sur votre écran mobile. Ce que quelqu'un en dehors du champ pensera, c'est appliquer 1 bit pour le blanc et 0 pour le noir. Dans le monde mobile actuel, ce pixel peut différer par sa taille, son intensité, sa rotation, son format de couleur (YUV ###, RGB ###, etc.). Et vous testez probablement 1 bit dans un ensemble de bits qui sont appliqués ensemble à l'entrée. Les autres bits peuvent être 0 parce qu'il est noir, ou peut être 1 parce qu'il gère d'autres informations comme la façon de gérer le mode de transmission, CLK, active / désactive, les déclencheurs, des trucs fantaisistes comme ça.
PGT
6

Dans mon livre, la vérification consiste à s'assurer que ce que vous avez conçu «fait le travail» - c'est-à-dire que vous avez un ensemble de choses que le «périphérique» doit effectuer, et la vérification les coche sur la liste.

Tester, cependant, c'est s'assurer que les choses que le "périphérique" fait sont bien faites. Vous disposez d'un ensemble de fonctions et vous testez chaque fonction en vous assurant qu'elle fonctionne correctement.

En résumé, la vérification consiste à vérifier la conception et les tests à vérifier le produit.

Majenko
la source
Je pense que je commence à comprendre ... Pourriez-vous s'il vous plaît fournir quelques exemples de chacun?
VHDL Addict
Comment cela s'inscrit-il dans un plan de vérification , qui spécifie ce qui doit être mis en œuvre et aussi comment savoir que la fonctionnalité est correcte? Il serait peu utile d'implémenter ou de cocher une fonction si elle ne fonctionne pas.
VHDL Addict
@ Majenko - Vous avez donc écrit un livre sur la vérification? Souhaitez-vous partager plus de détails à ce sujet?
Michael Karas
4

Issu d'un contexte de conception ASIC (matériel), il existe trois termes importants: validation , vérification et test . Les réponses précédentes parlent généralement d'un ou deux de ces termes, mais ne contrastent pas clairement les trois comme je le ferais. Voici comment je les comprends:

  • Validation: la spécification (souvent un modèle C) répond-elle aux exigences du marché ou du client
  • Vérification: l'implémentation (RTL, netlist ou GDS2) correspond-elle à la spécification
  • Test: l'appareil fabriqué correspond-il à la mise en œuvre
Winston Smith
la source
Les simulations de netlist et de GDS2 peuvent-elles donner des résultats différents?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功, je suppose que vous posez des questions sur le comportement des grilles par rapport aux transistors. Pour les tensions et formes d'onde numériques normales, je dirais qu'elles donneront les mêmes résultats. Mais il pourrait y avoir des effets "analogiques" non pris en compte par les portes idéalisées, comme les variations de puissance / masse ou le partage de la charge du signal. Si ces effets sont présents, le comportement numérique idéal peut ne pas être vrai.
Winston Smith
1
@CiroSantilli 新疆 改造 中心 法轮功 六四 事件 Oui, ils peuvent donner des résultats sensiblement différents. J'y suis allé, j'ai fait cette erreur.
Elliot Alderson
1

Un test est conçu pour voir si une spécification est remplie. La vérification consiste à voir si l'appareil répond aux entrées de conception, c'est-à-dire à toutes les spécifications. Je suppose qu'il y a beaucoup plus d'interprétations, mais c'est ce que j'ai vu dans les documents d'orientation de la FIA.

Scott Seidman
la source
Je vois, j'ai un peu changé le libellé (de test en test ) pour qu'il soit plus clair que les deux sont des processus. Je suis d'accord avec vous que pour les tests individuels, le mot test est approprié (parfois j'ai l'impression de répéter l'évidence avec ces questions de terminologie ...) :)
VHDL Addict
1

Nous faisons une distinction entre les tests de vérification et les tests de validation. Disons que vous concevez un ventilateur qui refroidit certains équipements. Des tests de vérification sont effectués pour s'assurer que le ventilateur répond à toutes les exigences de conception. Vous pouvez donc tester le flux d'air, les cycles thermiques, les vibrations, etc.

Les tests de validation garantissent que les exigences de conception étaient les bonnes. Les entrées de conception que nous avions pour le ventilateur nous ont-elles réellement donné le ventilateur que nous voulions? Par exemple, vous vous assureriez que le ventilateur refroidit réellement l'équipement tel qu'il est prévu.

Eric
la source
C'est ainsi que les termes sont compris dans les livres sur le génie logiciel que j'ai lus. Validation = assurez-vous que les exigences sont correctes (vérifiez-les avec le client, la réglementation, etc.); Vérification = assurez-vous que le produit est correct (testez-le par rapport aux spécifications)
Wouter van Ooijen
1

ISO9000 parle de vérification et de validation. Dans le contexte de la vérification ISO9000, il s'agit de tester une conception de prototype pour prouver qu'elle répond aux attentes fonctionnelles et de performances. La validation signifie que le test du premier cycle de production répond également aux attentes de conception. Vérifier d'abord, valider plus tard est ma petite façon de me souvenir de l'ordre des choses.

Plusieurs normes logicielles inversent l'ordre de vérification et de validation et cela pourrait vraiment créer de la confusion, alors soyez conscient de cela.

L'essentiel est ... Pourquoi testez-vous quelque chose - est-ce une conception de prototype - si c'est le cas, alors les normes de qualité ont tendance à appeler cette vérification. Si vous testez un cycle de production pour la première fois, les spécialistes du matériel appellent cette validation.

Juste mes expériences personnelles.

Andy aka
la source
0

En lisant ces réponses, je me rends compte maintenant qu'il n'y a pas de définition fixe de la façon dont le "test" diffère de la "vérification" dans l'industrie.

Lorsque nous travaillons avec la conception HW (conception "réelle" HW, comme des trucs sur PCB, pas la programmation VHDL), nous passons par une phase de vérification et de validation, et une phase de test de production (en fait, il suffit de concevoir les tests de production eux-mêmes et de les livrer sur le site de production). - Vérification - (1) vérifier que le prototype / article produit en série satisfait aux exigences matérielles (2) valider les exigences matérielles par rapport aux exigences SYS. - Test de production - test de fumée et cas de test de vérification simplifiés et rapides adaptés pour éliminer les défauts de production de masse sans avoir à passer par l'ensemble du processus de vérification pour chacune des 500000 unités produites par an.

Donc, dans cette entreprise multinationale particulière, «testing» fait référence à des tests de production et rien de plus.

user3038015
la source