Automatisation des tests Vers l’industrialisation
La montée en puissance des méthodes agiles dans le monde des développeurs s’accompagne aussi de l’automatisation de la phase de tests pour assurer la qualité des livrables dans un cycle continu d’intégration et de déploiement. Cette automatisation est souvent une première étape vers une industrialisation des tests.
L’ automatisation des tests logiciels est un secteur dynamique qui connaît une croissance importante. Le cabinet Industryarc estime sa croissance à 16 % par an jusqu’en 2025 pour un marché d’un montant de 31 milliards de dollars. L’institut Marketsandmarkets voit la même tendance. En 2019 le marché s’étalonnait à 12,6 milliards de dollars pour atteindre 28,8 milliards en 2024 avec une croissance encore plus forte de 18 % par an dans la période 2020/ 2024.
Sans surprise l’amérique du Nord est le plus grand consommateur de solutions d’automatisation des tests logiciels et représente plus du tiers du marché. La zone Asie- Pacifique est cependant celle qui connaît la croissance la plus forte. La zone Europe semble avoir moins d’appétence pour ce genre de solution malgré la montée en puissance des méthodes de développements agiles et de l’introduction de la culture Devops dans les entreprises. L’écart devrait cependant se combler dans les années à venir pour des raisons de productivité, de rattrapage par la transformation numérique des entreprises et des usages. D’ailleurs le cabinet Marketsandmarkets indique que cela sera le segment des entreprises de
moins de mille personnes qui sera le secteur qui croîtra le plus rapidement durant la période. Malgré un coût initial important ces entreprises semblent voir les outils d’automatisation des tests logiciels comme un investissement à long terme. Le secteur d’activité le plus utilisateur de ce type de solution est la distribution, un secteur engagé depuis plusieurs années déjà dans une numérisation et une diversification à partir d’un modèle physique vers des possibilités de vente en ligne. Deux tendances fortes se distinguent sur le marché des plates- formes d’automatisation des tests. Le Cloud et l’intégration de fonctions d’apprentissage machine ou d’intelligence artificielle s’immiscent dans de nombreux produits. Les PME et les start- up sont attirées par les outils dans le Cloud à la fois pour éviter un coût trop important mais aussi pour profiter des avantages habituels de ce type d’environnement : l’agilité et la possibilité de mise au niveau des besoins sans avoir à maintenir les infrastructures sous- jacentes nécessaires. L’apport de l’apprentissage machine ou de l’intelligence artificielle simplifie l’utilisation des plates- formes dans le Cloud. Cela permet aussi de combler un manque de spécialistes. Toutefois, ce manque de spécialistes peut freiner les entreprises dans leur adoption au moment de définir le choix des bons outils et la portée de l’automatisation. Le nombre d’outils et de plates- formes est important et se distingue entre plate- forme globale et outils spécialisés pour tel ou tel test : non- régression, unitaire, de charge, de sécurité ( vulnérabilités), de revue de code…
Quelle place pour les testeurs ?
Dans la dernière étude en date du Comité français des tests logiciels ( CFTL), les testeurs sont désormais de plus en plus intégrés dans les équipes de développement ( 55 %). Ce pourcentage est de 64 % dans les équipes utilisant des méthodes agiles. Les équipes indépendantes pour réaliser les tests ne sont plus que 23 %. On voit d’ailleurs apparaître un nouveau rôle : le testeur agile. Seuls 5,5 % des testeurs interrogés estiment que le pourcentage d’automatisation du patrimoine de test est au- delà de 75 %. De plus, la plupart des testeurs interrogés constatent l’obsolescence des référentiels de tests. Les cas de tests sont assez mis à jour et ne suivent pas véritablement l’évolution des applications ou sont incomplets ou introduisent des redondances dans les tests.
Un sondage réalisé entre mai et juin auprès de 226 personnes pour un site web spécialisé sur les problématiques du test montre que le métier de testeur est bien considéré. La très forte majorité des personnes interrogées n’ont eu un contact avec le monde du test qu’après leur formation. Seul un cinquième des étudiants entendent parler du test dans leur cursus. La plupart commencent à s’y atteler lors de leur stage ou dans leur premier emploi.
Pourquoi automatiser ?
Les tests ne le cachons pas sont une tâche fastidieuse et souvent répétitive. L’automatisation a pour but premier de réaliser ces opérations répétitives et souvent sans véritable valeur ajoutée. Elle apporte un gain de productivité et permet de raccourcir le cycle de tests. C’est du temps retrouvé pour continuer d’améliorer la qualité des livrables. Elle élimine les « erreurs humaines » ou les « oublis » que peuvent avoir les
informaticiens en charge des tests. Anders Wallgren, vice- président en charge de la Stratégie technologique chez Cloudbees, précise que « L’automatisation est importante car elle gomme l’aspect humain et évite les erreurs qu’ils peuvent faire, dont la possibilité d’oublier qui a deux aspects, celui de ne pas faire un test ou celui de le faire ! » Les résultats obtenus sont plus précis et évitent les erreurs qui peuvent intervenir dans la répétition des tests manuels. L’automatisation étend le champ pour le testeur et permet de tester plus et donc d’avoir une couverture de tests plus large ce qui améliore la qualité. Cette qualité augmente la satisfaction client. L’ensemble a un impact sur le chiffre d’affaires de l’entreprise : diminution des coûts liés aux tests, amélioration de la qualité des livrables, augmentation de la notoriété de votre marque, diminution des coûts de développement.
Le plus souvent ce sont les tests de non- régression, de charge, certains tests manuels qui entrent dans le cadre de l’automatisation. Édouard Viot, Head of Product Management, chez Rohde & Schwartz, un éditeur de solutions de sécurité indique que « Le plus important est ainsi d’avoir des releases plus fréquentes et de raccourcir le cycle d’adoption en prenant en compte les retours des clients. Dans notre entreprise cela a été très important dans notre propre transformation numérique car notre but est bien sûr de satisfaire le client » . Anders Wallgren s’accorde parfaitement : « Il est important que les retours soient rapides vers les équipes de développement. »
L’automatisation demande une approche organisée. Les tests automatisés obligent les développeurs à répondre à certaines questions beaucoup plus tôt, ce qui leur permet d’éviter de perdre du temps à travailler sur la « mauvaise » voie. Anders Wallgren explique : « Il faut tester le plus tôt possible dans le processus, souvent partout où c’est possible et ensuite automatiser. » Les logiciels évoluent et grandissent. Il devient alors difficile d’ajouter ou de modifier les fonctionnalités du fait des interdépendances. Les tests automatisés mettent en évidence toutes ces interdépendances et vous obligent à réfléchir à la façon d’intégrer une nouvelle fonctionnalité. Sans tests, ces liens restent souvent cachés, ce qui augmente le risque qu’une nouvelle fonctionnalité détruise une interdépendance existante. Le facteur temps est certainement le plus important. Si vous comptez le temps d’écriture du scénario de test et de son exécution, l’automatisation fera que vous écrirez le scénario une fois et que son exécution prendra ensuite toujours le même temps que vous le fassiez 10 fois, 100 fois… Dans une procédure manuelle, vous allez réécrire souvent ce script et le temps d’exécution sera là aussi toujours le même. A partir du dixième test le temps consommé entre les deux procédures est égal. Au centième test, le temps est réduit de moitié par l’automatisation comparativement au processus manuel
Des compromis à faire
Deux éléments sont importants : on ne peut pas tout automatiser dans les tests et une automatisation complète peut être très coûteuse sans apporter de réel retour sur investissement. S’il est vrai que plus de tests sont effectués et plus on augmente la qualité du logiciel il est possible de ne trouver un bug que dans un scénario qui nécessite des centaines de tests. Trop de tests peut ainsi devenir un frein dans le cycle de développement. En partant de là il faut identifier les tests à effectuer manuellement et ceux qui sont automatisables. Le plus souvent les tests se concentrent sur les points les plus importants et les configurations les plus communes. Techniquement il s’agit de réaliser les 20 % de tests qui vont couvrir 80 % des fonctionnalités dont les plus critiques. Si 80 % des tests peuvent être automatisés avec 20 % de l’effort de conception total. On peut aussi accepter que 20 % des tests ne soient pas automatisés, car ils représentent 80 % de l’effort. Édouard Viot ajoute que « Si on devait faire tous les tests on ne sortirait jamais de logiciels. S’il fallait analyser toutes les dépendances ou corriger toutes les vulnérabilités, le temps que je les corrige, j’entrerais dans un cycle de boucles qui n’en finirait jamais. Il faut respecter les principes de bases des tests mais accepter un certain risque résiduel. »
Une nouvelle culture émerge
L’arrivée des méthodes agiles de développement et le Devops infusent une nouvelle culture favorable à l’automatisation. Cette culture s’appuie sur la collaboration entre les développeurs et les équipes opérationnelles. Andreas Golze, dans un article paru chez notre confrère du MAGIT, ajoute : « Le Devops impose un changement de culture indispensable afin de parvenir à un équilibre entre la perception actuelle de l’entreprise par le marché et la façon dont celle- ci envisage son avenir » . Selon lui cela permet également « d’assurer un alignement plus efficace des équipes de développement, de test et d’exploitation, en améliorant la communication, la collaboration et l’intégration » . Le plus souvent, la première étape de la mise en place de cette nouvelle
culture passe par le test en continu. Il instaure un retour systématique à chaque étape et active automatiquement la suite du processus si les indicateurs sont bons. Anders Wallgren précise : « Le développeur full stack est un mythe, c’est l’équipe qui est full stack car elle réunit l’ensemble des compétences nécessaires pour la réussite du projet. »
L’industrialisation des tests, à l’image de ce qu’est l’industrialisation dans d’autres secteurs, vise à continuellement améliorer la manière de réaliser les tests. Le principe est de dupliquer le gain de productivité en s’inspirant des méthodes d’industrialisation en les appliquant et adaptant aux métiers de l’informatique. Ce processus d’industrialisation doit se mettre en place dès le début d’un projet ou d’une idée pour éviter de refaire plusieurs fois la même chose, de s’adapter et de trouver le bon équilibre entre moyen et résultats en utilisant les méthodes les plus performantes pour l’échelle de votre projet. À la fin l’idée est de se reposer sur une « usine à tests » qui permet une harmonisation de tous les éléments liés aux activités de tests pour autoriser une large réutilisation entre les différentes parties prenantes dont le client final. L’usine n’exclut pas l’automatisation mais repose sur elle en ajoutant souvent des briques cognitives et analytiques. Capgemini décrit sa solution de Smart QA avec des composants de tests qui se supervisent et s’adaptent seuls en fonction de l’environnement. Chaque élément a une API ouverte pour se connecter aux autres éléments de l’écosystème. Ces éléments peuvent être des cas de tests, un environnement de test, des données ou des stratégies de tests. Chaque élément s’intègre intelligemment avec les autres éléments pour, par exemple, requérir l’environnement nécessaire ou le jeu de données pour l’exécution du test. De la même manière la solution est capable de définir le type et le nombre de tests à effectuer. L’analytique apporte là le contexte et l’intelligence dans l’effort de test et permet de s’appuyer sur l’expérience passée pour prioriser, identifier les tests là où des améliorations sont à apporter. La plate- forme se décompose en micro- services et chaque partie de la plate- forme peut être souscrite sous forme de service. Ce type d’industrialisation requiert une maturité et une expertise dans le test mais elle représente certainement la voie d’avenir dans l’automatisation totale du test logiciel. ✖