Aller au contenu
SDETRole
SDETRole

Glossaire · Fondamentaux du test

Test d’intégration

En anglais : Integration test

Également appelé : tests d’intégration, integration testing

Définition

Un test qui vérifie que deux composants ou plus, comme un service et sa base de données ou deux API, fonctionnent correctement ensemble via leurs vraies interfaces.

Un test d’intégration vérifie les connexions entre composants plutôt que la logique interne d’un seul. Il utilise de vraies implémentations sur au moins une frontière : un repository face à une vraie base de données, un service qui appelle l’API d’un autre service, un producteur de messages et son consommateur. Ce sont ces tests qui détectent un SQL erroné, une mauvaise sérialisation, une configuration manquante ou des contrats incompatibles, autant de problèmes que des tests unitaires avec des mocks manqueraient.

Exemple

Un OrderRepository est testé unitairement avec des mocks, et ces tests passent. Le test d’intégration l’exécute contre une vraie instance PostgreSQL lancée dans un conteneur :

  1. Démarrer PostgreSQL avec Testcontainers et appliquer les migrations du schéma.
  2. Enregistrer une commande avec trois lignes via le repository.
  3. La relire par son identifiant et vérifier que les totaux et les lignes correspondent.
  4. Rechercher les commandes sur une plage de dates et vérifier que les bornes sont incluses.

Exécuté contre une vraie base de données, ce test peut révéler une faute de frappe dans un nom de colonne, une migration jamais appliquée, une erreur de conversion de fuseau horaire, ou une requête qui fonctionne dans une base en mémoire mais pas dans PostgreSQL.

Intégration, unitaire et end-to-end

Unitaire Intégration End-to-end
Périmètre Une fonction ou une classe Quelques composants et leurs interfaces Le système entier, du point de vue de l’utilisateur
Dépendances Remplacées par des doublures Réelles à la frontière testée Toutes réelles
Vitesse Millisecondes Secondes De quelques secondes à quelques minutes
Un échec désigne Un élément de logique précis Une interface précise Un endroit quelconque du système

Approches

  • Les tests d’intégration étroits vérifient une frontière à la fois (service plus base de données), tout le reste étant simulé par des stubs. Ils sont rapides et précis, et la plupart des équipes en veulent beaucoup.
  • Les tests d’intégration larges démarrent plusieurs vrais services ensemble. Ils inspirent davantage confiance mais sont plus lents et plus difficiles à diagnostiquer.
  • Les manuels classiques décrivent aussi l’intégration big-bang, descendante (top-down) et ascendante (bottom-up), qui désignent l’ordre dans lequel les modules sont assemblés. En entretien, il est utile de connaître ces termes, mais les équipes modernes intègrent surtout en continu.

Erreurs courantes

  • Partager une seule base de données de longue durée entre les tests et les développeurs, ce qui rend les résultats dépendants de données résiduelles. Donnez à chaque exécution une instance propre et jetable.
  • Mocker précisément la frontière que vous vouliez tester, ce qui retransforme le test d’intégration en test unitaire.

Saisissez un terme pour rechercher sur SDETRole.

Recherche plein texte par Pagefind · s’exécute dans votre navigateur Ouvrir la page de recherche →