Quelle stratégie d’automatisation adopter ?

Par Jean-François FRESI

Cet article est une mise à jour du chapitre II.1 – Pour une stratégie d’automatisation des tests du livre Automatisation des activités de test de du CFTL que j’ai rédigé en 2021.

Les principales questions liées à l’automatisation qui seront posées dans cet article :

  • Pourquoi est-il important d’avoir une stratégie d’automatisation ?
  • Quelle est la meilleure façon de commencer à automatiser ?
  • Quelle est la démarche type pour automatiser ?

 

Vous découvrirez également des compléments sur :

  • Les objectifs à définir lors de la mise en place d’une stratégie d’automatisation des tests
  • Le suivi et le monitoring de ces objectifs
  • L’utilisation d’une matrice des risques et de couverture pour la priorisation des tests à automatiser
  • Les quatre autres mauvaises pratiques d’automatisation couramment remarquées
  • Les bonnes pratiques d’automatisation à mettre en place
  • Les situations favorables à l’automatisation
 

Dans une société en perpétuelle mutation, les entreprises doivent être en mesure d’améliorer l’efficacité et la qualité de leurs solutions, dans le but de les rendre toujours plus performantes et efficaces. Le cycle de livraison des logiciels doit être fluide, continu et rapide et ainsi répondre aux attentes et exigences du marché. La mise en place de tests automatisés pour assurer la meilleure qualité et détecter le maximum d’anomalies dans un temps minimum, apparaît comme une évidence.

Pourquoi automatiser ?

Il existe de nombreuses façons d’aborder l’automatisation. Cependant, sans une stratégie solide dès le début, il est difficile de savoir quelle direction prendre et alors la démarche d’automatisation des tests a de grandes chances d’être un échec.

L’intérêt de l’automatisation

L’implémentation de tests automatisés permet d’améliorer la qualité logicielle, d’augmenter la couverture de tests tout en testant régulièrement les fonctionnalités vitales, voire de façon continue. L’avantage premier de l’automatisation des tests se situe aussi au niveau de la productivité. Cette approche permet de tester plus fréquemment et de remonter le plus tôt possible les anomalies de fonctionnement. Cette vitesse de détection des anomalies permet aux équipes de développement une forte réduction du délai et du temps nécessaires pour leur correction. Cela implique donc une augmentation du nombre de tests exécutés ainsi que de leur fréquence d’exécution, ce qui va contribuer à l’amélioration de la qualité et de la fiabilité du produit.

Une autre plus-value de l’automatisation des tests est de pouvoir contribuer à réduire le time-to-market, c’est-à-dire de livrer plus fréquemment, en mettant en production de plus en plus de fonctionnalités et en tendant vers un taux de dysfonctionnements quasi nul en production. Ce qui, bien entendu, contribue à la satisfaction client. En découvrant une anomalie au plus tôt, le risque encouru lors d’une mise en production est limité.

Libérés de cette tâche récurrente, les testeurs fonctionnels peuvent concentrer leurs efforts sur des activités à plus grande valeur ajoutée (tests exploratoires, BDD/ATDD, …). L’intérêt de l’automatisation des tests fonctionnels se situe donc sur plusieurs niveaux :

  • Fiabilité de l’application et satisfaction client
  • Augmentation de la productivité
  • Réduction du time to market
  • Disponibilité des testeurs pour des activités plus forte valeur ajoutée

Les contraintes liées à l’automatisation

Afin de maîtriser la fiabilité des tests automatisés, l’exécution des tests doit se faire dans un cadre stable et maîtrisé. L’efficacité des tests est étroitement liée à la stabilité de l’environnement sur lequel ils sont exécutés. Un autre point d’attention porte sur la fiabilité et la pertinence des données de test. La fiabilité de ces données est nécessaire pour garantir la conformité des résultats de tests mais aussi leur gestion dans le temps. Avant de se lancer dans le chantier de l’automatisation, il est indispensable d’évaluer la faisabilité technique du périmètre fonctionnel à automatiser.

Une évaluation de la stabilité des fonctionnalités à automatiser ainsi qu’un référentiel documentaire opérationnel et à jour sont aussi des éléments indispensables pour garantir le succès d’un projet d’automatisation.

Les coûts cachés de l'automatisation

