Cette page vise à donner un tour d’horizon de ce pan passionnant de la qualité logicielle, que nous avons à cœur de promouvoir à sa juste place. Un grand nombre de trésors, mais aussi d’embûches et d’impasses jalonnent le parcours de l’automatisation des tests : ayons-les en tête à tout moment !
Pourquoi automatiser les tests ?
L’automatisation des tests a maintenant une place importante dans les pratiques de test. Cependant, on n’automatise pas toujours pour les mêmes raisons. Il est utile de définir dans chaque contexte particulier le « Pourquoi » de l’automatisation.
Mais d’ailleurs, pourquoi teste-t-on tout court ?
Le pourquoi de l’automatisation des tests peut logiquement faire écho au pourquoi de votre démarche de test en général. Quel est votre but premier ? Réduire vos coûts en support ? Maintenir votre nombre d’utilisateurs ? Assurer un service accessible à tous ? Améliorer les notes que vous recevez sur Google Play ? Non, vous ne testerez pas pareil en fonction des objectifs que vous vous fixez. Et vous n’automatiserez pas pareil non plus !
Un boost d’efficacité
L’automatisation des tests porte une double promesse. D’un côté, on vise à réduire la durée des tests, et de l’autre on vise une plus large couverture. A durée égale, on teste davantage ; à périmètre égal, on teste plus rapidement.
En pratique, ces deux avantages sont visés conjointement.
Un boost de motivation
Le sentiment d’ennui de vos collaborateurs rejouant pour la 100ème fois la même campagne de tests de régression est à prendre au sérieux. C’est une composante avec laquelle vous devez compter au quotidien. Plus le sentiment d’ennui est fort :
- Plus les tests sont longs à jouer, car les personnes traînent les pieds. C’est humain !
- Plus les régressions passent inaperçues : le regard est émoussé, difficile de tester comme si c’était la première fois.
- Plus le niveau de motivation général est impacté, ce qui peut faire tache d’huile sur d’autres projets.
L’automatisation des tests n’est donc pas seulement utile pour assurer la qualité des logiciels. C’est également une manière de soulager les personnes mobilisées sur des tests répétitifs et fastidieux, et d’améliorer leur qualité de vie au travail.
Avantages collatéraux
L’automatisation des tests apporte des gains auxquels on ne pense pas forcément au moment où on initie cette démarche. Il est cependant intéressant de les avoir en tête pour favoriser leurs effets positifs !
Une documentation vivante
Un bel avantage auquel on pense trop peu souvent : les tests automatisés sont une documentation à part entière ! Ils permettent d’attester qu’il y a 6 mois, tel élément discret était attendu à tel moment sur telle page. Si cette approche vous parle, alors la démarche BDD vous séduira encore plus.
Une transparence accrue
Le World Quality Report de 2020 indique également que 63 % des entreprises interrogées trouvent que l’automatisation rend les activités de test plus transparentes. En effet, une plateforme partagée permettant à tous la consultation des résultats des tests automatisés apporte de la confiance dans le produit et est susceptible de générer d’intéressants échanges entre parties prenantes.
De nouvelles occasions de trouver des bugs
Quand on automatise les tests, on porte un regard un peu différent sur l’application à tester. On ne passe pas forcément par le même chemin qu’en temps normal, on ne fouine pas aux mêmes endroits. Résultat : pendant qu’on écrit les scripts, on trouve de nouveaux bugs !
Quels tests faut-il automatiser ?
Pour répondre à cette question, il faut s’en poser plusieurs autres :
- Quels scénarios de test sont indispensables pour se faire une idée de la qualité de l’applicatif ?
- Quels scénarios nous prennent le plus de temps ?
- Quels scénarios sont automatisables ? Ou, pour éviter un débat peu fructueux, quels scénarios sont automatisables au prix d’un effort pouvant être rentabilisé ?
- Quels tests nous seraient utiles et ne peuvent être joués qu’automatiquement ? (Hé oui, il y en a ! Pensez aux tests de charge, aux outils de qualimétrie, aux scans de vulnérabilité…)
Les tests fonctionnels aussi bien que les tests non-fonctionnels peuvent donner lieu à des tests automatisés.
Quand faut-il automatiser les tests ?
Cette question de la temporalité est prise en tenaille entre deux risques :
Automatiser trop tard
C’est le risque le plus grave. Automatiser à un stade avancé du projet réduit le nombre de fois que les tests automatisés seront exécutés. On perd du coup une partie de leur ROI. La plupart du temps, le but du jeu, c’est d’automatiser suffisamment tôt pour augmenter le nombre de leurs exécutions !
Attention toutefois : certains tests seront rentabilisés dès leur première exécution (pensons par exemple à des scripts utilisant des dizaines ou des centaines de jeux de données différents). La question de la récurrence de l’exécution est une heuristique intéressante, mais ce n’est pas la seule.
Automatiser des tests sur une application trop instable
Ce risque peut être modéré par l’architecture du projet de test. L’utilisation du design pattern du Page Object Model par exemple permet d’avoir des tests automatisés robustes et faciles à maintenir, même si l’application à tester subit d’importants changements d’interface.
Qui doit automatiser les tests ?
Une question qui en cache d’autres
Cette question est importante mais a tendance à faire de l’ombre à d’autres questions tout aussi importantes (hé oui, encore une question en forme de poupée russe !) :
- Qui va bénéficier de l’automatisation des tests ?
- Qui va lancer les campagnes de tests automatisés ?
- Qui va analyser les résultats?
- Qui va lire les reportings?
En négligeant ces questions, on risque d’initier un projet sous-terrain… et qui le restera. Il est important de réfléchir à l’écosystème social que vous voulez tisser autour des tests automatisés.
Les tests automatisés peuvent être écrits par l’équipe de test interne, ou être externalisés. Dans le dernier cas, pensez à long terme : qui va maintenir les tests automatisés ? Un contrat de tierce recette applicative (TRA) peut avantageusement encadrer une collaboration à long terme ; vous pouvez également envisager de maintenir les tests en interne et de solliciter une formation pour ce faire auprès de votre prestataire.
Les tests automatisés : un problème de testeur ou de développeur ?
Cette question revient à se demander : vaut-il mieux un bon qualiticien avec une belle base technique, ou un bon développeur avec une grosse affinité QA ?
En termes de technique, il est évidemment préférable que la personne soit autonome : l’automatisation des tests promet quelques challenges. En revanche, pas la peine d’être un développeur senior pour mettre en place un projet de test automatisé, les frameworks sont en général tout à fait accessibles à des personnes ayant un niveau basique ou intermédiaire en développement. Il existe même des outils codeless ; attention cependant à veiller à ce qu’ils puissent répondre à tous les besoins, car par design il ne sera pas possible d’implémenter soi-même les solutions voulues.
L’automatisation, c’est seulement pour les projets en mode agile ?
L’automatisation des tests est une pratique qui s’est imposée dans tous types de projets et a fait ses preuves dans un grand nombre de contextes. Il est parfaitement judicieux d’envisager l’automatisation au sein d’un projet agile (notamment en contexte Scrum), de même qu’au sein de projets utilisant d’autres méthodologies. Les modalités ne seront pas forcément les mêmes, mais comme on l’a vu, quel que soit le type de projet, on ne se lance pas tête baissée dans l’automatisation !
Les outils de tests automatisés
Ces outils sont à ce jour très nombreux.
Les outils de test fonctionnel dynamique
Les outils de test fonctionnel dynamiques « imitent » des personnes, interagissant avec les interfaces. Un tel outil peut ouvrir un navigateur, cliquer sur des boutons, récupérer des informations sur l’écran pour permettre ensuite la vérification du fonctionnement.
On peut citer par exemple Selenium, Playwright, Cypress, RobotFramework, UFT…
Les tests d’API, rapides et fiables
Les tests d’API sont plus rapides à exécuter que des tests automatisés d’UI. Ils forment donc un socle avantageux et permettent d’assurer un premier niveau de qualité. SOAPUI, ainsi que Postman, sont des outils ayant fait leurs preuves en la matière.
Postman est un outil qui permet de tester les APIs.
Les outils de tests non fonctionnels
Tests de performance et de charge
Attention, les tests de performance et les tests de charge ce n’est pas la même chose ! En revanche, force est de constater que les outils utilisés pour réaliser ces deux types de test sont souvent les mêmes. C’est le cas par exemple de JMeter, ou encore de Gatling.
Tests de sécurité
Certains tests de sécurité peuvent être automatisés. C’est le cas, par nature, des scans de vulnérabilité. Leur efficacité ne vous garantit pas une couverture de tous les risques de sécurité (les pentests « manuels » restent indispensables), mais ils ont l’avantage de pouvoir être utilisés par tous, que l’on ait ou non une expertise en sécurité.
Qualimétrie
La qualité de code peut être évaluée grâce à des scans automatisés. SonarQube est certainement l’outil le plus connu et le plus utilisé dans cette optique. Il permet de définir des règles qui peuvent ensuite être diffusées en direct dans l’IDE des développeurs via un linter nommé SonarLint. Il est possible également de diffuser les commentaires de SonarQube sur Gitlab, ce qui permet de donner une plus forte visibilité aux scans.
Bonnes pratiques de tests automatisés
Les bonnes pratiques de tests automatisés sont pour la plupart « agnostiques » en termes d’outil. Enfin, sauf si on considère qu’un cerveau bien vitaminé est un outil !
Avoir une stratégie claire
Les tests automatisés font parfois l’objet d’attentes démesurées. Prenez d’abord bien conscience de ce qu’implique un projet d’automatisation des tests. C’est un investissement sur la durée qui a de bonne chances de s’avérer profitable, à condition de bien garder à l’esprit :
- la nécessité d’une stratégie ad hoc: on n’automatise jamais tout, le choix des scénarios à automatiser est de la plus haute importance.
- l’importance d’une bonne conception, gage de coûts de maintenance maîtrisés.
- les coûts inévitables (bien que modérés) d’analyse des résultats et de maintenance.
Prenez également le temps d’étudier la représentation que chacun se fait des tests automatisés. Cela s’avèrera utile notamment pour aligner les attentes de chacun.
Assurer la clarté des logs
La qualité des logs est un point trop souvent négligé. Pensez dès le début aux logs que vous souhaitez lire au quotidien, car c’est ce qui va se passer ! Un projet d’automatisation, comme tout projet de développement, c’est d’abord beaucoup d’écriture… puis beaucoup de lecture de code et de logs.
En bref, soigner ses logs, c’est préparer de bonnes journées à son « moi futur » !
Le plus beau cadeau que vous puissiez offrir à vos équipes (et à vous-mêmes), c’est des logs en langage naturel. Pourquoi ? Parce que tout le monde les comprend, que ça permet de reproduire facilement une anomalie, et que ça fait gagner un temps fou en maintenance. Cela peut être mis en place très simplement par exemple avec Selenium.
Mettre en place une veille technologique
Le domaine de l’automatisation des tests étant en constante évolution, une veille soutenue et exigeante sur ces technologies est nécessaire pour être au courant des dernières innovations. Une astuce simple pour un premier niveau d’information : surveiller les derniers cours qui paraissent sur Test Automation University ! Ce site, paru en 2019, est une mine d’or. Il permet de se former gratuitement à un très large panel d’outils de test. Attention simplement, les derniers cours mis en lignes datent de la fin de l’année 2023.
Connaître les émotions liées à l’automatisation des tests
Pratiquer l’automatisation des tests ne signifie pas se transformer en robot dénué d’émotions ! Au contraire, ce périple est semé de moments hauts en couleurs. On a fait le point dans cet article, et vous verrez qu’il sent le vécu… Quoi qu’il en soit, un QA averti en vaut deux, et nous espérons que ce modeste article vous aidera à prendre du recul à certains instants critiques.
Obtenir une certification en automatisation des tests
Les certifications, au-delà de valoriser les connaissances, permettent de s’assurer que l’on progresse dans les règles de l’art. La certification A4Q Selenium Tester permet par exemple de cimenter ses connaissances vis-à-vis du framework du même nom, tout en donnant de précieux conseils généraux sur l’automatisation des tests. Sur notre site, nous proposons un test blanc A4Q Selenium Tester, ainsi que des informations concernant le contenu de cette certification.
Vous voulez rester au courant des dernières nouveautés du monde de l’automatisation des tests ? Découvrez également notre blog !
A bientôt !