Depuis quelques années, l’automatisation des tests séduit de plus en plus d’entreprises qui y voient un moyen d’accélérer la commercialisation de leurs produits et le déploiement de nouvelles fonctionnalités, tout en optimisant la productivité de leurs équipes techniques. Mais l’automatisation des tests fonctionnels a ses limites et c’est pourquoi les tests manuels ont encore un bel avenir devant eux.
Les tests manuels comme les tests fonctionnels automatisés possèdent leurs lots d’avantages et d’inconvénients, et le choix entre les deux dépend de plusieurs critères financiers, temporels, matériels ainsi que des exigences du projet. Dans cet article, nous allons tenter de différencier ces deux pratiques, tout en démontrant qu’il existe une complémentarité à ne pas mettre de côté.
Commençons par les tests manuels. Comme leur nom l’indique, ils sont exécutés manuellement, c’est-à-dire par un humain. Cet humain peut être un testeur, un chef de projet digital, un développeur, etc. Son rôle : se mettre à la place d’un utilisateur final pour effectuer chaque action et vérifier que tout se comporte conformément aux résultats attendus.
Dans les tests manuels, on trouve à la fois des tests guidés et des tests exploratoires. Dans le cas d’un test guidé, le scénario est écrit et un parcours est prédéfini en indiquant chaque étape à vérifier. Dans le cas d’un test exploratoire, l’idée est de partir à la découverte du produit comme un utilisateur final. Les actions ne sont pas prédéfinies et les vérifications sont réalisées spontanément. L’intérêt ici est de tester des scénarios auxquels on n’avait pas pensé.
Les tests fonctionnels automatisés sont quant à eux exécutés via des « robots », par le biais d’outils et/ou de logiciels et en suivant un cahier des charges arrêté et établi en amont.
Il existe plusieurs leviers d’automatisation. Le premier consiste à exécuter de manière automatique des actions prédéfinies, comme cliquer sur une page produit, l’ajouter dans son panier, se connecter à son compte, remplir ses informations de livraison et passer au paiement. Le second consiste à vérifier des fonctionnalités précises, qui ont un niveau de criticité plus ou moins élevé et qui peuvent avoir un impact direct sur l’entreprise. Dans les deux cas, l’objectif est de détecter des bugs éventuels afin de les corriger au plus vite.
Avant de choisir entre des tests manuels ou des tests automatisés dans son projet, il convient d’en lister les forces et les faiblesses.
Les tests manuels présentent notamment l’avantage de nécessiter peu de budget, de permettre des tests aléatoires et de garantir une expérience utilisateur optimale. Mais ils prennent plus de temps et ils ne sont pas aussi précis que les tests automatisés, car un humain peut faire des erreurs et cela les rend donc moins fiables qu’un robot. De plus, il n’est pas toujours possible de tester l’application sur différents systèmes d’exploitation.
A contrario, les tests fonctionnels automatisés présentent l’avantage d’offrir une exécution plus rapide, plus fréquente et à plus grande échelle. Ils peuvent être réalisés plus facilement sur différents systèmes d’exploitation, devices et navigateurs. Ils permettent d’améliorer le move-to-prod et de réduire le time to market, sont également plus fiables et la remontée des anomalies s’avère ainsi plus efficace.
Qui plus est, le développement des fonctionnalités technologiques permet d’automatiser de nouveaux parcours clients, tels que la comparaison graphique, le passage de clavier de sécurité numérique ou encore les tests via API.
Mais les tests fonctionnels automatisés demandent un investissement plus élevé et sont complexes à mettre en place. Ils ont également quelques limites. En effet, il n’est pas possible de tout automatiser. Par exemple, il est possible d’automatiser certains tests d’accessibilité, notamment au niveau de la vérification de la bonne présence des balises sur le code front, mais ils ne sont pas automatisables à 100 %. Les tests exploratoires, de par leur côté aléatoire, sont également difficilement automatisables sans recours à une IA capable de comprendre une application toute seule.
Les deux approches sont en réalité complémentaires. En effet, comme nous le disions dans notre article « Comment choisir ce que je dois automatiser », les tests fonctionnels automatisés, bien que plutôt aboutis, ne se suffisent pas à eux-mêmes pour apporter une évaluation complète et pertinente d’une application. Il est nécessaire de combiner les tests manuels et automatisés pour assurer la qualité des développements des applications web ou mobile et obtenir ainsi un retour sur investissement optimal !
Ainsi, il est plus intéressant d’automatiser des tests récurrents et répétitifs, ainsi que les tests fonctionnels qui concernent les parcours et les fonctionnalités critiques, ou encore ceux qui demandent d’être effectués sur plusieurs navigateurs et/ou devices. On peut également rajouter les tests de non régression, qui permettent de vérifier que les modifications apportées n’ont pas impacté les fonctionnalités précédemment existantes.
Mais certains tests ont besoin de rester manuels, car le fait qu’ils soient exécutés par un humain permet de repérer des choses qu’une machine ne verrait pas, notamment en ce qui concerne l’ergonomie, l’accessibilité, etc. Et, comme nous le disions plus haut, les tests exploratoires sont plus fiables lorsqu’ils sont faits manuellement.
En conclusion, l’objectif que vous devriez avoir si vous visez l’industrialisation de votre activité de testing est l’automatisation de l’ensemble des tests récurrents et des tests de non régression, afin que l’effort de test manuel soit uniquement consacré à la validation de nouvelles fonctionnalités.
Et vous, quelle est votre réflexion sur le sujet ? Dites-le nous en commentaires !