Différence entre test d'acceptation et test fonctionnel?

148

Quelle est la vraie différence entre les tests d'acceptation et les tests fonctionnels?

Quels sont les points forts ou les objectifs de chacun? Partout où je lis, ils sont similaires de manière ambiguë.

JavaRocky
la source

Réponses:

172

Dans mon monde, nous utilisons les termes comme suit:

test fonctionnel : il s'agit d'une activité de vérification ; avons-nous construit un produit qui fonctionne correctement? Le logiciel répond-il aux exigences de l'entreprise?

Pour ce type de test, nous avons des cas de test qui couvrent tous les scénarios possibles auxquels nous pouvons penser, même s'il est peu probable que ce scénario existe "dans le monde réel". Lors de ce type de test, nous visons une couverture maximale du code. Nous utilisons n'importe quel environnement de test que nous pouvons saisir à ce moment-là, il n'a pas besoin d'être de calibre "production", tant qu'il est utilisable.

tests d'acceptation : il s'agit d'une activité de validation ; avons-nous construit la bonne chose? Est-ce ce dont le client a vraiment besoin?

Cela se fait généralement en coopération avec le client ou par un proxy client interne (propriétaire du produit). Pour ce type de test, nous utilisons des cas de test qui couvrent les scénarios typiques dans lesquels nous prévoyons que le logiciel sera utilisé. Ce test doit être réalisé dans un environnement «de type production», sur du matériel identique ou proche de ce qu'un client utilisera. C'est alors que nous testons nos "ilities":

  • Fiabilité, disponibilité : Validé via un test de résistance.

  • Évolutivité : validée via un test de charge.

  • Convivialité : Validé via une inspection et une démonstration au client. L'interface utilisateur est-elle configurée à leur goût? Avons-nous mis la marque du client aux bons endroits? Avons-nous tous les champs / écrans demandés?

  • Sécurité (aka, Securability, juste pour s'intégrer) : Validé via démonstration. Parfois, un client embauche une société externe pour effectuer un audit de sécurité et / ou des tests d'intrusion.

  • Maintenabilité : validée par une démonstration de la manière dont nous fournirons des mises à jour / correctifs logiciels.

  • Configurabilité : validée par une démonstration de la façon dont le client peut modifier le système en fonction de ses besoins.

Ce n'est en aucun cas une norme, et je ne pense pas qu'il existe une définition «standard», comme le démontrent les réponses contradictoires ici. La chose la plus importante pour votre organisation est que vous définissiez ces termes avec précision et que vous vous y teniez.

Manchette Patrick
la source
plus 1 pour la bonne réponse et "aka, Securability, just to fit in" :). Chose drôle :) L'équipe SO n'a pas pris en compte le fait que dans le monde réel, quelqu'un peut remplacer le signe + par le vrai mot comme je l'ai fait. Donc ils ne permettent pas de taper +1 comme premier mot dans le commentaire mais ils autorisent "plus 1" :). Donc fonctionnellement, ils n'ont pas réussi à tester cela correctement :). Myabe ils ont juste essayé les tests d'acceptation :)
Geo C.
71

J'aime la réponse de Patrick Cuff. Ce que j'aime ajouter, c'est la distinction entre un niveau de test et un type de test qui a été pour moi une révélation.

niveaux de test

Le niveau de test est facile à expliquer à l'aide du modèle en V , un exemple: entrez la description de l'image ici chaque niveau de test a son niveau de développement correspondant . Il a une caractéristique de temps typique, ils sont exécutés à une certaine phase du cycle de vie du développement.

  1. test des composants / unités => vérification de la conception détaillée
  2. tests d'intégration composants / unités => vérification de la conception globale
  3. test du système => vérification de la configuration système requise
  4. test d'intégration système => vérification de la configuration système requise
  5. test d'acceptation => validation des besoins des utilisateurs

types de test

Un type de test est une caractéristique, il se concentre sur un objectif de test spécifique. Les types de test mettent l'accent sur vos aspects de qualité, également appelés aspects techniques ou non fonctionnels. Les types de test peuvent être exécutés à n'importe quel niveau de test . J'aime utiliser comme types de test les caractéristiques de qualité mentionnées dans l'ISO / CEI 25010: 2011.

  1. test fonctionel
  2. test de fiabilité
  3. Test de performance
  4. test d'opérabilité
  5. tests de sécurité
  6. test de compatibilité
  7. test de maintenabilité
  8. test de transférabilité

Pour le rendre complet. Il y a aussi quelque chose appelé test de régression . Il s'agit d'une classification supplémentaire à côté du niveau de test et du type de test . Un test de régression est un test que vous souhaitez répéter car il touche à quelque chose de critique dans votre produit. Il s'agit en fait d'un sous-ensemble de tests que vous avez définis pour chaque niveau de test . S'il y a une petite correction de bogue dans votre produit, on n'a pas toujours le temps de répéter tous les tests. Les tests de régression sont une réponse à cela.

