Definition

Test de bout en bout

Par test de bout en bout (end-to-end testing en anglais), on entend une méthodologie qui évalue l'ordre de travail d'un produit complexe, du début jusqu'à la fin. Ce processus consiste à vérifier que tous les composants d'un système fonctionnent de manière optimale dans des situations de production réelles. Un test de bout en bout ne doit toutefois pas être considéré comme une forme de test d'un produit fini, car il se décline en plusieurs variantes et sous-entend d'autres subtilités.

Types de test de bout en bout

Un test de bout en bout peut être de deux types : vertical ou horizontal. Mieux connue et plus utilisée, l'approche horizontale sert à attester la confiance que l'on accorde à un système en se plaçant du point de vue d'un utilisateur. Le test horizontal permet de confirmer que le système fonctionne comme prévu, que l'utilisateur peut y naviguer à son aise et qu'il n'existe ni bugs ni exceptions imprévus.

En cas d'approche verticale, le test de bout en bout fait intervenir le concept de couches, autrement dit les tests se déroulent dans un ordre séquentiel hiérarchique. Chaque composant d'un système ou produit est testé du début jusqu'à la fin pour en assurer la qualité. Le test vertical sert souvent à tester des composants critiques d'un système informatique complexe qui ne concernent généralement ni les utilisateurs ni les interfaces. Pour une couche sans interface utilisateur, il est préférable de procéder à un test de bout en bout vertical, plutôt qu'horizontal.

Comment procéder à un test de bout en bout ?

Le test de bout en bout peut s'appliquer de plusieurs manières. Prenons l'exemple d'une application Internet de commerce électronique. Un test de bout en bout horizontal porterait sur les étapes du parcours d'achat, à savoir : connexion à un profil, utilisation des fonctions de recherche et de navigation, ajout d'un article à un panier, enregistrement d'un article pour une utilisation ultérieure, achat d'un article, enregistrement des achats et des coordonnées de carte bancaire, confirmation de l'achat et déconnexion.

En revanche, un test de bout en bout vertical serait utilisé dans un système sans interface utilisateur ou en cas de haute technicité de l'interface utilisateur.  Il pourrait, par exemple, servir à tester une interface de programmation d'application ou une interface SQL (Structured Query Language).

Avant tout test, les concepteurs et développeurs dressent une liste de ce qu'est censée faire l'interface utilisateur (ou toute autre fonction). Le flux des données doit être suivi d'un système à l'autre pour faire ressortir les dépendances, les failles ou les incertitudes. Les critères doivent être définis avant le test proprement dit, notamment en ce qui concerne les facteurs susceptibles d'affecter les options d'interface, comme la latence ou le trafic. Un test de bout en bout porte généralement sur des produits et systèmes finis et consiste en fait à examiner le système complet et la façon dont il communique avec chacun de ses composants. Si le système ne donne pas les résultats escomptés et que le problème est identifié, un deuxième test est à prévoir. Les données sont enregistrées et analysées pour déterminer l'origine du problème, l'erreur est réparée et le système, testé à nouveau.

Pourquoi procéder à un test de bout en bout ?

On utilise souvent le terme test de bout en bout pour désigner une méthodologie de test logiciel. Quelle que soit sa forme, il simule des scénarios réels comme l'interaction entre le matériel, les réseaux et les bases de données. Il offre les avantages des tests en boîte blanche et en boîte noire. Un test en boîte blanche s'apparente à un test de bout en bout vertical et consiste à examiner le fonctionnement d'une application ou d'un système et sa structure interne. Comparable à un test de bout en bout horizontal, un test en boîte noire consiste à examiner uniquement les fonctionnalités sans s'intéresser à la structure ni au fonctionnement internes d'un programme ou d'un système.

Les tests de bout en bout peuvent être très différents des autres méthodes de test logiciel. Dans le cadre d'un test du canari, par exemple, la méthode de test du code porte sur un produit déjà en production. Le nouveau code (correctifs ou mises à jour, par exemple) est fourni à un petit échantillon d'utilisateurs, à leur insu. Le test du canari permet à un développeur de procéder en permanence à des tests et d'apporter des modifications et des améliorations à un système tout en minimisant l'impact éventuel des failles ou des défauts. Si la nouvelle version fonctionne, la mise à jour peut alors être déployée à plus grande échelle.

Autre forme de test logiciel, les tests A/B, dits aussi split tests, permettent de tester deux versions d'un même logiciel en parallèle. Les utilisateurs peuvent exécuter l'une ou l'autre version afin de comparer les fonctionnalités, la stabilité et la performance du logiciel ainsi que d'autres caractéristiques.

Il existe encore d'autres formes de test, notamment les tests statiques et dynamiques. Les tests statiques consistent à examiner le code et la documentation d'un programme sans l'exécuter. Les tests dynamiques portent sur le programme en cours d'exécution et servent à valider les différentes sections du code.

Test de bout en bout ou test logiciel actuel ?

Les tests logiciels impliquent une exécution plus rapide de tests plus petits et reposent uniquement sur des méthodologies (test de bout en bout pour l'intégration finale et l'évaluation préliminaire). La pyramide des tests explique parfaitement à quel moment un test doit ou non être conduit.

Au bas de la pyramide, c'est-à-dire en tout début du développement d'un système, ont lieu les tests unitaires. De portée limitée, un test unitaire consiste à examiner de petits éléments du système ou du code ; il est beaucoup plus rapide et précis que le test de bout en bout. Si un bug est décelé dans le système global au cours d'un test de bout en bout, il peut se trouver n'importe où. Mais s'il est détecté dans le cadre d'un test unitaire, il faut beaucoup moins de temps pour le localiser et remédier au problème.

Au milieu de la pyramide des tests se trouve le test d'intégration dont le but est d'assurer le fonctionnement correct des différentes unités mises en jeu, avec un flux d'informations approprié. Le test d'intégration s'apparente au test de bout en bout vertical dans la façon qu'il a de tester la structure sous-jacente de l'interface utilisateur.

La pyramide des tests se termine en son sommet par un test de bout en bout a minima (ou test de l'interface utilisateur) au cours duquel le système dans sa globalité fait l'objet d'un test horizontal. Les scénarios bien gérés privilégient les tests unitaires, puis les complètent par des tests d'intégration pour finir par un test de bout en bout.

Inconvénients du test de bout en bout

En dépit des atouts qu'offrent les tests de bout en bout, ils ne sont plus couramment utilisés dans les tests logiciels. Les testeurs de logiciels sont toujours libres d'y recourir, mais force est de constater que cette pratique a été supplantée par d'autres méthodologies de test.

Aujourd'hui, les cycles de développement logiciel tendent à appliquer des principes de développement Agile comme DevOps, approche collaborative pour un développement logiciel plus rapide, les tests de bout en bout étant trop lents pour les méthodes Agile.

Cette définition a été mise à jour en août 2018

Pour approfondir sur Outils de développement