Automatisation des tests - les raisons de l'échec - intro

Les raisons de l’échec de l’automatisation des tests: Introduction

par Marc Hage Chahine | 15 février 2021

Agilitest fait équipe avec Marc Hage Chahine du blog La Taverne du Testeur pour explorer les raisons de l’échec de l’automatisation des tests: quelles sont-elles ? Comment les éviter? Et comment Agilitest peut vous permettre de surmonter ces obstacles et d’assurer une automatisation réussie? Bonne lecture!


Automatiser l’exécution de ses tests : une étape nécessaire

L’automatisation de l’exécution des tests est un sujet pointu qui est devenu quasiment incontournable avec le développement des méthodes incrémentales. La raison est simple, avec la démocratisation des méthodes incrémentales, et plus généralement des méthodes Agiles, les tests de régression sont de plus en plus nombreux et exécutés de plus en plus souvent. Le temps nécessaire à l’exécution manuelle des tests de régression devient très vite insoutenable pour toute équipe travaillant sur un produit développé de cette manière.

Le schéma ci-dessous permet de se faire une idée du nombre d’exécution nécessaires des tests :

Execution des tests en méthodes incrémentales : l’automatisation incontournable

La multiplication des exécutions et le temps pris par ces dernières poussent les équipes à automatiser leurs tests… et ce sans forcément avoir de l’expérience dans l’automatisation.

Ce manque d’expérience est la source de nombreux échecs dont les raisons sont variées. Il y a par exemple :

Le manque de maintenance

Concevoir, écrire ses tests et les exécuter une fois ne suffit pas. Le produit grandit et évolue au cours des différents développements. Ces différents développements engendrent des évolutions, des changements, des suppressions et des nouveautés. Un test qui était valide pour la version N ne l’est plus forcément à la version N+1, il est encore plus probable qu’il le soit plus à la version N+10. Les tests de régression doivent donc être maintenus pour continuer à être à jour.

Agilitest ne peut (pour l’instant) pas maintenir les tests pour vous. Par contre il propose de factoriser simplement vos tests pour limiter leur maintenance ! L’outil a été spécifiquement développé pour faciliter cette opération : changer un identifiant, rejouer un test de n’importe où action par action, mutualiser des sous-scripts.

Le manque d’analyse des tests après leur exécution

L’exécution des tests automatisés est souvent considérée comme gratuite. De nombreuses équipes en profitent pour tester aussi souvent que possible ce qui est une très bonne pratique. Néanmoins, même si l’exécution est gratuite, l’analyse des cas en échec ne l’est pas. La multiplication des exécutions peut rendre la charge d’analyse trop importante ce qui résulte par l’abandon de cette activité et rend donc l’exécution inutile.

Agilitest facilite l’analyse des tests en proposant des vidéos ATSV et des pdf pour analyser rapidement les causes « en condition de réalisation ».

Le manque de robustesse des tests

La robustesse des tests et leur fiabilité est prépondérante avec l’automatisation. En effet, quand un test est en échec il faut être sûr qu’il le soit (c’est également le cas lorsqu’il est en succès mais plus compliqué à détecter). Cette robustesse doit être proche des 100% car dès lors où ce n’est pas le cas. En effet, avoir une campagne de 100 tests fiable à 95% qui doivent tous être en succès comme dans une chaine d’intégration continue devient quasiment impossible.

Agilitest de par son système de vérification et de ciblage des objets,
vous aide à rendre vos tests plus robustes et permet de limiter fortement les flaky tests.

Des tests ne vérifiant pas ce qui est désiré

Ce problème vient du fait que les vérifications automatiques ne sont pas les vérifications humaines. Quelque chose qui fonctionne avec l’œil humain ne fonctionne pas forcément de manière automatique. Par exemple on ne peut pas recherche « Bus » dans une page où il y a également le mot « Busy ». 

Agilitest permet d’assurer l’unicité de ce qui est recherché et donc d’éviter de recherche quelque chose qui se retrouve plusieurs fois dans la page. L’utilisation des expressions régulières vous permettra d’identifier de façon formelle les éléments à vérifier. En dernier recours ou pour des besoins spécifiques, vous pourrez utiliser la reconnaissance graphique.

Le choix d’un outil non adapté

Selon les outils on ne peut pas faire la même chose. Certains outils sont adaptés à des technologies, certains outils permettent de faire certains types de test (performance, IHM, Webservices…), certains outils permettent d’utiliser certains composants… Le choix de l’outil est prépondérant car commencer à automatiser avec un outil et s’apercevoir ensuite qu’une action obligatoire n’est pas faisable avec ce dernier conduit à une grosse perte de temps, d’énergie et d’argent.

Agilitest est multi-canal sur de nombreuses technologies, avec la même façon de réaliser les tests pour chaque technologie.

Et comme nous savons que tous nos clients ont des besoins spécifiques, nous nous assurons qu’ils réussiront à réaliser les tests qu’ils souhaitent en produisant régulièrement de nouvelles fonctions à leur demande.

Un coût trop élevé de l’automatisation ou vouloir tout automatiser

Il ne faut pas oublier que l’automatisation est un investissement. Un investissement en temps et en argent. Dans certains cas seul le temps est pris en compte. Dans la grande majorité des cas on cherche surtout à gagner de l’argent à moyen terme. Pour assurer ce retour sur investissement il faut savoir ce qu’il est possible d’automatiser et de maintenir à un coût acceptable. Cela revient à faire des choix et ne pas tout automatiser afin de limiter le nombre de test à maintenir mais aussi limiter la complexité des tests automatisés.

Agilitest permet une grande productivité, et vous aidera à couvrir le plus de scénarios possibles sur votre application. Les livraisons n’en seront que plus facilitées.