Quelle est la différence entre les tests d'intégration et les tests fonctionnels? [fermé]

132

Les tests fonctionnels et les tests d'intégration sont-ils identiques?

Vous commencez vos tests par des tests unitaires, puis après avoir terminé les tests unitaires, vous passez aux tests d'intégration où vous testez le système dans son ensemble. Les tests fonctionnels sont-ils identiques aux tests d'intégration? Vous prenez toujours le système dans son ensemble et le testez pour la conformité des fonctionnalités.

Mishthi
la source
1
duplicata possible de [The Agile Way: Integration Testing vs Functional Testing ou les deux? ] ( stackoverflow.com/questions/555899/… )
Pascal Thivent
14
Puis-je vous suggérer d'accepter les réponses aux questions que vous avez posées dans le passé?
Stefano Borini
Voir ma réponse ici: stackoverflow.com/questions/2741832/…
Andrejs
6
Je dois dire que cette question représente ce qui ne va pas avec ce site. Quel est le problème avec cette question? En quoi est-ce trop large? C'est demander quelque chose de TRÈS spécifique, lié à la programmation. Quelle est la différence entre quelque chose peut même être représentée de manière mathématique? Il semble juste qu'il y ait un grand nombre de questions vraiment importantes et vraiment pertinentes qui sont fermées pour des raisons inexplicables. Je sais que vous les gens sérieux de SO allez me dire que je me trompe, mais le fait que ces questions soient fractionnées vers des sites comme Quara.com prouve que j'ai raison. [Fondamentalement, SO abdique des parts de marché].
Jim Maguire
1
Je suis d'accord avec @JimMaguire: la question posée est une question "oui / non" (plus une explication de pourquoi oui ou non). Je ne vois pas pourquoi il n'est pas considéré comme ciblé.
bob le

Réponses:

101

Le test d'intégration consiste à tester plusieurs composants et leur fonctionnement ensemble. Par exemple, comment un autre système interagit avec votre système ou la base de données interagit avec votre couche d'abstraction de données. Cela nécessite généralement un système entièrement installé, bien que dans ses formes les plus pures ce ne soit pas le cas.

Le test fonctionnel consiste à tester le système par rapport aux exigences fonctionnelles du produit. La gestion de produit / projet les écrit généralement et l'assurance qualité formalise le processus de ce qu'un utilisateur devrait voir et expérimenter, et quel devrait être le résultat final de ces processus. Selon le produit, cela peut être automatisé ou non.

aceinthehole
la source
9
Merci ... oui mais dans les tests fonctionnels également lorsque nous testons le système par rapport aux exigences fonctionnelles, nous le prenons également comme un système intégré .. Et tout en effectuant des tests fonctionnels, nous découvrirons également comment les différentes unités fonctionnent ensemble afin qu'il puisse être considéré comme des tests d'intégration ...
Mishthi
3
Spécialement dans notre environnement, nous avons toujours considéré les tests unitaires comme des tests non unitaires écrits contre une seule classe, les tests d'intégration comme des tests non unitaires ou des tests de script sql nécessitant plus qu'une classe, ou une base de données ou un autre système (nécessitant généralement une installation complète) et les tests fonctionnels sont les tests exécutés par l'assurance qualité ou les tests automatisés de l'interface utilisateur.
aceinthehole
1
De plus, je dirais que si vous n'avez pas effectué de tests d'intégration avant les tests fonctionnels, vous faites les deux en même temps et vous allez simplement trouver des erreurs dans les parties d'intégration pendant que vous testez les exigences fonctionnelles.
aceinthehole
1
comment n'est-ce pas la réponse acceptée!?
tftd
@tftd car l'auteur de cette quesiton est inactif depuis 2010 ...
t3chb0t
20

Test fonctionnel :

Oui, nous testons le produit ou le logiciel dans son ensemble, qu'il fonctionne correctement ou non (test des boutons, liens, etc.)

Par exemple: page de connexion.

vous fournissez le nom d'utilisateur et le mot de passe, vous testez si cela vous amène à la page d'accueil ou non.

Test d'intégration :

Oui, vous testez uniquement le logiciel intégré, mais vous testez où se déroule le flux de données et y a-t-il des changements dans la base de données.

Par exemple: envoyer un e-mail

Vous envoyez un mail à quelqu'un, il y a un flux de données et également un changement de base de données (la table envoyée augmente la valeur de 1)


N'oubliez pas que cliquer sur des liens et des images ne constitue pas un test d'intégration. J'espère que vous avez compris pourquoi, car il n'y a pas de changement de base de données en cliquant simplement sur un lien.

J'espère que cela vous a aidé.

jsborn17
la source
3
La base de données est le détail de mise en œuvre de l'état du programme. Cliquer sur le lien peut également changer l'état du programme.
alehro
@ jsborn17 Les tests d'intégration sont-ils applicables à une application frontale communiquant avec une API même si nous ne sommes pas en mesure d'exécuter l'API?
Wancieho
8

C'est une distinction importante, mais malheureusement, vous ne trouverez jamais d'accord. Le problème est que la plupart des développeurs les définissent de leur propre point de vue. C'est très similaire au débat sur Pluton. (S'il était plus proche du Soleil, serait-ce une planète?)

