D’un point de vue théorique, le test logiciel est l’ensemble des activités effectuées pour vérifier un logiciel, dans le but de s’assurer qu’il réponde aux besoins exprimés par le client, qu’il est conforme aux spécifications et qu’il est fiable, avant d’être livré. Côté pratique, tester un logiciel permet de valider qu’il va impacter positivement l’organisation qui l’implémente, aussi bien d’un point de vue technique, que structurel et humain.
Les enjeux historiques des tests logiciels
Historiquement, le test logiciel était une activité très coûteuse et très chronophage. En effet, il fallait tester manuellement chaque fonctionnalité du logiciel. Cela a changé avec l’arrivée des outils de test automatisés qui ont permis aux entreprises de réaliser ces tests plus rapidement et à moindre coût.
Aujourd’hui, le test logiciel est une activité incontournable pour toute entreprise qui développe des outils informatiques. Il n’est pas possible de déployer sérieusement du code sans cela étant donné que les logiciels sont de plus en plus complexes et que la tierce maintenance applicative a un coût qu’il est important de limiter.
Il est donc crucial de s’assurer en amont que les logiciels fonctionnent correctement, avant de les mettre sur le marché ou en production chez les clients. De plus, les outils de tests automatisés sont de plus en plus sophistiqués et permettent de couvrir un large éventail de tests, des tests fonctionnels aux tests de performance. Ces outils ont transformé le test logiciel en une activité plus efficiente et plus rentable.
Genèse et évolution des tests logiciels
L’histoire des tests de logiciels remonte aux premiers jours de l’informatique. Dans les années 1950, les logiciels étaient généralement testés en les faisant tourner sur l’ordinateur pendant quelques minutes pour voir s’ils plantaient. C’était la seule façon de tester un logiciel à l’époque, car il n’existait pas d’outils de tests automatisés.
Le premier outil de tests de logiciels, SUnit, a été développé en 1994 par Kent Beck pour le langage Smalltalk. JUnit a suivi en 1997. Ces outils ont aidé les développeurs à exécuter automatiquement des tests unitaires, ce qui a facilité la recherche et la correction des erreurs dans le code.
Cependant, à partir des années 2010, les tests de logiciels sont devenus plus sophistiqués, avec le développement de nouveaux outils et techniques. Grâce à des méthodes agiles, les développeurs ont pu réaliser plus rapidement et intelligemment les tests logiciels, sans avoir à supporter les risques liés à une longue gestation du produit.
Les méthodes agiles ont changé les règles du jeu
Les méthodes agiles proposent une approche itérative et incrémentale de la gestion des projets informatiques, qui met l’accent sur la collaboration et l’adaptation aux changements. Ces méthodes ont eu un impact significatif sur la manière dont les tests logiciels sont effectués, car elles encouragent une stratégie plus flexible des tests. Cela signifie que les tests doivent être effectués tout au long du cycle de développement, et non pas seulement après que le code a été écrit. Dans certaines méthodes, ils sont d’ailleurs écrits avant le code. On a donc finalement deux livrables : le produit et la suite de tests. De plus, les équipes de développement et les clients doivent travailler ensemble de manière plus étroite, ce qui permet de mieux identifier les problèmes et de les résoudre plus rapidement.
Les nouveaux enjeux des tests logiciels avec les méthodes agiles
Les enjeux principaux du test logiciel dans une méthodologie agile concernent :
- la rapidité de déploiement des applications ;
- la fiabilité des applications ;
- la réactivité des applications ;
- la flexibilité des applications ;
- la qualité logicielle.
Pour garantir la qualité logicielle, les entreprises peuvent d’ailleurs être accompagner et réaliser leurs tests avec une ESN.
Les méthodes agiles ont renforcé les enjeux de l’automatisation des tests, notamment dans le contexte de l’intégration continue. Il est devenu courant de faire en sorte que les outils de construction intègrent les outils d’automatisation des tests, qu’ils soient d’intégration continue ou non.
Certaines actions ne peuvent être totalement automatisées
Les outils de tests automatisés, tels que Selenium, sont désormais couramment utilisés pour tester les applications web. Ces technologies peuvent simuler l’interaction des utilisateurs et vérifier automatiquement les erreurs. Mais ces outils ne remplaceront jamais totalement les tests de validation par l’utilisateur (UAT) qu’on appelle également bêta-tests ou tests d’utilisabilité, et qui sont utilisés depuis toujours.
Le test de validation par l’utilisateur est le processus consistant à vérifier qu’une application logicielle réponde aux besoins des utilisateurs finaux. L’objectif de ces tests est de s’assurer que l’outil développé répond aux besoins des utilisateurs finaux. Le test UAT est généralement mené par un groupe d’utilisateurs finaux représentatif du public cible du logiciel. Il permet de découvrir des problèmes qui ne sont pas forcément apparents lors d’autres types de tests. Le test UAT peut également fournir des commentaires précieux de la part des utilisateurs finaux qui peuvent être utilisés pour améliorer le code source.
L’histoire des tests de logiciels est en cours, et de nouveaux outils et techniques sont constamment développés.