Sur la base de nombreuses sources, je ne crois pas que la définition simple qui vise à tester soit de trouver autant de bugs que possible - nous testons pour nous assurer que cela fonctionne ou non. Par exemple, les objectifs de test du formulaire ISTQB sont les suivants:
Déterminer que (les produits logiciels) satisfont aux exigences spécifiées (je pense que sa vérification)
Démontrer que (les produits logiciels) sont adaptés à l'usage (je pense que c'est la validation)
Détecter les défauts
Je conviens que les tests sont la vérification, la validation et la détection des défauts. Est-ce exact?
testing
theory
verification
Jean V
la source
la source
Réponses:
Je pense que vous avez parfaitement compris.
La vérification et la validation sont des choses différentes et sont en fait assez bien définies. Bien que je n'aime pas beaucoup le document, l'ISO 9000ff est très pertinent pour l'AQ et définit la vérification comme comparant un produit à ses exigences et la validation comme vérifiant s'il correspond réellement aux besoins du client / utilisateur et nous savons tous que cela peut différer .
Les deux peuvent être effectués par le biais de tests. La vérification conduirait à des tests générés par les exigences du formulaire. La validation conduit à des tests effectués par des tests sans référence directe aux exigences. Je pense que cela est souvent appelé test exploratoire. Évidemment, cela doit être fait par des personnes ayant une réelle compréhension des besoins réels des utilisateurs, donc les tests alpha et bêta par de vrais utilisateurs sont des options évidentes.
Sur une base théorique, je suppose que l'on pourrait affirmer que tout ce qui est couvert par les deux premiers n'est pas un bug et donc trouver des bugs comme objectif séparé n'a pas de sens. Mais je pense qu'il y a des choses que vous ne pouvez pas vraiment vérifier ou valider. Par exemple, la sécurité: comment validez-vous ou vérifiez-vous qu'un système logiciel est protégé contre les attaques? Au lieu de cela, vous essayez de trouver des vulnérabilités. Cette recherche ne vérifie ni ne valide rien si elle ne parvient pas à trouver de problèmes, mais elle trouve des bogues si elle réussit.
la source
De Wikipedia: "... En d'autres termes, la validation garantit que le produit répond réellement aux besoins de l' utilisateur et que les spécifications étaient correctes en premier lieu , tandis que la vérification garantit que le produit a été construit conformément aux exigences et aux spécifications de conception. . La validation garantit que "vous avez construit la bonne chose". La vérification garantit que "vous avez construit la bonne chose". La validation confirme que le produit, tel que prévu, remplira son utilisation prévue. "
Vous ne pouvez pas tester les besoins des utilisateurs et vérifier si les spécifications étaient correctes par code. La validation ne se fait donc pas par test.
La vérification suppose que vos exigences et votre conception sont correctes, vous pouvez donc les tester en écrivant du code (testing).
la source
Pour le monde réel, les tests sont la vérification et la validation du logiciel qui répond aux exigences du logiciel (métier / fonctionnel / non fonctionnel). Leur objectif est de déterminer si le logiciel est adapté à l'usage prévu. Tout comportement qui ne répond pas aux exigences de l'application est un défaut - dont la gravité devra être pondérée avant de déterminer si le logiciel est adapté à l'usage prévu.
Les défauts de faible gravité ne sont probablement pas des obstacles à la transmission du logiciel à une utilisation de type production. Une gravité élevée peut nécessiter la production d'un correctif. Dans le monde réel, tous les logiciels présentent des défauts, certains sont des problèmes de codage et d'autres sont dus à des exigences manquantes - qui peuvent ne pas être testées car vous ne pouvez pas tester des exigences inconnues.
la source
Il existe de nombreuses définitions de la vérification et de la validation. De nombreuses personnes utilisent même la balise V&V pour regrouper les deux en une seule activité. L'objectif est de s'assurer que le logiciel fait les bonnes choses et fait les choses correctement. Que ce soit pour vérifier la conformité aux exigences ou pour essayer de trouver des bogues n'est pas essentiel à ce niveau.
Les tests sont l'une des nombreuses techniques de vérification et de validation, et non l'inverse. La révision du code en est une autre, et une vérification formelle, avec des preuves mathématiques encore une autre.
Néanmoins, les tests doivent être effectués dans le but de trouver des bogues, et non dans le but de vérifier la conformité aux exigences.
La principale différence est dans l'esprit du testeur. Il est beaucoup plus facile de construire un cas de test montrant que le logiciel fonctionne comme prévu (vérification de la conformité), que de construire un cas de test montrant que le logiciel échoue (recherche de bogues).
Un grand testeur est passionné par la rupture de logiciels, pas par son exercice en toute sécurité.
la source
Voyons cela d'un point de vue pratique. Pour les tests, vous devez définir des cas de test. En règle générale, vous définissez des cas de test selon les exigences spécifiées, et ils doivent couvrir les cas de «jour heureux» ainsi que les «cas marginaux» - en particulier, ces derniers sont souvent définis avec l'intention de casser le logiciel. Lorsque certains de vos tests échouent, ils présentent des bogues / défauts. Lorsque vous disposez d'un nombre raisonnable de cas de test pour chaque exigence, et que tous les tests réussissent, vous n'avez peut-être pas entièrement prouvé que toutes les exigences sont remplies, mais vous avez amélioré la probabilité de cela, donc effectué une vérification.
Donc, pour cette partie de la question, la recherche de bogues et la vérification peuvent n'être que les deux côtés du même processus:
les tests échouent: défauts trouvés
tests réussis: vérification effectuée (au moins, dans une certaine mesure, si vous fournissez suffisamment et les bons tests)
Concernant la validation: comme l'a souligné @Mert, la validation peut se faire par des tests d'acceptation, mais pas par d'autres formes de tests. Ainsi, les tests en général ne provoquent aucune validation, uniquement lorsqu'ils sont effectués en tant que tests d'acceptation, par certains des utilisateurs potentiels.
la source
Tout dépend de votre définition de «vérification». Par exemple, la vérification formelle n'est généralement pas effectuée par une équipe d'AQ, mais relève plutôt de la responsabilité des développeurs. Presque personne ne procède à une vérification formelle en raison du coût élevé qui y est associé (manque de connaissances et ressources nécessaires).
la source
Les tests de logiciels ne sont pas identiques à QA. Tu as totalement raison. Le test logiciel comprend globalement de nombreuses étapes (fumée, unité, régression, intégration, acceptation par l'utilisateur, etc.) en soi.
Ainsi, garantir que le logiciel fonctionne conformément aux exigences est l'objectif de QA (spécialiste de l'assurance qualité - alias autrefois appelé simplement testeurs il y a des années). Cependant, il ne s'agit pas uniquement de tests . L'assurance qualité s'assure qu'un ensemble approprié de processus pour effectuer le contrôle de qualité du produit en question est en place, ou du moins intégré à la phase de conception du projet.
Ainsi, idéalement, vous vous attendriez à ce que votre AQ vérifie l'application par rapport à un ensemble d'exigences et n'essaye pas simplement de la tester en cassant le logiciel et en trouvant des défauts.
la source