Introduction
La plupart du temps lorsque j’arrive sur un projet j’entends parler de problèmes avec les tests. Certaines phrases comme celles-ci-dessous sont récurrentes :
· Les tests prennent trop de temps
· Il y a trop de bugs en productions, les tests sont donc mal faits
· Il faut automatiser pour tout améliorer et aller plus vite
Je m’aperçois donc de l’existence de 2 problèmes décrits:
· La lenteur des tests qui retarde la mise en production (ou Time To Market)
· Le manque d’efficacité des tests
Et d’un besoin exprimé (je dis bien exprimé, ce n’est pas forcément le besoin le plus urgent !) censé résoudre les 2 problèmes précédents :
· Automatiser les tests
Je ne reviendrai pas dans cet article sur les problèmes engendré sur l’automatisation, sur ses limites ou encore sur son retour sur investissement…
Le but de cet article est de se demander s’il n’existe pas d’autres solutions, plus simples, moins chères, plus efficaces et rapides à mettre en place avant d’automatiser.
Nous allons donc travailler sur chaque problème séparément et voir qu’elles sont les solutions envisageables.
Les causes des problèmes de lenteur et d’efficacité des test :
Avant de définir une ou des solutions, il faut étudier les causes de ce temps nécessaire. Ces causes peuvent être nombreuses, en voici quelques exemples :
· Les tests (ou les environnements de tests) ne sont pas stables et doivent souvent être ré-exécutés
· Les tests sont difficiles à comprendre et sont donc plus longs à exécuter
· Les tests nécessitent du temps d’exécution avec des délais d’attentes obligatoires (ex : attendre une synchronisation qui a lieu toutes les 30 minutes)
· Les bugs sont corrigés tardivement et/ou mal corrigés
· Une mauvaise description des bugs
· Les tests sont trop nombreux et certains sont redondants
· Mauvaise (ou absence) stratégie de test
· Mauvaise couverture ou couverture non appropriée (trop de bugs détectés ou bugs importants non détectés)
· Les tests ne sont pas maintenus
· Les tests ne sont pas exécutés assez régulièrement
Solutions pour les problèmes précédents :
On s’aperçoit que l’automatisation pourrait en effet faire gagner du temps (en étant exécutés la nuit) et/ou améliorer l’efficacité des tests. Néanmoins l’automatisation ne permet pas de diminuer le nombre de tests, elle ne permet pas non plus d’améliorer la stabilité des tests ou la qualité de livraison des correctifs de bugs.
Voici des solutions, plus simples à mettre en place qui ont, la plupart du temps, un meilleur retour sur investissement que l’implémentation de l’automatisation.
· Bien écrire ses cas de tests et limiter au maximum les dépendances (problème des cas de tests non stables ou peu compréhensibles).
· Maintenir ses cas de tests (tests difficiles à comprendre)
· Avoir des environnements de tests stables (les environnements peu stables sont de plus un très gros problème pour l’automatisation)
· Pouvoir exécuter des cas de test en parallèle (temps d’exécution long)
· Bien décrire les bugs et avoir des tests vitaux (voir tests de régressions) que les développeurs peuvent exécutés (afin d’augmenter la qualité des correctifs)
· Avoir une stratégie de test (pour limiter le nombre de tests) et faire des plans de test.
· Trier et prioriser les tests. Mettre en place différentes campagnes (vitaux, régressions, validations) (pour le problème avec trop de test.
· Travailler sur la couverture des tests et axer les tests sur les risques de défaillances et l’utilisation du produit.
· Tester le plus tôt possible (Shift Left)
Conclusion :
L’automatisation ne fait pas tout et n’est pas la solution à tout non plus. L’automatisation est un outil, très puissant et efficace lorsqu’il est bien utilisé. Par contre ce n’est pas forcément toujours l’outil le plus adapté. Pour améliorer l’efficacité de ses tests il faut aussi penser à d’autres solutions plus simples et souvent beaucoup plus efficaces et avec un retour sur investissement beaucoup plus important.
Enfin, pour bien automatiser, il faut automatiser sur des bases saines. Par bases saines j’entends des tests bien écrits, stables et avec une bonne couverture. Sans cela l’automatisation ne sera pas efficace.
PS : Je n’ai pas parlé de TMMI mais ce référentiel permet de donner des indications sur ce qui doit être fait en premier afin d’améliorer la maturité de ses tests (voir mon article)
Pensez à rejoindre le groupe Le métier du test si le test vous intéresse !
N’hésitez pas à me suivre et lire mes autres articles si vous voulez en apprendre plus sur le test ou venir partager vos connaissances
Merci à tous ceux qui mettent « j’aime », partagent ou commentent mes articles
2 Responses
Marc , tout ce que tu évoques est parfait et totalement applicable quelque soit la méthode d’exécution des tests : manuelle, semi-manuelle, automatique, en intégration continue ….
L’automatisation devient impérative , à mon sens et avec le retour de 10 ans d’expérience d’automaticien, dans au moins ces deux cas :
– Si les MEP sont fréquentes (trimestrielle par exemple ) voire hyperfréquence (bi-mensuelle en développement Agile )
Les robots rejoueront sans « erreurs » autant que nécessaire la couverture, qui bien sûr doit être maintenue , doit évoluer ….
– S’il est nécessaire de tester une apps
L’atomisation des devices et OS ne permet plus d’exécution manuelle sauf à faire des impasses considérables sur des panels entiers d’utilisateurs .
Belle journée à toi, aux testeurs , automaticiens, informaticiens et tous les autres bien sûr 😊 Christian
Bonjour Christian,
Merci pour ce retour et ces précisions. L’automatisation (au moins partielle) est en effet nécessaire dans de nombreux cas.Elle n’est par contre jamais suffisante.
Savoir s’il est intéressant d’automatiser est d’ailleurs le sujet d’un autre article de la taverne: https://latavernedutesteur.fr/2017/11/03/automatiser-ou-ne-pas-automatiser-telle-est-la-question/