Tests unitaires (Unit Testing)
Les tests unitaires vérifient des unités isolées du code source et garantissent que celles-ci fonctionnent comme prévu.
Un exemple typique : dans une boutique en ligne, un produit peut être ajouté au panier. Un test unitaire ne vérifie pas si le bouton est cliquable ou si la page s'affiche correctement, mais si la logique sous-jacente est exacte : le produit a-t-il été correctement enregistré ? La quantité est-elle exacte ? Le prix total est-il calculé et enregistré correctement ? C'est précisément cette logique métier qui est vérifiée de manière isolée, indépendamment du reste de l'application.
L'objectif est de localiser les erreurs le plus tôt possible : si un test unitaire échoue, la partie du code concernée est directement identifiable. Les tests unitaires sont créés par l'équipe de développement, s'exécutent généralement de manière automatisée et accompagnent le développement dès le début.
Tests de composants (Component Testing)
Une fois les différentes unités testées, des composants plus larges et autonomes d'un système sont vérifiés, comme un module entier ou un service. Les tests de composants vérifient le comportement d'un composant de manière aussi isolée que possible du reste du système. Les dépendances envers d'autres parties du système ne sont pas prises en compte.
Pour reprendre l'exemple du panier où un produit est ajouté : un test de composant ne vérifie pas la logique métier sous-jacente, mais si le composant se comporte correctement : le bouton « Ajouter au panier » se désactive-t-il dès que le produit est dans le panier ? Le message de confirmation apparaît-il après le clic ? Le composant affiche-t-il un état de chargement pendant la requête ? C'est précisément ce comportement qui est vérifié de manière isolée.
Tests d'intégration (Integration Testing)
Les tests d'intégration vérifient si des composants dépendants les uns des autres interagissent correctement : si les données sont transmises correctement, si les logiques fonctionnent ensemble et si le système dans son ensemble se comporte comme prévu.
Dans le cas du panier, il s'agit de vérifier si une commande n'est pas seulement traitée correctement au sein d'un composant, mais qu'elle arrive aussi effectivement dans la base de données. C'est ici qu'apparaissent des erreurs invisibles lors des tests unitaires ou de composants isolés : les différentes parties fonctionnent de manière autonome, mais pas ensemble.
Tests d'API
Les tests d'API font parfois partie des tests d'intégration, mais ils se concentrent sur la communication entre des interfaces définies. Ils vérifient si les API renvoient les bonnes données, répondent correctement aux requêtes et restent stables dans différentes conditions, indépendamment de ce qui se passe à la surface.
Exemple : un produit est ajouté au panier. Un test d'API vérifie l'interface sous-jacente : l'endpoint renvoie-t-il les données et les codes d'état attendus ? L'interface réagit-elle correctement lorsqu'un produit n'est plus disponible ? Cette communication peut être testée indépendamment du reste du système avec des logiciels comme Postman ou à l'aide de scripts dédiés.
Tests de bout en bout (End-to-End Testing)
Les tests de bout en bout simulent des parcours complets du point de vue de l'ensemble des personnes qui interagissent avec l'application ou le logiciel. Plusieurs User Stories sont testées de manière combinée afin de contrôler l'interaction de l'ensemble du système et de s'assurer que les données circulent correctement à travers les différentes frontières applicatives. Ces tests interviennent généralement vers la fin d'un cycle de développement.
L'exemple du panier devient alors un parcours complet : rechercher un produit, l'ajouter au panier, finaliser la commande, recevoir la confirmation de commande — autant d'étapes qui concernent une interface utilisateur (UI) avec laquelle la personne finale travaille. Mais ce n'est pas tout : dans cet exemple, le test de bout en bout vérifie également si l'ERP génère ensuite la liste de préparation exacte pour le personnel de l'entrepôt. Un test de bout en bout vérifie ainsi si les processus fonctionnent comme prévu du début à la fin.