Automatisation des tests en bref
Qu’est-ce qu’un test automatisé ?
Cette question peut paraître banale pour plusieurs, mais il est important de bien définir le composant central autour duquel gravitent tous les autres éléments des techniques d’automatisation des tests.
L’expression « test automatisé » associe deux termes, « test » et « automatisé », dont la combinaison reflète une pratique clé du domaine des tests logiciels. Selon le dictionnaire Le Robert, un test est une épreuve servant à vérifier et à éprouver les aptitudes, les connaissances, les qualités de quelqu’un ou de quelque chose. Si on veut relier chaque élément de cette définition à son équivalent dans le monde professionnel des tests, voici le résultat :
-
« une épreuve » : il s’agit généralement, d’une simulation du comportement d’un utilisateur final. Cependant, un test ne se limite pas à la simulation du comportement d’un utilisateur. Il peut également simuler le comportement d’un composant système dans le cas des tests d’intégration, ou d’un bout de code dans le cas des tests unitaires. Sauf que l’automatisation de ces deux derniers types de tests ne fait pas l’objet...
Quels sont les types de tests à automatiser ?
Il est tout d’abord très important de faire la différence entre un type de test et un niveau de test. Un type de test se concentre sur ce qui est testé avec l’objectif de valider un aspect précis du système : fonctionnel, performance, sécurité, etc. Alors que le niveau de test se concentre sur la phase du développement du projet.
Par exemple, dans la phase des tests unitaires, le niveau de test concerné est celui des unités de code individuelles. À ce niveau, on retrouve principalement des tests fonctionnels pour s’assurer du bon fonctionnement des unités de code, mais il est également possible de mettre en place d’autres types de tests, comme les tests de sécurité, afin de vérifier que ces unités de code n’introduisent aucune vulnérabilité, ou des tests de performance pour évaluer leur temps de réponse.
Il existe un autre type de test auquel on s’intéressera particulièrement, qui est le test de régression. La particularité de ce type de tests c’est qu’il peut être présent dans tous les niveaux de tests, et inclure aussi tous les autres types de tests. Voici un schéma illustrant la position des tests de régression parmi tous les niveaux et les autres types de tests.

Position...
Quand automatiser ?
La décision de mettre en place un projet d’automatisation des tests doit être mûrement réfléchie et étudiée. Cette décision va être impactée par deux paramètres majeurs : le contexte du projet et de l’entreprise, ainsi que l’état du logiciel à tester.
Le contexte du projet et de l’entreprise est représenté par les méthodologies adoptées pour le développement logiciel. Les techniques de tests changent d’une méthodologie à une autre. Dans une approche classique type cycle en V, où il est question de prévoir un temps important pour le développement d’une version majeure puis un temps pour la tester, la décision d’adopter l’automatisation doit être bien étudiée et appuyer par, au moins, un calcul du ROI. Ce dernier doit clairement montrer que l’effort fourni pour l’automatisation des tests est moins important que celui fourni pour les tests manuels.
Dans une approche plus moderne comme l’agilité et le DevOps, la question du calcul du ROI se pose peu. Ces approches reposent sur le développement et les tests continus afin de livrer des versions fonctionnelles rapidement. La place de l’automatisation des tests dans ce contexte est indiscutablement essentielle.
Le deuxième paramètre...
Limites de l’automatisation des tests
Bien que l’automatisation des tests représente un levier important pour améliorer l’efficacité et la rapidité des processus de validation, elle n’est pas sans limites. Certains scénarios ne se prêtent pas à cette approche. Les tests exploratoires, par exemple, requièrent une interaction humaine pour parcourir une application de manière imprévue, sans script prédéfini. Ces tests permettent de découvrir des bugs ou des comportements inattendus, notamment lors des phases initiales du développement ou lorsque l’on cherche à comprendre en détail l’expérience utilisateur. Dans ce contexte, l’adaptabilité et la créativité du testeur humain sont irremplaçables.
L’évaluation de l’interface utilisateur pour des critères visuels, tels que la mise en page, les couleurs ou la qualité des images, constitue un autre domaine où l’automatisation atteint ses limites. Bien que des outils puissent détecter certaines différences visuelles, ils peinent souvent à saisir l’intention esthétique humaine, comme le bon alignement ou l’harmonie globale de l’interface. Une intervention manuelle reste alors nécessaire.
L’ergonomie ou l’expérience utilisateur, aspects subjectifs...
Calcul du ROI
Le calcul du ROI de l’automatisation des tests par rapport aux tests manuels est une question fréquente en milieu professionnel. Comme évoqué dans la section Quand automatiser ? de ce chapitre, certaines approches, notamment en DevOps, posent l’automatisation comme une nécessité évidente. En effet, le besoin d’intégrer des tests en continu dans le processus de développement rend la mesure du ROI secondaire, car il est clair que seule l’automatisation permet d’atteindre le rythme soutenu exigé par le DevOps, ce que les tests manuels ne peuvent garantir. Cependant, quel que soit le contexte, il est souvent nécessaire de présenter des données chiffrées pour illustrer l’avantage de l’automatisation face aux tests manuels.
Le ROI peut se décliner selon plusieurs axes. Par exemple, un ROI orienté temps se focalise exclusivement sur le gain de temps obtenu, tandis qu’un ROI orienté qualité peut mesurer la satisfaction du client, sans nécessairement prendre en compte le temps investi pour atteindre cette qualité. Cette section se concentre sur une méthode pour calculer le ROI en fonction du temps, car le ROI lié à la qualité est plus complexe à mesurer et dépend fortement du secteur d’activité et du contexte métier.
Dans les paragraphes suivants, le terme « recette » fera référence à un ensemble de tests couvrant une fonctionnalité ou une phase de validation d’un logiciel.
Pour ce calcul, une formule simple, mais efficace est utilisée, permettant d’estimer les gains de l’automatisation par rapport aux tests manuels :
La formule est la suivante : R=X+n×Y.
-
R représente le coût total d’une recette. Dans ce contexte, l’objectif est de comparer les coûts associés à une recette manuelle et à une recette automatisée pour évaluer le gain de l’automatisation.
-
X représente le coût de conception des tests, soit le temps et les ressources investis pour créer les tests, qu’ils soient manuels ou automatisés.
-
n indique le nombre de fois qu’une recette sera exécutée au cours du cycle de vie du projet, un paramètre...
Résumé
Ce chapitre introduit les concepts clés de l’automatisation des tests, en débutant par une définition précise de ce qu’est un test automatisé, ses objectifs et sa mise en œuvre dans le processus de validation. Les types de tests les plus propices à l’automatisation sont ensuite identifiés, en mettant l’accent sur ceux qui apportent le plus de valeur ajoutée, tels que les tests de non-régressions, qui profitent d’une exécution répétitive.
Ce chapitre analyse également les moments propices pour intégrer l’automatisation dans un projet, notamment dans des environnements de développement rapides, comme DevOps, où l’automatisation soutient les pratiques d’intégration et de tests continus. Les limites de l’automatisation sont abordées pour montrer qu’elle n’est pas une solution universelle : certaines situations, telles que les tests exploratoires ou les validations visuelles, requièrent l’intervention d’un testeur humain pour capturer des aspects subjectifs.
Enfin, une méthode de calcul du retour sur investissement (ROI) est proposée pour évaluer la rentabilité de l’automatisation des tests en fonction du temps et des ressources économisées par rapport aux tests manuels. Cette approche permet...