On crée un logiciel pour qu’il soit utilisé et pour ça il faut que les utilisateurs soient satisfaits de sa qualité. Si des bugs empêchent de réaliser une tâche importante, si l’application passe à coté des aspects métiers, si l’interface est compliquée, si des données sont perdues, si les messages d’erreurs sont incompréhensibles, si les performances sont trop mauvaises (et bien d’autres choses possibles) qui va vouloir de votre logiciel ? Si l’utilisateur n’y trouve pas son compte, si l’application lui rend son travail plus compliqué, il laissera votre création de coté.
D’autres conséquences fâcheuses peuvent se faire ressentir lorsque l’on met sur le marché un logiciel qui n’est pas à la hauteur. Une mauvaise réputation et une perte de crédibilité pour votre entreprise et votre logiciel, des pertes financières, une perte de clients au profit de la concurrence, une perte de motivation dans vos équipes, des actions en justice… Aujourd’hui les logiciels sont présents partout, de simples applications sur un mobile au systèmes les plus critiques. Des problèmes non identifiés ou sur lesquels on a voulu fermer les yeux peuvent amener à des problèmes comme l’impossibilité d’effectuer une commande car l’utilisateur ne peut pas valider son adresses postale ou bien de manière plus rare à des catastrophes comme ce qui c’est passé avec le Boeing 737 Max [EN].
On teste donc pour étudier le fonctionnement de l’application et ce travail d’enquête permet de collecter de l’information sur l’état du logiciel. On va chercher des problèmes, des manques, des frustrations, des oublis, enfin bref tout ce qui peut dégrader l’expérience de l’utilisateur. Si ces informations sont prises en compte et les problèmes corrigés alors la qualité de votre produit sera meilleure. Les utilisateurs prendront confiance en votre application et l’utiliseront. Certains en feront même la promotion.
Lors de la conception du logiciel avoir une équipe de testeurs permet d’obtenir des retours dés le début de la conception. Plus les retours sont faits tôt plus il sera facile de corriger les problèmes. Arriver à la fin d’un projet et se rendre compte que des choix fondamentaux n’ont pas été les bons n’a d’autre issue que l’échec du projet. Les exemples sont nombreux, comme par exemple le logiciel Scribe, un progiciel de rédaction de plaintes qui ne verra jamais le jour et dont les pertes sont de 12 millions d’euros. Dans le fait de tester tôt on trouve la notion de shift-left testing. Cela consiste à avoir une discussion avant que les développements ne commencent et en intégrant différents profils (testeur, développeur, chef de projet). Réfléchir ensemble aux critères d’acceptation, aux risques, aux scénarios permet au développeur d’anticiper et on aura ainsi moins de retour en phase de test.
Il est importants d’utiliser différentes stratégies qu’il faut combiner. Les tests vont contrôler que le logiciel répond bien aux spécifications. Il est aussi important d’effectuer des sessions de tests exploratoires qui vont permettre de sortir du carcan des spécifications et donc d’identifier des problèmes qui nous ont jusqu’ici échappé. Il est intéressant d’identifier les risques car ces derniers vont permettre de guider et de prioriser les tests. L’objectif est donc de contrôler que le logiciel est conforme aux spécifications et qu’il répond aux besoins et aux attentes des utilisateurs. Les tests sont présents non seulement dans les aspects fonctionnels mais aussi aux niveaux performances, sécurité, accessibilité, portabilité, pour ne citer que ces caractéristiques.
Au fur et à mesure de la vie du projet, les testeurs vont acquérir des connaissances sur le logiciel. Ils vont identifier les zones à risques de régressions, les fonctionnalités importantes pour l’utilisateur, avoir une bonne connaissance de l’architecture, construire des jeux de données, connaître le métier du client, écrire de la documentation… Cette connaissance constitue un atout décisif dans la réussite du projet. Biensûr les autres membres de l’équipe comme les développeurs peuvent rédiger de la documentation mais cette dernière sera accès sur la technique. Les testeurs ont une vision globale de l’application car ils la testent et l’utilisent tous les jours. La documentation qu’ils produisent doit être partagée aux différents membres de l’équipe et pourra servir de base pour le manuel destiné aux utilisateurs. C’est aussi une nécessité pour concevoir des tests qui seront efficaces et mettrons en lumière les problèmes. Cette expérience permettra aussi de sélectionner les tests à automatiser.
Avoir des testeurs qui ont des compétences en développement et qui apprécient écrire des tests automatisés est un atout important. Ces tests auront pour objectif de contrôler régulièrement que le fonctionnement connu et validé est toujours en place. Cela permet de gagner en confiance lors de la livraison d’une nouvelle version. Dans une activité où il faut pouvoir mettre rapidement à disposition de nouvelles versions du produit avoir des tests automatisés est d’une grande aide.
Avoir un logiciel dont on sait que le fonctionnement est correct permet d’envisager les évolutions avec sérénité. En effet disposer de tests (notamment les tests unitaires et les tests fonctionnels automatisés) et de testeurs qui connaissent bien l’application permet de procéder plus sereinement à des modifications. Ces tests seront des garde-fous qui indiqueront si quelque chose a été cassé. Les testeurs de part leur expérience seront en mesure d’évaluer les impacts et les risques qui en découlent. Faire des tests est un investissement qui permet de voir sur le long terme.
Enfin travailler sur un logiciel dont on sait qu’il est apprécié des utilisateurs est satisfaisant. Cela permet de développer un lien de confiance et d’entraide entre le différents rôles qui sont présents dans l’équipe (testeurs, développeurs, chef de produit, experts métier, chefs de projet). Une relation de confiance s’établira avec le client qui acceptera de participer à des évolutions sachant le travail que votre équipe peut réaliser.