Au-delà de ces contraintes, il faut aussi appréhender certains coûts cachés qui sont principalement liés à la complexité des cas de tests, la volumétrie des cas de tests et leur maintenabilité associées ainsi que la fréquence d’exécution et la complexité des cas de tests.

La pertinence dans le choix des cas de tests à automatiser, liée à la durée d’exécution des tests, a aussi un impact indirect. Un autre coût caché se situe dans le choix de l’automate, en lien avec le profil des testeurs qui vont développer les tests automatisés. Si l’on envisage des profils fonctionnels, le choix d’un outil trop technique sera un frein à la montée en compétences et à une automatisation plus large.

Et bien sûr, le coût caché souvent oublié dans l’automatisation des tests est la maintenance des cas automatisés et donc de leur maintenabilité dans le temps. Dans la plupart des cas, l’automatisation est un projet de développement qui doit être architecturé et développé selon les bonnes pratiques.

Mais alors, y a-t-il un réel intérêt à automatiser des tests fonctionnels ? Faut-il automatiser un maximum de cas de tests avec un coût non négligeable pour la maintenance des tests automatisés fonctionnels ?

La réponse est doublement oui ! Mais pour toutes les raisons évoquées précédemment, il faut concevoir une stratégie de tests automatisés adaptée et qui prend en compte ces risques et ces contraintes.

Contact Service Werin Group

Quelle stratégie pour les tests automatisés ?

La démarche d'automatisation des tests

Il est important de mettre en place une stratégie de test qui soit en phase avec les priorités du projet et qui permet de créer de la valeur à chaque itération du cycle de vie de l’application. La stratégie de test d’automatisation des tests fonctionnels doit donc faire partie intégrante de la stratégie de test et doit permettre de tester en profondeur les exigences et les parcours critiques d’une application. L’automatisation des tests ne doit pas être considérée comme un projet parallèle mais bien faire partie prenante du projet et donc de la stratégie de test globale. Elle doit être partagée et validée par tous les acteurs du projet (métier, développeurs et testeurs).

Une approche conseillée est de partir de la vision métier et utilisateur afin de mieux appréhender les parcours critiques de l’application et choisir les priorités dans l’effort de test, que ce soit de façon manuelle ou automatisée. Cette démarche permet d’avoir de l’ambition tout en priorisant les activités de tests automatisés et en créant rapidement de la valeur et de la confiance. Cela permet une montée en compétences progressive, tout en élevant au fur et à mesure ses objectifs d’automatisation.

Les objectifs doivent être définis dès le début et font partie intégrante de la stratégie de tests automatisés.

Il est aussi indispensable de mettre en corrélation cette stratégie avec les bonnes pratiques de l’ISTQB et de la répartition des tests dans la pyramide de tests, en opposition à la vision cornet de glace du tout test manuel. C’est pour cette raison qu’il est indispensable d’inclure dans la stratégie, l’automatisation des tests d’APis et pas uniquement ceux de l’IHM.

Pyramide de tests Werin Group

Pour cela, la stratégie de test doit être partagée et co-construite avec les parties prenantes du projet afin d’être la plus efficace et pertinente possible. Les priorités et les risques sont par conséquent partagés et connus par l’ensemble des acteurs projets. L’approche pour l’automatisation des tests peut donc se schématiser de cette façon :

Werin Group blog du QE Schema pour automatisation des tests

Dans cette approche, il doit être pris en hypothèse que le choix de l’outil a déjà été effectué afin de faciliter l’explication de cette démarche. Un article dédié lui sera consacré.

Pour commencer, une stratégie d’automatisation des tests doit commencer par définir les objectifs à atteindre ainsi que les problématiques techniques et spécifiques au contexte du projet que cette démarche doit résoudre.

Afin de piloter l’atteinte de ses objectifs des indicateurs efficaces, pertinents et adaptés doivent être définis dès le début de cette démarche.

Il est aussi indispensable d’avoir pris en compte en pré-requis de cette approche la mise en place d’environnement dédiés et stables et de prévoir des jeux de données fiables et pertinents sur chacun de ses environnements. Un référentiel documentaire à jour est aussi à envisager afin de faciliter la prise de décision dans les étapes suivantes.

