Essais unitaires et essais fonctionnels
Quelle est la différence entre les essais unitaires et les essais fonctionnels? Un test unitaire peut-il également tester une fonction?
13 réponses
test unitaire-tester une unité individuelle, telle qu'une méthode (fonction) dans une classe, avec toutes les dépendances stockées.
Test Fonctionnel - AKA Test d'Intégration, test d'une tranche de la fonctionnalité dans un système. Cela permettra de tester de nombreuses méthodes et peut interagir avec des dépendances comme des bases de données ou des Services Web.
les tests unitaires indiquent à un développeur que le code fait les choses correctement; les tests fonctionnels indiquent à un développeur que le code fait les bonnes choses .
Vous pouvez en lire plus à "151970920 de Tests Unitaires, contre les Tests Fonctionnels
une analogie bien expliquée de la vie réelle des essais unitaires et des essais fonctionnels peut être décrite comme suit,
Plusieurs fois, le développement d'un système est assimilé à la construction d'une maison. Bien que cette analogie ne soit pas tout à fait correcte, Nous pouvons l'étendre dans le but de comprendre la différence entre les tests unitaires et fonctionnels.
"151910920 de tests Unitaires, est analogue à un inspecteur en bâtiment de la visite d'une maison du site de construction. Il est centré sur les différents systèmes internes de la maison, la fondation, charpente, électricité, plomberie, et ainsi de suite. Il assure (essais) que les parties de la maison fonctionneront correctement et en toute sécurité, c'est-à-dire qu'elles seront conformes au Code du bâtiment.dans ce scénario, les tests fonctionnels sont analogues à ceux du propriétaire qui visite le même site de construction. Il suppose que les systèmes internes se comporteront de manière appropriée, que l'Inspecteur du bâtiment exécute sa tâche. Le propriétaire se concentre sur ce que sera la vie dans cette maison. Il s'inquiète de l'apparence de la maison, est-ce que les différentes pièces confortable taille, ne la maison ajustement aux besoins de la famille, sont les fenêtres dans un bon endroit pour attraper le soleil du matin.
le propriétaire effectue des tests fonctionnels sur la maison. Il a la vue de l'utilisateur.
l'Inspecteur du bâtiment effectue des essais unitaires sur la maison. Il a le générateur de point de vue.
en résumé,
les tests unitaires sont écrits à partir d'un programmeurs point de vue. Ils sont faits pour s'assurer qu'une méthode particulière (ou un unité ) d'une classe exécute un ensemble de tâches spécifiques.
les Tests fonctionnels sont écrits du point de vue de l'utilisateur . Ils s'assurer que le système est fonctionnement que les utilisateurs attendent.
-
Une unité de test tests un unité indépendante de comportement . Qu'est ce qu'une unité de comportement? C'est la plus petite pièce du système qui peut être testée indépendamment. (Cette définition est en fait circulaire, en fait ce N'est vraiment pas une définition du tout , mais il semble fonctionner assez bien dans la pratique, parce que vous pouvez sorte-de comprendre intuitivement.)
-
Un test fonctionnel teste une fonctionnalité indépendante.
-
une unité de comportement est très petite: alors que je n'aime absolument pas ce mantra stupide "un test par unité par méthode", d'un taille perspective, il est à peu près juste. Une unité de comportement est quelque chose entre une partie d'une méthode et peut-être un couple de méthodes. Tout au plus un objet, mais pas plus d'un.
-
un élément de fonctionnalité comprend habituellement de nombreuses méthodes et coupe plusieurs objets et souvent à travers de multiples couches architecturales.
-
un test unitaire serait quelque chose comme: quand j'appelle la fonction
validate_country_code()
et que je lui passe le code de pays'ZZ'
il devrait retournerfalse
. -
Un test fonctionnel serait: quand je remplir 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 à sortir d'un menu.
-
les tests unitaires sont rédigés par les développeurs, pour les développeurs, du point de vue du développeur.
-
les tests fonctionnels peuvent être orientés vers l'utilisateur, 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 à un développeur (par exemple, lorsqu'ils décrivent une fonctionnalité interne dont l'utilisateur ne se soucie pas), auquel cas ils sont écrits par des développeurs, pour les développeurs, mais toujours du point de vue de l'utilisateur.
-
dans dans le premier cas, les tests fonctionnels peuvent également servir de tests de réception et d'encodage exécutable des exigences fonctionnelles ou de spécification fonctionnelle, dans le second cas, ils peuvent également servir de tests d'intégration.
-
les essais unitaires changent fréquemment, les essais de fonctionnement ne devraient jamais changer à l'intérieur d'un rejet majeur.
TLDR:
pour répondre à la question: test unitaire est un sous-type de test fonctionnel.
il y a deux grands groupes: fonctionnel et Non fonctionnel test. La meilleure illustration (non exhaustive) que j'ai trouvée est celle-ci (source: www.inflectra.com ):
(1) Test d'Unité: essais de petits bouts de code (fonctions/méthodes). Il peut être considéré comme (boîte blanche) tests fonctionnels.
quand les fonctions sont mises ensemble, vous créez un module = un morceau autonome, éventuellement avec une Interface utilisateur qui peut être testé (Module Testing). Une fois que vous avez au moins deux modules séparés, alors vous les coller ensemble et puis vient:
(2) Test D'intégration: lorsque vous mettez deux ou plusieurs pièces de (sous -) modules ou (sous -) systèmes ensemble et voir s'ils jouent bien ensemble.
puis vous intégrez le 3ème module, puis le 4ème et le 5ème dans l'ordre que vous ou votre équipe jugez bon, et une fois que toutes les pièces de puzzle sont placées ensemble, vient
(3) Essai Du Système: test SW dans son ensemble. C'est à peu près "essai D'intégration de tous pièces ensemble".
si c'est OK, alors vient
(4) Test de réception: avons-nous construit ce que le client a réellement demandé? bien sûr, les tests de réception doivent être effectués tout au long du cycle de vie , pas seulement à la dernière étape, où vous réalisez que le le client voulait un sportscar et vous avez construit un van.
"test de fonctionnement" ne signifie pas que vous testez une fonction (méthode) dans votre code. Cela signifie, généralement, que vous testez la fonctionnalité du système -- quand j'exécute foo file.txt
sur la ligne de commande, les lignes de file.txt
deviennent inversées, peut-être. En revanche, un essai à une seule unité couvre généralement un seul cas d'une seule méthode - length("hello")
doit être retourné 5, et length("hi")
doit être retourné 2.
Voir aussi prise D'IBM sur la ligne entre unité essais et essais de fonctionnement .
dans les Rails, le dossier unité est destiné à contenir des tests pour vos modèles, le dossier fonctionnel est destiné à contenir des tests pour vos contrôleurs, et le dossier intégration est destiné à contenir des tests qui impliquent n'importe quel nombre de contrôleurs en interaction. Les Fixtures sont un moyen d'organiser les données de test; elles résident dans le dossier fixtures. The test_helper.le fichier rb contient la configuration par défaut de vos tests. u peut visiter ce .
la distinction de base, cependant, est que les tests fonctionnels tester l'application de l'extérieur, du point de vue de l'utilisateur. Des tests unitaires testent l'application de l'intérieur, du point de vue du programmeur. Les tests fonctionnels devraient vous aider à construire une application avec la bonne fonctionnalité et vous garantir de ne jamais la casser accidentellement. Les tests unitaires devraient vous aider à écrire du code propre et sans bogue.
tiré de " Python TDD" Livre de Harry Percival
selon L'ISTQB, ces deux-là ne sont pas comparables. Les tests fonctionnels ne sont pas des tests d'intégration.
Unité de test est l'un des tests de niveau et de test fonctionnel est le type de test.
en gros:
La fonction d'un système (ou un composant) est "ce qu'il fait'. C'est généralement décrit dans une spécification d'exigences, un spécification, ou dans les cas d'utilisation.
alors que
essai Composant, aussi connu comme unité, le module et le programme de tests, recherche les défauts et vérifie le fonctionnement du logiciel (par exemple, les modules, les programmes, les objets, les classes, etc.) qui sont séparément testable.
selon L'essai de Composant/Unité de L'ISTQB peut être fonctionnel ou non fonctionnel:
les essais de composants peuvent inclure des essais de fonctionnalité et caractéristiques non fonctionnelles spécifiques telles que le comportement des ressources (par exemple, fuites de mémoire), les tests de performance ou de robustesse, ainsi que les tests structuraux (par exemple, couverture de décision).
citations de fondements des tests logiciels - certification ISTQB
la façon dont je le vois est la suivante: un test unitaire établit que le code fait ce que vous vouliez que le code fasse (par exemple, vous vouliez ajouter les Paramètres a et b, vous les ajoutez en fait, et ne les soustrayez pas), des tests fonctionnels vérifient que tout le code fonctionne ensemble pour obtenir un résultat correct, de sorte que ce que vous vouliez que le code fasse obtient en fait le bon résultat dans le système.
UNIT TESTING
unités d'essai comprend l'essai de la plus petite unité de code qui sont habituellement des fonctions ou des méthodes. Les tests unitaires sont principalement effectués par le développeur de l'unité/méthode/fonction, parce qu'ils comprennent le cœur d'une fonction. Le but principal 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 essais unitaires. Même après l'achèvement 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 a été écrit seulement pour un usage.
FUNCTIONAL TESTING
C'est un type de Boîte Noire où les tests seront effectués sur les aspects fonctionnels d'un produit sans regarder dans le code. Les tests fonctionnels sont principalement effectués par un testeur de logiciel dédié. Il comprendra techniques positives, négatives et D'Ava utilisant des données non normalisées pour tester la fonctionnalité spécifiée du produit. La couverture des essais est réalisée de manière plus efficace par des essais fonctionnels que par des essais unitaires. Il utilise le GUI d'application pour tester, il est donc plus facile de déterminer ce dont exactement une partie de l'interface est responsable plutôt que de déterminer ce dont une fonction est responsable.
autant que je sache, le test unitaire est PAS les tests fonctionnels. Laissez-moi vous expliquer avec un petit exemple. Vous voulez tester si la fonctionnalité de connexion d'une application web e-mail fonctionne ou non, tout comme un utilisateur le ferait. Pour cela, vos tests fonctionnels devraient être comme ceci.
1- existing email, wrong password -> login page should show error "wrong password"!
2- non-existing email, any password -> login page should show error "no such email".
3- existing email, right password -> user should be taken to his inbox page.
4- no @symbol in email, right password -> login page should say "errors in form, please fix them!"
nos tests fonctionnels devraient-ils vérifier si nous pouvons nous connecter avec des entrées invalides ? Par exemple. Le courriel n'a pas de symbole@, le nom d'Utilisateur a plus d'un point (un seul point est permis).com apparaît avant @ etc. ? Généralement, pas de ! Ce genre de test va dans vos tests unitaires.
vous pouvez vérifier si les entrées invalides sont rejetées dans les tests unitaires comme indiqué dans les tests ci-dessous.
class LoginInputsValidator
method validate_inputs_values(email, password)
1-If email is not like string.string@myapp.com, then throw error.
2-If email contains abusive words, then throw error.
3-If password is less than 10 chars, throw error.
noter que le test fonctionnel 4 fait ce que le test unitaire 1 fait. Parfois, les tests fonctionnels peuvent répéter une partie (pas la totalité) des tests effectués par les 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 de données invalides. Nous ne voulons pas tester si toutes les mauvaises entrées sont rejetées ou non. C'est le travail de tests unitaires.
test non fonctionnel est un test où un testeur testera que le produit effectuera tous les attributs de qualité que le client ne mentionne pas, mais ces attributs de qualité devraient être là. Comme:-la Performance,la Convivialité,la Sécurité,la Charge,le Stress etc. mais dans le test fonctionnel : - le client est déjà présent avec ses exigences et ceux sont correctement documentés,la tâche des testeurs est de traverser vérifier si la fonctionnalité de l'Application fonctionne selon le système proposé ou non. À cette fin, Testeur devrait tester la fonctionnalité Mise en œuvre avec le système proposé.
tests Unitaires est généralement effectué 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 en utilisant les tests unitaires.
Test Fonctionnel : C'est une bonne référence. Explication De L'Essai Fonctionnel