Quelle est la différence entre les tests unitaires et les tests fonctionnels? Un test unitaire peut-il également tester une fonction?
407
Quelle est la différence entre les tests unitaires et les tests fonctionnels? Un test unitaire peut-il également tester une fonction?
Réponses:
Test unitaire - test d'une unité individuelle, telle qu'une méthode (fonction) dans une classe, avec toutes les dépendances simulées.
Test fonctionnel - Test d'intégration AKA, testant une tranche de fonctionnalité dans un système. Cela testera de nombreuses méthodes et peut interagir avec des dépendances telles que des bases de données ou des services Web.
la source
Vous pouvez en savoir plus sur les tests unitaires et les tests fonctionnels
Une analogie bien expliquée dans la vie réelle des tests unitaires et des tests fonctionnels peut être décrite comme suit,
En résumé,
Les tests unitaires sont écrits du point de vue des programmeurs . Ils sont faits pour s'assurer qu'une méthode particulière (ou une unité ) d'une classe effectue un ensemble de tâches spécifiques.
Les tests fonctionnels sont écrits du point de vue de l' utilisateur . Ils s'assurent que le système fonctionne comme les utilisateurs s'y attendent.
la source
Un test unitaire teste une unité de comportement indépendante . Qu'est-ce qu'une unité de comportement? Il s'agit de la plus petite pièce du système qui peut être testée indépendamment à l'unité. (Cette définition est en fait circulaire, OIEau il est vraiment pas une définition du tout , mais il semble fonctionner assez bien dans la pratique, parce que vous pouvez trier-de comprendre intuitivement.)
Un test fonctionnel teste une fonctionnalité indépendante.
Une unité de comportement est très petite: bien que je n'aime absolument pas ce stupide mantra "un test unitaire par méthode", du point de vue de la taille , il est à peu près juste. Une unité de comportement est quelque chose entre une partie d'une méthode et peut-être quelques méthodes. Au plus un objet, mais pas plus d'un.
Un élément de fonctionnalité comprend généralement de nombreuses méthodes et coupe plusieurs objets et souvent plusieurs couches architecturales.
Un test unitaire serait quelque chose comme: lorsque j'appelle la
validate_country_code()
fonction et que je lui passe le code pays,'ZZ'
elle doit retournerfalse
.Un test fonctionnel serait: lorsque je remplis le formulaire d'expédition avec un code de pays de
ZZ
, je devrais être redirigé vers une page d'aide qui me permet de choisir mon code de pays dans un menu.Les tests unitaires sont écrits par les développeurs, pour les développeurs, du point de vue du développeur.
Les tests fonctionnels peuvent être destinés aux utilisateurs, auquel cas ils sont écrits par les développeurs avec les utilisateurs (ou peut-être avec les bons outils et les bons utilisateurs même par les utilisateurs eux-mêmes), pour les utilisateurs, du point de vue de l'utilisateur. Ou ils peuvent être confrontés à des développeurs (par exemple, lorsqu'ils décrivent des fonctionnalités internes dont l'utilisateur ne se soucie pas), auquel cas ils sont écrits par des développeurs, pour des développeurs, mais toujours du point de vue de l'utilisateur.
Dans le premier cas, les tests fonctionnels peuvent également servir de tests d'acceptation et d'encodage exécutable d'exigences fonctionnelles ou de spécification fonctionnelle, dans le second cas, ils peuvent également servir de tests d'intégration.
Les tests unitaires changent fréquemment, les tests fonctionnels ne devraient jamais changer dans une version majeure.
la source
TLDR:
Pour répondre à la question: Le test unitaire est un sous-type de test fonctionnel.
Il existe deux grands groupes: les tests fonctionnels et non fonctionnels . La meilleure illustration (non exhaustive) que j'ai trouvée est celle-ci (source: www.inflectra.com ):
Lorsque les fonctions sont réunies, vous créez un module = une pièce autonome, éventuellement avec une interface utilisateur qui peut être testée (Test de module). Une fois que vous avez au moins deux modules séparés, vous les collez ensemble puis vient:
Ensuite, vous intégrez le 3e module, puis les 4e et 5e dans l'ordre que vous ou votre équipe jugerez bon, et une fois que toutes les pièces du puzzle sont placées ensemble, vient
Si ça va, alors vient
la source
Functional Test
n'est évidemment pas un terme standardisé et a une signification différente pour différentes personnes."Test fonctionnel" ne signifie pas que vous testez une fonction (méthode) dans votre code. Cela signifie, en général, que vous testez la fonctionnalité du système - lorsque je lance
foo file.txt
sur la ligne de commande, les lignesfile.txt
sont peut-être inversées. En revanche, un seul test unitaire couvre généralement un seul cas d'une seule méthode -length("hello")
devrait retourner 5, etlength("hi")
devrait retourner 2.Voir également la position d' IBM sur la ligne entre les tests unitaires et les tests fonctionnels .
la source
La distinction de base, cependant, est que les tests fonctionnels testent l'application de l'extérieur, du point de vue de l'utilisateur. Les tests unitaires testent l'application de l'intérieur, du point de vue du programmeur. Les tests fonctionnels devraient vous aider à créer une application avec les bonnes fonctionnalités et vous garantir de ne jamais la casser accidentellement. Les tests unitaires devraient vous aider à écrire du code propre et sans bogue.
Tiré du livre "Python TDD" de Harry Percival
la source
Selon l'ISTQB, ces deux éléments ne sont pas comparables. Les tests fonctionnels ne sont pas des tests d'intégration.
Le test unitaire est un niveau de test et le test fonctionnel est un type de test.
Fondamentalement:
tandis que
Selon ISTQB, le composant / test unitaire peut être fonctionnel ou non fonctionnel:
Citations des fondements des tests de logiciels - Certification ISTQB
la source
Dans Rails, le dossier unitaire est destiné à contenir des tests pour vos modèles, le dossier fonctionnel est destiné à contenir des tests pour vos contrôleurs, et le dossier d'intégration est destiné à contenir des tests qui impliquent un nombre illimité de contrôleurs interagissant. Les appareils sont un moyen d'organiser les données de test; ils résident dans le dossier fixtures. Le fichier test_helper.rb contient la configuration par défaut pour vos tests. vous pouvez visiter cela .
la source
La façon dont j'y pense est la suivante: un test unitaire établit que le code fait ce que vous vouliez faire (par exemple, vous vouliez ajouter les paramètres a et b, vous les ajoutez en fait et ne les soustrayez pas), les tests fonctionnels testent que tout le code fonctionne ensemble pour obtenir un résultat correct, de sorte que ce que vous vouliez que le code fasse en fait obtient le bon résultat dans le système.
la source
AFAIK, les tests unitaires ne sont PAS des tests fonctionnels. Permettez-moi de vous expliquer avec un petit exemple. Vous souhaitez tester si la fonctionnalité de connexion d'une application Web de messagerie fonctionne ou non, comme le ferait un utilisateur. Pour cela, vos tests fonctionnels doivent être comme ça.
Nos tests fonctionnels devraient-ils vérifier si nous pouvons nous connecter avec des entrées invalides? Par exemple. L'email n'a pas de symbole @, le nom d'utilisateur a plus d'un point (un seul point est autorisé), .com apparaît avant @ etc.? En général, non! Ce genre de test entre dans vos tests unitaires.
Vous pouvez vérifier si des entrées non valides sont rejetées dans les tests unitaires, comme indiqué dans les tests ci-dessous.
Notez que le test fonctionnel 4 fait ce que fait le test unitaire 1. Parfois, les tests fonctionnels peuvent répéter certains (pas tous) des tests effectués par des tests unitaires, pour différentes raisons. Dans notre exemple, nous utilisons le test fonctionnel 4 pour vérifier si un message d'erreur particulier apparaît lors de la saisie d'une entrée non valide. Nous ne voulons pas tester si toutes les mauvaises entrées sont rejetées ou non. C'est le travail des tests unitaires.
la source
TEST D'UNITÉ
Le test unitaire comprend le test de la plus petite unité de code qui sont généralement des fonctions ou des méthodes. Les tests unitaires sont principalement effectués par le développeur d'unité / méthode / fonction, car ils comprennent le cœur d'une fonction. Le principal objectif du développeur est de couvrir le code par des tests unitaires.
Il a une limitation que certaines fonctions ne peuvent pas être testées par des tests unitaires. Même après la réussite de tous les tests unitaires; il ne garantit pas le bon fonctionnement du produit. La même fonction peut être utilisée dans quelques parties du système alors que le test unitaire n'a été écrit que pour une seule utilisation.
TEST FONCTIONEL
Il s'agit d'un type de test Black Box où les tests seront effectués sur les aspects fonctionnels d'un produit sans regarder le code. Les tests fonctionnels sont principalement effectués par un testeur de logiciels dédié. Il comprendra des techniques positives, négatives et BVA utilisant des données non standardisées pour tester la fonctionnalité spécifiée du produit. La couverture des tests est effectuée de manière améliorée par des tests fonctionnels plutôt que par des tests unitaires. Il utilise l'interface graphique de l'application pour les tests, il est donc plus facile de déterminer de quoi exactement une partie spécifique de l'interface est responsable plutôt que de déterminer de quoi un code est responsable.
la source
très simplement on peut dire:
en savoir plus ici .
la source
Test unitaire : - Le test unitaire est particulièrement utilisé pour tester le produit composant par composant spécialement pendant le développement du produit. Les types d'outils Junit et Nunit vous aideront également à tester le produit selon l'unité. ** Plutôt que de résoudre les problèmes après l'intégration, il est toujours confortable de le résoudre tôt dans le développement.
Tests fonctionnels: - En ce qui concerne les tests, il existe deux principaux types de tests: 1. test fonctionnel 2. test non fonctionnel.
Le test non fonctionnel est un test où un testeur testera que le produit exécutera tous les attributs de qualité que le client ne mentionne pas, mais ces attributs de qualité devraient être là. Comme: -Performances, utilisabilité, sécurité, charge, stress, etc. mais dans le test fonctionnel : - Le client est déjà présent avec ses exigences et celles-ci sont correctement documentées, la tâche des testeurs consiste à vérifier que la fonctionnalité de l'application fonctionne conformément au système proposé ou non. À cette fin, le testeur doit tester la fonctionnalité implémentée avec le système proposé.
la source
Les tests unitaires sont généralement effectués par les développeurs. L'objectif de faire de même est de s'assurer que leur code fonctionne correctement. La règle générale est de couvrir tous les chemins dans le code à l'aide de tests unitaires.
Test fonctionnel : c'est une bonne référence. Explication des tests fonctionnels
la source