Les tests unitaires sont faciles à définir. Il teste le CUT ( Code Under Test ) et rien d'autre. (Enfin, aussi peu que possible.) Cela signifie des moqueries, des contrefaçons et des appareils.

À l'autre extrémité du spectre, il y a ce que beaucoup de gens appellent les tests d'intégration de système . C'est tester autant que possible, mais toujours à la recherche de bogues dans votre propre CUT.

Mais qu'en est-il de la vaste étendue entre les deux?

  • Par exemple, que faire si vous testez juste un peu plus que le CUT? Et si vous incluez une fonction Fibonacci au lieu d'utiliser un appareil que vous avez injecté? J'appellerais cela des tests fonctionnels , mais le monde n'est pas d'accord avec moi.
  • Et si vous incluez time()ou rand()? Ou si vous appelez http://google.com? J'appellerais ça le test du système , mais encore une fois, je suis seul.

Pourquoi est-ce important? Parce que les tests système ne sont pas fiables. Ils sont nécessaires, mais ils échoueront parfois pour des raisons indépendantes de votre volonté. D'un autre côté, les tests fonctionnels doivent toujours réussir, et non échouer au hasard; s'ils sont rapides, ils pourraient tout aussi bien être utilisés dès le départ afin d'utiliser le développement piloté par les tests sans écrire trop de tests pour votre implémentation interne. En d'autres termes, je pense que les tests unitaires peuvent être plus problématiques qu'ils n'en valent, et j'ai une bonne compagnie .

J'ai mis des tests sur 3 axes, avec tous leurs zéros aux tests unitaires :

  1. Test fonctionnel: utiliser du code réel de plus en plus profondément dans votre pile d'appels.
  2. Test d'intégration: de plus en plus haut votre pile d'appels; en d'autres termes, tester votre CUT en exécutant le code qui l'utiliserait.
  3. Test système: de plus en plus d'opérations irremplaçables (ordonnanceur O / S, horloge, réseau, etc. )

Un test peut facilement être tous les 3, à des degrés divers.

cdunn2001
la source
les tests fonctionnels réussissent toujours? ou voulez-vous dire que les tests fonctionnels devraient toujours réussir?
aceinthehole
1
Ils ne doivent pas échouer au hasard. Quand ils échouent, ils devraient échouer à chaque fois. Par exemple, ils ne doivent pas inclure les appels vers d'autres hôtes. Peut-être devraient-ils être appelés tests comportementaux ? Je ne connais pas le meilleur terme. Je sais juste que ce sont les tests les plus importants, et ils sont généralement négligés dans le large fossé entre les tests unitaires purs et entièrement simulés et les tests d'intégration de système de haut niveau .
cdunn2001
"Ils ne devraient pas échouer au hasard." - Le terme pourrait être qu'ils sont "déterministes"
kleaver
7

Test fonctionnel: Il s'agit d'un processus de test où chaque composant du module est testé. Par exemple: si une page Web contient un champ de texte, un bouton radio, des boutons et une liste déroulante, etc., les composants doivent être vérifiés.

Test d'intégration: processus où le flux de données entre 2 modules est vérifié.

raghuram
la source
4

Je dirais que les deux sont étroitement liés les uns aux autres et qu'il est très difficile de les distinguer. À mon avis, les tests d'intégration sont un sous-ensemble des tests fonctionnels.

Les tests de fonctionnalité sont basés sur les exigences initiales que vous recevez. Vous testerez le comportement de l'application comme prévu avec les exigences.

Quand il s'agit de tests d'intégration, c'est l'interaction entre les modules. Si un module envoie une entrée, le module B peut la traiter ou non.

Naidu
la source
+1 pour "Les tests d'intégration sont un sous-ensemble des tests fonctionnels" - mon expérience montre également qu'une telle approche des tests est la plus significative si vous visez un résultat rapidement. Par exemple, dans mon code de test, je traite généralement le système comme une seule unité intégrée - je configure une base de données en mémoire, puis je nourris mes contrôleurs MVC d'application avec des données de test et vérifie leur réponse, et vérifie également les données dans la base de données pour assurez-vous que toute la validation des données a fonctionné comme prévu, pour éviter les bogues lorsque le contrôleur MVC renvoie une réponse correcte, mais elle n'est pas réellement transmise correctement à la couche de base de données.
JustAMartin
4

Test d'intégration - Les tests d'intégration ne sont rien d'autre que le test de différents modules. Vous devez tester la relation entre les modules. Par exemple, vous ouvrez Facebook, puis vous voyez la page de connexion après avoir entré l'identifiant de connexion et le mot de passe, vous pouvez voir la page d'accueil de Facebook, la page de connexion est donc un module et la page d'accueil est un autre module. vous devez vérifier uniquement la relation entre eux signifie que lorsque vous vous êtes connecté, seule la page d'accueil doit être ouverte, pas la boîte de message ou quoi que ce soit d'autre. Il existe 2 principaux types d'approche TOP-DOWN de test d'intégration et d'approche BOTTOM UP.

