web-dev-qa-db-fra.com

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

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

Existe-t-il des noms différents pour ces tests? Comme certaines personnes qui appellent des tests unitaires des tests fonctionnels, etc.?

356
Books

Un test unitaire est un test écrit par le programmeur pour vérifier qu'un morceau de code relativement petit fait ce qu'il est censé faire. Leur portée est étroite, ils devraient être faciles à écrire et à exécuter, et leur efficacité dépend de ce que le programmeur considère comme utile. Les tests sont destinés à être utilisés par le programmeur, ils ne sont directement utiles à personne, cependant, s'ils font leur travail, les testeurs et les utilisateurs en aval devraient bénéficier de moins de bugs.

Le test unitaire implique en partie que des éléments en dehors du code testé soient moqués ou masqués. Les tests unitaires ne doivent pas dépendre de systèmes externes. Ils testent la cohérence interne au lieu de prouver qu'ils fonctionnent bien avec un système extérieur.

Un test d'intégration est effectué pour démontrer que différents éléments du système fonctionnent ensemble. Les tests d'intégration peuvent couvrir des applications entières et nécessitent beaucoup plus d'effort. Ils nécessitent généralement l’allocation de ressources telles que des instances de base de données et du matériel. Les tests d’intégration démontrent de manière plus convaincante que le système fonctionne (en particulier pour les non-programmeurs) qu’un ensemble de tests unitaires ne peut le faire, du moins dans la mesure où l’environnement de test d’intégration ressemble à la production.

En fait, le "test d'intégration" s'utilise pour une grande variété de choses, des tests système complets à un environnement conçu pour ressembler à la production, à tout test utilisant une ressource (telle qu'une base de données ou une file d'attente) non simulée. À l'extrémité inférieure du spectre, un test d'intégration peut être un test Junit dans lequel un référentiel est exercé sur une base de données en mémoire, à l'extrémité supérieure, il peut s'agir d'un test système vérifiant que les applications peuvent échanger des messages.

560
Nathan Hughes

Un test unitaire ne doit pas dépendre de code en dehors de l'unité testée. Vous décidez quelle est l'unité en recherchant la plus petite pièce à tester. Là où il y a des dépendances, elles devraient être remplacées par de faux objets. Mocks, stubs .. Le thread d'exécution des tests commence et se termine dans la plus petite unité testable.

Lorsque des objets faux sont remplacés par des objets réels et que des tests d'exécution se croisent dans d'autres unités testables, vous disposez d'un test d'intégration.

90
Dave

Un test unitaire est effectué (dans la mesure du possible) en isolation totale.

Un test d'intégration est effectué lorsque l'objet ou le module testé fonctionne comme il se doit, avec d'autres bits de code.

40
The Communist Duck

Un code de test unitaire sur lequel vous avez le contrôle total, tandis qu'un test d'intégration teste l'utilisation ou l'intégration de votre code avec un autre code.

Vous devez donc écrire des tests unitaires pour vous assurer que vos propres bibliothèques fonctionnent comme prévu, puis des tests d'intégration pour vous assurer que votre code est compatible avec le code que vous utilisez, par exemple une bibliothèque.

Les tests fonctionnels sont liés aux tests d'intégration, mais font plus spécifiquement référence à des tests qui testent un système ou une application entier avec tout le code fonctionnant ensemble, presque un test de super intégration.

15
Karl Rosaen

Le test unitaire est généralement effectué pour une fonctionnalité unique implémentée dans le module logiciel. La portée des tests est entièrement comprise dans ce module SW. Le test unitaire ne remplit jamais les exigences fonctionnelles finales. Il relève de la méthodologie de test de la whitebox.

Considérant que le test d'intégration est effectué pour assurer les différentes implémentations du module SW. Le test est généralement effectué après l'intégration au niveau du module dans le développement du logiciel. Ce test couvrira les exigences fonctionnelles, mais pas suffisamment pour assurer la validation du système.

11
Jeganraj