Floppy disks

Pourquoi et comment automatiser les tests sur un logiciel legacy ?

par Christophe Cressend | 12 novembre 2020

L’automatisation des logiciels legacy est un sujet sensible qui nécessite de bien analyser les situations, souvent toutes différentes. Dans certains cas c’est utile voire nécessaire, et dans d’autres vous perdez votre temps. Dans cet article, nous détaillons ces cas de figure.

C’est quoi un logiciel legacy ?

Dans la culture informatique, un logiciel « legacy » est un logiciel qui est en production depuis un certain temps, qui a éventuellement eu plusieurs versions successives et/ou refactorisations de code et qui répond correctement aux besoins de ses clients.

La maintenance de ce genre de solution peut être réduite au minimum : peu d’évolutions et corrections de bugs limitées, le tout assuré par une équipe pouvant être une simple personne n’y travaillant pas à temps plein.

Ce genre de logiciel est « dans son jus » en ce qui concerne les aspects tests et validation, et tout est possible : tests manuels à foison et éventuellement redondants, tests automatisés sur plusieurs solutions d’automatisation, pas de tests sur les données, absence de tests unitaires…

Surtout ne pas y toucher ! Sauf dans certains cas…

Dans certains cas, il est avant tout préconisé de ne rien changer, en particulier si le logiciel comporte peu de bugs, s’il est globalement couvert par des tests et qu’il évolue peu à travers peu de livraisons annuelles.

Mais dans certains cas bien précis, il peut être pertinent d’envisager de faire évoluer ses méthodes de validation. Nous allons détailler ces cas ci-dessous. 

CAS #1: La validation qui prend du temps

Si votre activité de validation prend trop de temps par rapport aux activités de développement, et que vous avez l’intention de continuer les développements et livraisons pendant encore un certain nombre de versions, il peut être intéressant de revoir vos plans en conséquence.

Commencez par faire une analyse fonctionnelle de la couverture de vos tests pour essayer de réduire ceux-ci ; il existe sûrement des redondances qui peuvent être supprimées.

Parmi les tests restants, déterminez ceux qui vous prennent le plus de temps et automatisez les. Si vous faites de l’Agilité, vous pouvez vous fixer un objectif de remplacer n tests manuels par sprint. Ça motivera vos équipes et vous allez petit à petit réduire votre charge de validation manuelle, et donc votre dette technique de validation.

Conservez les tests automatisés existants s’ils fonctionnent et ne coûtent pas cher à rejouer.

CAS #2: La stabilisation qui n’en finit pas

Votre équipe de validation a bien travaillé et ouvert une centaines de bugs sur la dernière version et vous tenez absolument à corriger les plus critiques.

Vous essayez de converger sur les corrections en mobilisant votre équipe de développement et validation et les corrections vous permettre d’aller un peu plus loin dans les scénarios pour découvrir de nouveaux bugs. Vous n’en voyez pas la fin et vos équipes ne peuvent toujours pas travailler sur la version suivante…

Dans ce cas, il peut être pertinent de remettre à plat sa politique de validation pour envisager une couverture automatisée plus globale, des tests rejoués en intégration continue, des corrections de bugs couvertes par des tests…

CAS #3: Les tests automatisés pas fiables

Les tests automatisés doivent être déterministes et les conditions d’échecs doivent être liées à l’apparition de bugs, mais dans les faits ce n’est pas si simple : vous perdez du temps à essayer de comprendre pourquoi le test qui passait la veille dans les mêmes conditions ne passe plus aujourd’hui. Cela se produit tous les jours pour un certain nombre de tests, mais ce ne sont
souvent pas les mêmes.

Il est alors temps d’utiliser un outil qui met tout en oeuvre pour assurer la robustesse et la fiabilité de vos tests automatisés.

Le refacto de tests automatisés, ça existe !

Pour bénéficier des fonctions très intéressantes d’Agilitest qui vont vous faire gagner du temps, vous pouvez même envisager de revoir vos tests automatisés.

  • Les vidéos qui montrent vos tests au moment où ils ont échoué vous ferons gagner du temps en analyse.
  • La possibilité d’ajouter de la profondeur à vos tests en les rejouant sur des données étendues (Data Driven Testing), une démarche utile quand vos clients vous remontent des bugs liées à leur données.
  • Supprimez les tests automatisés maintenus par des développeurs et récupérez ces ressources pour développer des fonctionnalités, car vos équipes de validation peuvent automatiser des tests avec Agilitest.
  • Réduisez la charge de maintenance de vos tests automatisés : les Xpaths ne sont pas vos amis.

Alors, automatisation des tests sur votre logiciel legacy ou pas? On l’a vu, tout dépend du cas de figure dans lequel vous vous trouvez. 

Petit conseil final: dans vos démarches, n’oubliez pas que les gains pourront être liés au système mis en place plutôt qu’à la somme des réductions de travail de chaque équipe ; et ces gains seront beaucoup plus importants que vous ne pourriez le penser. La traque du temps  perdu ne doit pas être votre seule motivation. 


Crédit photo: hosein zanbori on Unsplash