Pour ce faire, il est indispensable de rendre la collaboration, entre les différents acteurs d’un projet, simple et efficace, afin de faciliter et d’accélérer la prise de décisions. Le management visuel et notamment la modélisation métier est une étape préalable, qui permet la collaboration entre métiers, développeurs et testeurs. Tout en amenant une vision macro des applications métiers, d’une part et, d‘autre part, des parcours critiques applicatifs qui repensent l’expérience utilisateur. Cet outil permet de mettre en place un langage commun et une documentation vivante.

En complément, afin de définir la priorisation des cas d’usage à automatiser, l’utilisation d’une matrice des risques et de couverture sera un vrai plus.

La modélisation orientée test vient dans un deuxième temps, pour approfondir la modélisation métier. Elle permet la collaboration entre les mêmes acteurs et étoffe ainsi la documentation vivante. C’est lors de cette phase de modélisation que l’équipe projet visualise et affine sa stratégie de tests. Elle peut servir la vision actuelle du projet (couverture de test, stratégie, communication de référence) ou sa vision cible (impact et évolution sur les tests, identification des manques, besoins en environnements et données).

Lors de l’étape de scripting, les automaticiens s’appuient sur les phases de modélisation, afin d’avoir une vision claire. Généralement, l’automatisation se concentre dans un premier temps sur les fonctionnalités principales, les parcours de bout en bout vitaux et sur les cas passants et, dans un deuxième temps, sur les cas d’erreurs, les cas aux limites et les fonctionnalités importantes.

Par la suite il faut mettre en place un suivi de l’apport de valeur de l’automatisation avec des indicateurs pertinents et adaptés qui doivent permettre de s’assurer que les choix en termes de parcours à automatiser de tests ou de stabilité de l’application permettent une maintenabilité des cas de tests automatisés et donc de garantir un ROI efficace.

Comment définir ses objectifs en vue d'un projet d'automatisation ?

Se fixer des objectifs est une première étape importante. Cependant, il ne faut pas confondre ambition et objectifs irréalistes ou bien trop nombreux qui ne dépendent pas que de l’automatisation ! Il faut éviter certains anti-patterns dans la définition des objectifs comme envisager que l’automatisation permettre de trouver plus de nouveaux défauts ou tous les défauts, attendre que tests automatisés remplacent les tests manuels et tous les testeurs ou bien que seule l’automatisation va fiabiliser et sécuriser les applications et les mises en production.

Voici des exemples d’objectifs à prendre en compte ; la recommandation est de définir au maximum 3 de ses objectifs dans un 1er temps. Une fois ses objectifs remplis, d’autres objectifs pourront être définis:

Des indicateurs clés pour une plus grande réactivité

Une fois les objectifs définis, la mise en place d’indicateurs est indispensable pour suivre l’avancement et piloter l’atteinte des objectifs.

Mal choisis, les indicateurs peuvent être contre productifs. Une pratique courante est d’utiliser les cas de test comme backlog et référence pour l’automatisation des tests. Avec cette approche, à chaque itération ou release plus de nouvelles fonctionnalités sont à tester et le backlog des cas à automatiser aussi. Dès lors, l’avancement de l’automatisation est mesuré par le pourcentage de cas de test automatisés par rapport au nombre de cas de test et on souhaite avoir le chiffre le plus élevé. Or, il s’agit là aussi d’anti-pattern qui ne garantit aucunement, ni la valeur ajoutée des cas qui ont été automatisés ni la maintenabilité de ses cas. De plus, cet indicateur conduit inévitablement à des suites de tests gonflées artificiellement avec des cas très simples et basiques pour montrer un avancement au management.

Voici quelques exemples d’indicateurs qui peuvent être utilisés afin de prendre des décisions rapidement et d’adapter sa stratégie le cas échéant :

  • Taux d’automatisation des scénarios automatisables =  Nombre des tests auto / Nombre Total des tests automatisables * 100. Cela implique une analyse au préalable ces parcours de test automatisable.
  • Taux de stabilité des tests autos correspondant au pourcentage de tests modifiés à chaque itération et la durée cumulée associés. Plus le pourcentage est élevé, meilleure est la maintenabilité des scripts.
  • Couverture des exigences par les tests autos = 100 – (Nombre des exigences couverts par des tests autos/ Nombre total des exigences) * 100.
  • Taux de production des tests autos par sprint/release = Nombre des tests automatisés par sprint / Nombre total des tests auto prévus * 100
  • Efficacité du script d’automatisation  = (Nombre  de défauts trouvés par l’automatisation / Nombre  de défauts ouverts) * 100
  • Calcul du ROI régulier de l’automatisation afin de confirmer que l’effacement est efficace et rentable. Le suivi régulier doit prendre en compte la création des scripts, les coûts de licences et machines mais aussi le temps nécessaire à la maintenance de l’automatisation.

