Pour une stratégie d’automatisation des tests

16 Novembre 2021
le_nouveau_livre_du_cftl_2021
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 ?

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.

Les coûts cachés

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 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étence et à une automatisation plus large.

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.

 

Quelle stratégie pour les tests automatisés ?

La démarche

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. 

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. 

 

aller_vers_de_la_prevention_des_bugs_dans_un_environnement_agile

Illustration aller vers de la prévention des bugs en environnement agile

 

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 :

 

notre_demarche_dautomatisation

Illustration notre démarche d'automatisation

 

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. 

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. 

Pourquoi la modélisation

La modélisation est une méthode collaborative, qui permet de représenter visuellement et rapidement les processus métier grâce à un vocabulaire commun. Lorsque différents acteurs travaillent ensemble sur un projet, des barrières se dressent entre eux, qui ralentissent l’avancée du projet. En effet, les développeurs n’utilisent pas le même vocabulaire que les testeurs, qui n’utilisent pas le même que les MOA, qui n’utilisent pas le même que les autres métiers. 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étence rapide des nouveaux arrivants, grâce à la simplicité de lecture et de compréhension du projet. Enfin, elle offre des avantages et un gain de temps conséquent aux différents acteurs, que nous vous détaillons ci-dessous.

Pour répondre à cette problématique, l’utilisation de la méthode Business Process Model Notation (BPMN, norme ISO/IEC 19510) facilite le partage des informations de manière rapide, fluide et compréhensible, car chaque acteur a le même niveau d’information visuelle. Il en découle donc un gain de temps important. 

illustration_bpmn

La modélisation permet aux différentes équipes d’avoir une vue globale et d’établir rapidement un état des lieux, tout en ayant une bonne visibilité sur les évolutions ou modifications futures et les impacts qui en découlent. Plusieurs outils se basent sur ce standard. En voici quelques exemples :

  • Draw.io,

  • Bizagi,

  • Entreprise Architect,

  • Yest.

Les avantages pour la vision transversale

La modélisation permet de faciliter l’élaboration de la stratégie de test, dont voici les principaux avantages :

  • Identifier rapidement et facilement les chemins critiques et nominaux. Il est ainsi possible de mettre en place une stratégie de test et de définir ceux qui doivent être réalisés manuellement ou automatiquement, ainsi que les jeux de données et environnements nécessaires pour effectuer les différentes campagnes de test.

  • Réaliser un bilan et une couverture de test de façon visuelle. La modélisation offre la possibilité de mettre en surbrillance le parcours utilisateur afin d’illustrer ce qui a été couvert et réalisé avec les tests. Cela donne une vue éclairée de ce qui va être mis en production.

Ci-dessous, un exemple de modélisation qui permet de mettre en avant les principaux parcours d’une application. En bleu sont surlignés les parcours à tester en priorité.

exemple_de_modelisation

Bonnes et mauvaises pratiques

Mauvaise pratique #1 - vouloir tout automatiser

Une des croyances sur l’automatisation est de penser que tout est automatisable et qu’il faut tout automatiser. Cette pratique risque de générer un manque de fiabilité dans le temps et un coût de maintenance très élevé et va engendrer une perte de confiance dans le temps sur la fiabilité des tests automatisés.

Conseil : cibler les tests et les parcours de tests à automatiser en s’appuyant sur la modélisation.

Mauvaise pratique #2 - automatiser comme pour le test manuel

Une autre croyance est de vouloir automatiser de la même façon que les tests manuels, avec de longs tests fonctionnels et énormément de contrôles sur chaque étape de tests. Une des conséquences de cette croyance est une maintenance dans le temps très difficile et un abandon systématique des tests automatisés.

Conseil : créer des cas de tests sur une fonctionnalité avec un minimum d'objectifs de validation, ou sur le comportement d'un parcours utilisateur avec les contrôles minimum suffisants pour valider le cas de test.

Mauvaise pratique #3 - tout tester avec l’IHM

En tant que testeur, la vision bout en bout en partant de l’IHM peut laisser croire que l'automatisation doit principalement se faire avec l’IHM. Or, dans bien des contextes projets, cela implique des cas de tests trop complexes à automatiser ou lorsque cela est envisageable, une complexité et une instabilité des scripts de tests du fait des évolutions régulières des écrans et de l’ajout de nouvelles pages.

Conseil : dans ce cas de figure, se concentrer si possible sur des cas de tests d’API avec une approche de tests automatisés plus bas niveau, en s’inspirant de la pyramide des tests et inclure un minimum de tests d’IHM automatisés uniquement sur les cas critiques, dans la mesure du possible.

Mauvaise pratique #4 - l'automatisation, un projet à part

Afin d'accélérer l'automatisation, l’idée serait de monter un projet autonome « Automatisation de tests » en parallèle de l’équipe concernée, afin d’avoir une meilleure transformation. Dans ce cas de figure, deux risques émergent : le premier est d’obtenir des cas de tests automatisés très techniques qui ne sont pas en phase avec la valeur métier, et difficilement compréhensibles et maintenables par l’équipe de test une fois le projet “test auto”“ achevé et transmis à l'équipe de test. Le second risque est une production trop importante de tests automatisés, notamment sur le bout en bout (cf #1).

Conseil : la stratégie des tests automatisés doit être incluse dans la stratégie de test et portée par les acteurs du projet. Elle doit guider le développement de tests automatisés. En se basant sur la démarche décrite précédemment, le test automatisé devient efficient et s’intègre pleinement dans une stratégie de test globale.

 

Conclusion

Trop souvent, les projets se lancent pleinement dans l’automatisation de leurs tests fonctionnels sans même avoir réalisé au préalable une stratégie de tests fonctionnels automatisés et sans prioriser les actions et identifier les cas de tests qui vont leur apporter le plus de valeur. En pensant gagner du temps, les équipes projet en perdent finalement beaucoup en devant régler une à une des problématiques qui auraient pu être évitées. Le management visuel, notamment la modélisation des parcours métier, est un outil puissant et efficace qui permet d’apporter une bonne compréhension du projet à l’ensemble des acteurs, mais aussi une bonne visibilité sur les modifications et les évolutions du projet et les impacts qui en découlent. Cela permet donc d’adapter sa stratégie de test, de prendre les bonnes décisions de manière collaborative et d’affiner les tests à automatiser à conserver, maintenir ou mettre de côté. Cela facilite grandement la maintenabilité du référentiel de tests automatisés ou non.

 

Aussi n’hésitez pas à visiter nos pages dédiées aux Tests Logiciels

Parlons ensemble de vos projets.

contactez-nous