153 votes

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

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 vous le testez pour vérifier la conformité des fonctionnalités.

121voto

aceinthehole Points 1460

Les tests d'intégration consistent à tester plus d'un composant et la façon dont ils fonctionnent ensemble. Par exemple, comment un autre système interagit avec votre système, ou comment la base de données interagit avec votre couche d'abstraction de données. Habituellement, cela nécessite un système entièrement installé, bien que dans sa forme la plus pure, ce ne soit pas le cas.

Les tests fonctionnels consistent à tester le système par rapport aux exigences fonctionnelles du produit. La gestion du produit/projet rédige généralement ces exigences et l'AQ formalise le processus de ce qu'un utilisateur doit voir et expérimenter, et ce que le résultat final de ces processus doit être. Selon le produit, ce processus peut être automatisé ou non.

24voto

jsborn17 Points 64

Tests fonctionnels :

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

Par exemple : Page de connexion.

vous fournissez le nom d'utilisateur et le mot de passe, vous vérifiez si vous arrivez à la page d'accueil ou non.

Test d'intégration :

Oui, vous testez uniquement le logiciel intégré, mais vous testez l'endroit où le flux de données se produit et si des modifications sont apportées à la base de données.

Par exemple : Envoyer un e-mail

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


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

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

9voto

cdunn2001 Points 3597

Il s'agit d'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. (Si elle était plus proche du Soleil, serait-elle une planète ?)

Tests unitaires est facile à définir. Il teste le CUT ( Code en cours d'essai ) et rien d'autre. (Enfin, le moins d'autres choses possible.) Cela signifie des mocks, des fakes et des fixtures.

À l'autre bout du spectre, il y a ce que beaucoup de gens appellent tests d'intégration des systèmes . Il s'agit de tester autant que possible, tout en continuant à chercher des bogues dans votre propre coupe.

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

  • Par exemple, que se passe-t-il si vous testez juste un peu plus que le CUT ? Et si vous incluiez une fonction Fibonacci, au lieu d'utiliser une fixation que vous aviez injectée ? J'appellerais cela tests de fonctionnement mais le monde n'est pas d'accord avec moi.
  • Et si vous incluiez time() o rand() ? Ou si vous appelez http://google.com ? J'appellerais cela test du système mais encore une fois, je suis seul.

Pourquoi cela est-il 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 de manière aléatoire ; s'ils sont rapides, autant les utiliser dès le début 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 causer plus de problèmes qu'ils n'en valent la peine, et j'ai bonne entreprise .

J'ai mis les tests sur 3 axes, avec tous leurs zéros à test unitaire :

  1. Test fonctionnel : utilisation de code réel de plus en plus profond dans votre pile d'appels.
  2. Tests d'intégration : de plus en plus élevés en haut votre pile d'appels ; en d'autres termes, vous testez votre CUT en exécutant le code qui l'utiliserait.
  3. Test du système : de plus en plus d'opérations non répétables (ordonnanceur O/S, horloge, réseau, etc. )

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

9voto

raghuram Points 21

Tests fonctionnels : Il s'agit d'un processus de test dans lequel chaque composant du module est testé. Par exemple, si une page Web contient des champs de texte, des boutons radio, des boutons et des listes déroulantes, il faut vérifier ces composants.

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

6voto

Naidu Points 160

Je dirais que les deux sont étroitement liés l'un à l'autre 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 vérifierez que le comportement de l'application est conforme aux exigences.

En ce qui concerne les tests d'intégration, il s'agit de l'interaction entre les modules. Si le module A envoie une entrée, le module B est capable de la traiter ou non.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X