Les tests d'intégration utilisent-ils des simulations?

24

Je suis actuellement dans une classe de tests de logiciels où pour notre projet de semestre, nous devons effectuer plusieurs types de tests dessus, tels que les tests unitaires et les tests d'intégration. Pour les tests d'intégration, le professeur a dit d'utiliser des simulations et des bibliothèques de simulation (comme EasyMock et Mockito) pour nos tests d'intégration. Je deviens assez confus cependant. Le test d'intégration consiste à tester en dehors des classes, modules, services, etc. Pourquoi les mocks et stubs devraient-ils être utilisés dans les tests d'intégration si vous testez plusieurs classes et services?

TheLegendOfCode
la source
8
Les tests «d'intégration» et «unitaires» ne sont pas universellement acceptés. Il vaut mieux demander à votre professeur exactement comment il a défini ces termes.
RubberDuck
1
Juste un commentaire. Le test d'intégration ne consiste pas à tester les dépendances., Il s'agit de tester la bonne intégration du code avec les dépendances (les appels, la réponse et la gestion des erreurs, etc.).
Laiv

Réponses:

25

Si vous avez une fonctionnalité qui touche plusieurs composants externes, vous pouvez vous moquer de tous sauf un pour isoler et tester un composant spécifique. Par exemple, supposons que vous ayez une fonction qui appelle un service Web et fasse ensuite quelque chose avec une base de données basée sur les résultats. Vous pouvez écrire trois tests d'intégration:

  1. un test qui se moque de l'appel du service Web mais implique une réelle connectivité à la base de données.
  2. un test qui effectue un véritable appel de service Web mais utilise une connectivité de base de données factice.
  3. un test qui effectue un véritable appel de service Web et implique une véritable connexion à la base de données.

Si vous exécutez les trois tests et que 1 et 3 échouent, il y a de fortes chances qu'il y ait un bogue dans votre code qui fonctionne avec la base de données, car le seul test qui a réussi est celui qui utilise la connectivité de la base de données factice.

En général, les tests d'intégration n'utilisent pas de maquette, mais j'ai fait quelque chose comme ça à l'occasion.

FrustratedWithFormsDesigner
la source