Nick V
la source
2
C'est la meilleure réponse à cette question et "la distinction entre un niveau de test et un type de test" est quelque chose que la plupart des réponses manquent ici et vous avez raison, c'est "
révélateur
23

La différence est entre tester le problème et la solution. Le logiciel est une solution à un problème, les deux peuvent être testés.

Le test fonctionnel confirme que le logiciel exécute une fonction dans les limites de la façon dont vous avez résolu le problème. Cela fait partie intégrante du développement de logiciels, comparable aux tests effectués sur un produit fabriqué en série avant qu'il ne quitte l'usine. Un test fonctionnel vérifie que le produit fonctionne réellement comme vous (le développeur) le pensez.

Les tests d'acceptation vérifient que le produit résout réellement le problème qu'il a été conçu pour résoudre. Cela peut être mieux fait par l'utilisateur (client), par exemple en effectuant ses tâches auxquelles le logiciel assiste. Si le logiciel réussit ce test du monde réel, il est accepté pour remplacer la solution précédente. Ce test d'acceptation ne peut parfois être effectué correctement qu'en production, surtout si vous avez des clients anonymes (par exemple un site Web). Ainsi, une nouvelle fonctionnalité ne sera acceptée qu'après des jours ou des semaines d'utilisation.

Test fonctionnel - testez le produit en vérifiant qu'il possède les qualités que vous avez conçues ou construites (fonctions, vitesse, erreurs, cohérence, etc.)

Test d'acceptation - tester le produit dans son contexte, cela nécessite (une simulation de) l'interaction humaine, le tester a l'effet souhaité sur le (s) problème (s) d'origine.

Machiel
la source
9

La réponse est l'opinion. J'ai travaillé dans de nombreux projets et en tant que testmanager et issuemanager et tous les différents rôles et les descriptions dans divers livres diffèrent donc voici ma variation:

tests fonctionnels: prenez les exigences de l'entreprise et testez-les toutes correctement et minutieusement d'un point de vue fonctionnel.

test d'acceptation: le client «payant» fait les tests qu'il aime faire pour pouvoir accepter le produit livré. Cela dépend du client, mais les tests ne sont généralement pas aussi approfondis que les tests fonctionnels, surtout s'il s'agit d'un projet interne, car les parties prenantes examinent et font confiance aux résultats des tests effectués lors des phases de test précédentes.

Comme je l'ai dit, c'est mon point de vue et mon expérience. Le test fonctionnel est systématique et le test d'acceptation est plutôt le service commercial qui teste la chose.

hol
la source
J'aime cette réponse :) C'est à peu près la même chose.
anbanm
1
UAT est oui finalement fait par le client «payant». Cependant, il est la plupart du temps fait pour la première fois par une personne de QA qui est "bonne" avec les tests et "essayant" de casser le système et de chercher toutes les "petites" choses AVANT que le client "payant" ne mette la main dessus. L'automatisation au sélénium pour répéter des choses fastidieuses peut également être utilisée avec de vrais tests UAT par un testeur QA, mais ne jamais répéter de vrais tests pour tester toutes les fonctionnalités attendues avec tous les navigateurs attendus. UAT est assez explicite. Je pense que la plupart des descriptions de tests fonctionnels semblent être des robots et des dictionnaires.
Tom Stickel
Comme je l'ai dit, voici mon expérience de la façon dont les termes sont interprétés.
Hol
C'est bon. Quand j'ai remarqué cette définition vague ... j'ai juste eu à commenter "les tests fonctionnels: prenez les exigences de l'entreprise et testez tout cela correctement et minutieusement d'un point de vue fonctionnel."
Tom Stickel
Haha, oui, maintenant je te comprends. D'accord, c'est quelque chose que vous pourriez écrire un livre entier à ce sujet. Je ne voulais pas trop m'étendre là-dessus au moment où je l'ai écrit.
hol
8
  1. Public. Les tests fonctionnels visent à garantir aux membres de l'équipe qui produit le logiciel qu'il fait ce qu'ils attendent. Les tests d'acceptation visent à garantir au consommateur qu'il répond à ses besoins.

  2. Portée. Les tests fonctionnels testent uniquement la fonctionnalité d'un composant à la fois. Les tests d'acceptation couvrent tout aspect du produit qui compte suffisamment pour le consommateur pour être testé avant d'accepter le logiciel (c'est-à-dire tout ce qui vaut le temps ou l'argent qu'il faudra pour le tester afin de déterminer son acceptabilité).