Ces exemples sont à adapter en fonction du contexte projet.

ESN Werin Group Contact

Pourquoi adopter la méthode de la modélisation ?

La modélisation est une méthode de management visuelle collaborative, qui permet de représenter facilement les processus métier de manière collaborative. Cette démarche permet aux différents acteurs travaillant sur le projet  d’utiliser un langage commun et d’éviter les ambiguïtés et les confusions qui seront pénalisantes lors de la suite du projet.  De la sorte, développeurs , métiers et testeurs peuvent échanger avec un langage commun et facilité par les schémas. 

La modélisation permet à l’ensemble des acteurs concernés d’avoir une vue globale du projet et de visualiser toutes les interactions entre les différents systèmes internes et externes. Elle permet également une montée en compétences rapide des nouveaux arrivants, grâce à la simplicité de lecture et de compréhension du projet.

Enfin, la modélisation permet d’avoir une documentation vivante apportant des gains de productivités et de temps importants. En utilisant la méthode Business Process Model Notation (BPMN, norme ISO/IEC 19510) on peut alors structurer la modélisation et le partage d’information de manière efficace et structurée.

La modélisation permet de collaborer avec toutes les parties prenantes d’une équipe et de co-construire la vue actuelle des parcours métiers mais aussi ceux de la vue cible, et, de projeter les impacts des nouvelles features sur les processus et les systèmes et évaluer les nouveaux tests à ajouter.  Plusieurs outils se basent sur le BPMN . En voici quelques exemples :

  • Draw.io,
  • Bizagi,
  • Entreprise Architect,
  • Yest.

Les avantages pour la vision transversale

La modélisation permet d’initier la stratégie de test transversale avec plusieurs apports important

  • Déterminer les chemins critiques et nominaux afin de mettre en place une stratégie de test efficace et adaptée que ce soit de manière manuelle ou automatisée.
  • Effectuer un suivi et une traçabilité des parcours déjà utilisés et testé durant une campagne de tests
  • Évaluer les impacts des nouvelles fonctionnalités sur les chemins existants et d’en déduire les impacts et les nouveaux cas de tests à ajouter.

Ci-dessous, un exemple de modélisation d’un parcours sur un site e-commerce qui permet de mettre en avant les principaux parcours d’une application.

En bleu sont surlignés les parcours à tester en priorité.

WERIN GROUP Blog du QE Avantages-de-la-vision-transversale

Définir les priorités des tests automatisés

Pour définir, la priorisation des tests automatisés, s’appuyer une matrice de criticité et de couverture des fonctionnalités peut s’avérer très utile.

Il faut donc envisager, la criticité, la complexité, la fréquence d’utilisation de la fonctionnalité mais aussi son historique d’anomalies en production et la valeur business apportée par celle-ci ainsi que sa complexité de mise en œuvre.

Ce type d’exercice de style doit se faire de manière collaborative avec toutes les parties prenantes du projet afin que cette étude et l’automatisation soient bien cadencées et intégrées dans le projet de développement du produit.

Cela permet de définir de façon collégiale les priorités sur les features à automatiser. Une compréhension claire des buts et objectifs du projet, avec les risques qui y sont associés, permet une approche solide pour hiérarchiser les tests en fonction du risque et de la valeur. Tous ces éléments sont importants pour le succès global de la stratégie d’automatisation, mais il y a une chose qui les relie tous : la communication. Il est indispensable de communiquer sur l’avancement et les projets de ce projet d’automatisation et de fournir des opportunités de retour d’information aux parties prenantes et aux membres de l’équipe afin d’améliorer nos processus au fur et à mesure.

Werin Group Blog du QE probabilite et impacts automatisation