Tests fonctionnels - Dans les tests fonctionnels, vous ne devez penser qu'aux entrées et aux sorties. Dans ce cas, vous devez penser comme un utilisateur réel. Test de ce que vous avez donné et de ce que vous avez obtenu est un test fonctionnel. vous devez seulement observer la sortie. Lors des tests fonctionnels, vous n'avez pas besoin de tester le codage de l'application ou du logiciel.

Yogesh Deshpande
la source
2

Dans un testeur de test fonctionnel se concentre uniquement sur la fonctionnalité et la sous-fonctionnalité de l'application. La fonctionnalité de l'application doit fonctionner correctement ou non.

Dans les tests d'intégration, les testeurs doivent vérifier la dépendance entre les modules ou sous-modules.Exemple pour les enregistrements de modules doivent être récupérés et affichés correctement dans un autre module.

Krunal
la source
2

Test d'intégration: - Lorsque les tests unitaires sont effectués et que les problèmes sont résolus pour les composants associés, tous les composants requis doivent s'intégrer sous un seul système afin qu'il puisse effectuer une opération. Après avoir combiné les composants du système, pour vérifier que le système fonctionne correctement ou non, ce type de test est appelé test d'intégration.

Test fonctionnel: - Le test est principalement divisé en deux catégories comme 1. Test fonctionnel 2. Test non fonctionnel ** Test fonctionnel: - Pour tester si le logiciel fonctionne selon les exigences de l'utilisateur ou non. ** Test non fonctionnel: - Pour tester si le logiciel satisfait aux critères de qualité tels que le test de résistance, le test de sécurité, etc.

Habituellement, le client fournira les exigences pour le test fonctionnel uniquement et pour le test non fonctionnel, les exigences ne doivent pas être mentionnées mais l'application exécutera nécessairement ces activités.

mohit sarsar
la source
2

Test d'intégration

  • Cela peut être vu comme la manière dont les différents modules du système fonctionnent ensemble.
  • Nous nous référons principalement à la fonctionnalité intégrée des différents modules, plutôt différents composants du système.
  • Pour qu'un système ou un logiciel fonctionne efficacement, chaque composant doit être synchronisé les uns avec les autres.
  • La plupart du temps, l'outil que nous avons utilisé pour les tests d'intégration sera choisi que nous avons utilisé pour les tests unitaires.
  • Il est utilisé dans des situations complexes, lorsque les tests unitaires s'avèrent insuffisants pour tester le système.

    Test fonctionel

  • Il peut être défini comme le test de la fonctionnalité individuelle des modules.
  • Il s'agit de tester le produit logiciel à un niveau individuel, pour vérifier sa fonctionnalité.
  • Des cas de test sont développés pour vérifier le logiciel pour les résultats attendus et inattendus.
  • Ce type de test est effectué davantage du point de vue de l'utilisateur. C'est-à-dire qu'il considère l'attente de l'utilisateur pour un type d'entrée.
  • Il est également appelé test de boîte noire ainsi que test de boîte fermée

  • Shah
    la source
    1

    La vérification de la fonctionnalité de l'application est généralement connue sous le nom de test fonctionnel, où le test d'intégration consiste à vérifier le flux de données d'un module à l'autre. Prenons l'exemple de l'application de transfert d'argent.Supposons que nous ayons une page dans laquelle nous entrons toutes les informations d'identification et si nous appuyons sur le bouton de transfert et après cela, si nous obtenons un succès, alors c'est un test fonctionnel. Mais dans le même exemple, si nous vérifions le montant du transfert, il s'agit d'un test d'intégration.

    Rahul Talwar
    la source
    0

    Les auteurs divergent beaucoup à ce sujet. Je ne pense pas qu'il y ait "la" bonne interprétation pour cela. Cela dépend vraiment.

    Par exemple: la plupart des développeurs Rails considèrent les tests unitaires comme des tests de modèle, les tests fonctionnels comme des tests de contrôleur et les tests d'intégration comme ceux qui utilisent quelque chose comme Capybara pour explorer l'application du point de vue d'un utilisateur final - c'est-à-dire en naviguant dans le HTML généré de la page, en utilisant le DOM pour vérifier les attentes.

    Il existe également des tests d'acceptation, qui sont à leur tour une documentation «en direct» du système (ils utilisent généralement Gherkin pour permettre de les écrire en langage naturel), décrivant toutes les fonctionnalités de l'application à travers plusieurs scénarios, qui sont à leur tour automatisés par un développeur. Ceux-ci, à mon humble avis, pourraient également être considérés comme des tests fonctionnels et des tests d'intégration.

    Une fois que vous comprenez le concept clé derrière chacun de ces éléments, vous pouvez être plus flexible en ce qui concerne le bien ou le mal. Donc, encore une fois à mon humble avis, un test fonctionnel pourrait également être considéré comme un test d'intégration. Pour le test d'intégration, selon le type d'intégration qu'il exerce, il peut ne pas être considéré comme un test fonctionnel - mais vous avez généralement certaines exigences à l'esprit lorsque vous écrivez un test d'intégration, donc la plupart du temps, il peut également être considéré comme un test fonctionnel.

    Nicolas Pufal
    la source