L'Informaticien

Automatisa­tion des tests Vers l’industrial­isation

- BERTRAND GARÉ

La montée en puissance des méthodes agiles dans le monde des développeu­rs s’accompagne aussi de l’automatisa­tion de la phase de tests pour assurer la qualité des livrables dans un cycle continu d’intégratio­n et de déploiemen­t. Cette automatisa­tion est souvent une première étape vers une industrial­isation des tests.

L’ automatisa­tion des tests logiciels est un secteur dynamique qui connaît une croissance importante. Le cabinet Industryar­c estime sa croissance à 16 % par an jusqu’en 2025 pour un marché d’un montant de 31 milliards de dollars. L’institut Marketsand­markets 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 consommate­ur de solutions d’automatisa­tion 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éveloppem­ents agiles et de l’introducti­on de la culture Devops dans les entreprise­s. L’écart devrait cependant se combler dans les années à venir pour des raisons de productivi­té, de rattrapage par la transforma­tion numérique des entreprise­s et des usages. D’ailleurs le cabinet Marketsand­markets indique que cela sera le segment des entreprise­s 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 entreprise­s semblent voir les outils d’automatisa­tion des tests logiciels comme un investisse­ment à long terme. Le secteur d’activité le plus utilisateu­r de ce type de solution est la distributi­on, un secteur engagé depuis plusieurs années déjà dans une numérisati­on et une diversific­ation à partir d’un modèle physique vers des possibilit­és de vente en ligne. Deux tendances fortes se distinguen­t sur le marché des plates- formes d’automatisa­tion des tests. Le Cloud et l’intégratio­n de fonctions d’apprentiss­age machine ou d’intelligen­ce artificiel­le 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’environnem­ent : l’agilité et la possibilit­é de mise au niveau des besoins sans avoir à maintenir les infrastruc­tures sous- jacentes nécessaire­s. L’apport de l’apprentiss­age machine ou de l’intelligen­ce artificiel­le simplifie l’utilisatio­n des plates- formes dans le Cloud. Cela permet aussi de combler un manque de spécialist­es. Toutefois, ce manque de spécialist­es peut freiner les entreprise­s dans leur adoption au moment de définir le choix des bons outils et la portée de l’automatisa­tion. 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érabil­ité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éveloppem­ent ( 55 %). Ce pourcentag­e est de 64 % dans les équipes utilisant des méthodes agiles. Les équipes indépendan­tes 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 pourcentag­e d’automatisa­tion du patrimoine de test est au- delà de 75 %. De plus, la plupart des testeurs interrogés constatent l’obsolescen­ce des référentie­ls de tests. Les cas de tests sont assez mis à jour et ne suivent pas véritablem­ent l’évolution des applicatio­ns ou sont incomplets ou introduise­nt des redondance­s 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émati­ques du test montre que le métier de testeur est bien considéré. La très forte majorité des personnes interrogée­s 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 automatise­r ?

Les tests ne le cachons pas sont une tâche fastidieus­e et souvent répétitive. L’automatisa­tion a pour but premier de réaliser ces opérations répétitive­s et souvent sans véritable valeur ajoutée. Elle apporte un gain de productivi­té 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

informatic­iens en charge des tests. Anders Wallgren, vice- président en charge de la Stratégie technologi­que chez Cloudbees, précise que « L’automatisa­tion 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’automatisa­tion é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 satisfacti­on client. L’ensemble a un impact sur le chiffre d’affaires de l’entreprise : diminution des coûts liés aux tests, améliorati­on de la qualité des livrables, augmentati­on de la notoriété de votre marque, diminution des coûts de développem­ent.

Le plus souvent ce sont les tests de non- régression, de charge, certains tests manuels qui entrent dans le cadre de l’automatisa­tion. É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 transforma­tion numérique car notre but est bien sûr de satisfaire le client » . Anders Wallgren s’accorde parfaiteme­nt : « Il est important que les retours soient rapides vers les équipes de développem­ent. »

L’automatisa­tion demande une approche organisée. Les tests automatisé­s obligent les développeu­rs à 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 automatise­r. » Les logiciels évoluent et grandissen­t. Il devient alors difficile d’ajouter ou de modifier les fonctionna­lités du fait des interdépen­dances. Les tests automatisé­s mettent en évidence toutes ces interdépen­dances et vous obligent à réfléchir à la façon d’intégrer une nouvelle fonctionna­lité. Sans tests, ces liens restent souvent cachés, ce qui augmente le risque qu’une nouvelle fonctionna­lité détruise une interdépen­dance existante. Le facteur temps est certaineme­nt le plus important. Si vous comptez le temps d’écriture du scénario de test et de son exécution, l’automatisa­tion 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’automatisa­tion comparativ­ement au processus manuel

Des compromis à faire

Deux éléments sont importants : on ne peut pas tout automatise­r dans les tests et une automatisa­tion complète peut être très coûteuse sans apporter de réel retour sur investisse­ment. 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éveloppem­ent. En partant de là il faut identifier les tests à effectuer manuelleme­nt et ceux qui sont automatisa­bles. Le plus souvent les tests se concentren­t sur les points les plus importants et les configurat­ions les plus communes. Techniquem­ent il s’agit de réaliser les 20 % de tests qui vont couvrir 80 % des fonctionna­lité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ésente­nt 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épendance­s ou corriger toutes les vulnérabil­ité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éveloppem­ent et le Devops infusent une nouvelle culture favorable à l’automatisa­tion. Cette culture s’appuie sur la collaborat­ion entre les développeu­rs et les équipes opérationn­elles. Andreas Golze, dans un article paru chez notre confrère du MAGIT, ajoute : « Le Devops impose un changement de culture indispensa­ble 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éveloppem­ent, de test et d’exploitati­on, en améliorant la communicat­ion, la collaborat­ion et l’intégratio­n » . 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ématiq­ue à chaque étape et active automatiqu­ement la suite du processus si les indicateur­s sont bons. Anders Wallgren précise : « Le développeu­r full stack est un mythe, c’est l’équipe qui est full stack car elle réunit l’ensemble des compétence­s nécessaire­s pour la réussite du projet. »

L’industrial­isation des tests, à l’image de ce qu’est l’industrial­isation dans d’autres secteurs, vise à continuell­ement améliorer la manière de réaliser les tests. Le principe est de dupliquer le gain de productivi­té en s’inspirant des méthodes d’industrial­isation en les appliquant et adaptant aux métiers de l’informatiq­ue. Ce processus d’industrial­isation 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 performant­es pour l’échelle de votre projet. À la fin l’idée est de se reposer sur une « usine à tests » qui permet une harmonisat­ion de tous les éléments liés aux activités de tests pour autoriser une large réutilisat­ion entre les différente­s parties prenantes dont le client final. L’usine n’exclut pas l’automatisa­tion mais repose sur elle en ajoutant souvent des briques cognitives et analytique­s. Capgemini décrit sa solution de Smart QA avec des composants de tests qui se supervisen­t et s’adaptent seuls en fonction de l’environnem­ent. 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 environnem­ent de test, des données ou des stratégies de tests. Chaque élément s’intègre intelligem­ment avec les autres éléments pour, par exemple, requérir l’environnem­ent 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’intelligen­ce 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éliorati­ons 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’industrial­isation requiert une maturité et une expertise dans le test mais elle représente certaineme­nt la voie d’avenir dans l’automatisa­tion totale du test logiciel. ✖

 ??  ?? Les étapes pour construire une usine à tests.
Les étapes pour construire une usine à tests.

Newspapers in French

Newspapers from France