Le logiciel peut passer les tests fonctionnels, les tests d'intégration et les tests système; seulement pour échouer les tests d'acceptation lorsque le client découvre que les fonctionnalités ne répondent tout simplement pas à ses besoins. Cela impliquerait généralement que quelqu'un a foiré les spécifications. Le logiciel peut également échouer certains tests fonctionnels, mais réussir les tests d'acceptation parce que le client est prêt à gérer certains bogues fonctionnels tant que le logiciel fait les choses essentielles dont il a besoin de manière acceptable (le logiciel bêta sera souvent accepté par un sous-ensemble d'utilisateurs avant cela. est complètement fonctionnel).

Ethel Evans
la source
2

Test fonctionnel: application de données de test dérivées des exigences fonctionnelles spécifiées sans égard à la structure finale du programme. Également connu sous le nom de test de boîte noire.

Test d'acceptation: test formel effectué pour déterminer si un système satisfait ou non à ses critères d'acceptation - permet à un utilisateur final de déterminer s'il accepte ou non le système.

Prashant Vadher
la source
1

À mon avis, la principale différence est de savoir qui dit si les tests réussissent ou échouent.

Un test fonctionnel vérifie que le système répond aux exigences prédéfinies. Il est réalisé et contrôlé par les personnes responsables du développement du système.

Un test d'acceptation est signé par les utilisateurs. Idéalement, les utilisateurs diront ce qu'ils veulent tester, mais dans la pratique, il est probable que ce soit le coucher du soleil d'un test fonctionnel car les utilisateurs n'investissent pas suffisamment de temps. Notez que ce point de vue est celui des utilisateurs professionnels que je traite avec d'autres groupes d'utilisateurs, par exemple l'aviation et d'autres facteurs critiques pour la sécurité pourraient bien ne pas avoir cette différence,

mmmmmm
la source
Les tests d'acceptation détermineront si un système satisfait ou non aux critères d'acceptation d'un cas d'utilisation donné ou de tous les cas d'utilisation imaginables. Elle est généralement effectuée par un utilisateur expert pour déterminer si le système est acceptable ou non. En aéronautique, un pilote d'essai est un aviateur qui teste de nouveaux aéronefs en effectuant des manœuvres spécifiques. Les meilleurs pilotes, navigateurs et ingénieurs effectuent des tests en vol et à la fin des missions de test, ils fourniront des données d'évaluation et de certification.
jjpcondor
1

Test d'acceptation :

... est un test en boîte noire effectué sur un système (par exemple, un logiciel, de nombreuses pièces mécaniques fabriquées ou des lots de produits chimiques) avant sa livraison.

Bien que cela continue à dire:

Il est également connu sous le nom de test fonctionnel, de test boîte noire, d'acceptation de version, de test QA, de test d'application, de test de confiance, de test final, de test de validation ou de test d'acceptation en usine.

avec une marque "citation nécessaire".

Test fonctionnel (qui redirige en fait vers System Testing):

menée sur un système complet et intégré pour évaluer la conformité du système aux exigences spécifiées. Les tests du système entrent dans le cadre des tests de la boîte noire et, en tant que tels, ne devraient exiger aucune connaissance de la conception interne du code ou de la logique.

Donc, d'après cette définition, ils sont à peu près la même chose.

D'après mon expérience, les tests d'acceptation sont généralement un sous-ensemble des tests fonctionnels et sont utilisés dans le processus d'approbation formel par le client, tandis que les tests fonctionnels / système seront ceux exécutés par le développeur / département QA.

ChrisF
la source
0

La relation entre les deux: Le test d'acceptation comprend généralement des tests fonctionnels, mais il peut inclure des tests supplémentaires. Par exemple, vérifier les exigences en matière d'étiquetage / de documentation.

Le test fonctionnel est lorsque le produit testé est placé dans un environnement de test qui peut produire une variété de stimulation (dans le cadre du test) ce que l'environnement cible produit généralement ou même au-delà, tout en examinant la réponse de l'appareil testé.

Pour un produit physique (et non un logiciel), il existe deux types principaux de tests d'acceptation : les tests de conception et les tests de fabrication. Les tests de conception utilisent généralement un grand nombre d'échantillons de produits, qui ont réussi les tests de fabrication. Différents consommateurs peuvent tester la conception de différentes manières.

Les tests d'acceptation sont appelés vérification lorsque la conception est testée par rapport aux spécifications du produit, et les tests d'acceptation sont appelés validation, lorsque le produit est placé dans l'environnement réel du consommateur.

ali65
la source
0

Les tests d'acceptation ne sont que des tests effectués par le client et incluent d' autres types de tests:

  • Test fonctionnel: "ce bouton ne fonctionne pas"
  • Test non fonctionnel: "cette page fonctionne mais est trop lente"

Pour les tests fonctionnels vs les tests non fonctionnels (leurs sous-types) - voir ma réponse à cette question SO .

Andrejs
la source
-1

Ce sont les mêmes choses.

Les tests d'acceptation sont effectués sur le système terminé de manière aussi identique que possible à l'environnement réel de production / déploiement avant que le système ne soit déployé ou livré.

Vous pouvez effectuer des tests d'acceptation de manière automatisée ou manuellement.

jmz
la source
1
Alors que l'automatisation avec Selenium et Watin (ou Watir), etc. sont une première ligne de défense très précieuse, rien ne vaut une personne qualifiée chargée de l'assurance qualité qui est déterminée à «casser le système. L'automatisation est excellente, mais avec le développement moderne d'AJAX et du framework javascript et le changement de sortie sur une page, pour tout automatiser est un cauchemar de mise à jour de script. Ils ne sont PAS la même chose
Tom Stickel