Les tests automatiques sont divisés en tests unitaires, tests d'intégration et tests end-to-end (E2E) afin de couvrir de manière globale la vérification du système à différents niveaux.
Historique de la question : Cette classification a émergé de la nécessité de tester les applications à la fois par parties et dans leur ensemble. On distingue donc les couches de tests :
Problème : Les erreurs se produisent souvent non seulement dans la logique d'une méthode individuelle, mais aussi aux jonctions des composants ou lors du démarrage "réel" de l'ensemble du système avec des services externes. Si tout est mélangé, il est difficile de localiser rapidement un bogue ou de comprendre où il s'est produit.
Solution :
Il est vital de distinguer les types de tests pour :
Caractéristiques clés :
Les tests d'intégration peuvent-ils être considérés comme de "grands" tests unitaires ?
Non, les tests d'intégration testent le fonctionnement de plusieurs composants ensemble, et non seulement des fonctions individuelles. Dans ce cas, il n'est pas toujours possible d'utiliser des mocks — les services réels interagissent les uns avec les autres.
Tous les tests doivent-ils être end-to-end (E2E) ?
Non, c'est une approche coûteuse et complexe. Les E2E ne sont nécessaires que pour des scénarios utilisateurs critiques, la plupart de la logique est couverte par d'autres tests.
Les tests unitaires sont-ils toujours rapides ?
Pas toujours. Parfois, il est impossible d'isoler le code, ou le fonctionnement d'une méthode dépend de ressources externes complexes. Dans ce cas, le test cesse d'être unitaire.
L'entreprise a couvert sa fonctionnalité principale uniquement avec des tests E2E — chaque modification était vérifiée la nuit, les tests échouaient de façon instable, les bogues étaient découverts tardivement.
Avantages :
Inconvénients :
L'équipe a établi une pyramide de tests : en bas - tests unitaires, au milieu - tests d'intégration, en haut - uniquement les plus importants E2E.
Avantages :
Inconvénients :