Les tests : une étape essentielle !

 

Dans le monde du développement logiciel, on parle beaucoup de développeurs, d’architectes, de chefs de projets, etc. Aujourd’hui, un nouveau profil est mis en avant : celui de testeur valideur.

Devenu un métier à part entière, le test et la validation sont des étapes qui acquièrent de plus en plus d’importance au sein des projets.

« Selon la norme ISO 9000, la vérification est la confirmation par l’examen et la fourniture de preuves objectives que des exigences spécifiées ont été remplies. La validation et la confirmation par l’examen et la fourniture de preuves objectives que les exigences, pour un usage ou une application voulue, ont été remplies ».

 

Les fondamentaux

 

Il est important de faire la distinction entre une erreur, un défaut (ou bug) et une défaillance. Cette distinction permet de comprendre d’où vient le problème pour pouvoir le corriger.

 

Quels sont les enjeux des tests ?

 

Les tests préviennent et garantissent le niveau de qualité du produit sur une période déterminée. Ils donnent aussi des indications de fiabilité. Tout cela, permet de vérifier l’adéquation du produit aux besoins exprimés par le client et donc de satisfaire la demande du client.

Le second enjeu consiste à pallier les carences du génie logiciel. Le test relève d’un processus de développement non industrialisé et de contrôle non déterministe. Face à l’impossibilité de fournir des preuves, il permet la visibilité sur la qualité du produit et sur son bon ou mauvais fonctionnement.

La capacité des tests à trouver des défaillances, à prévenir les défauts et à élever le niveau de qualité du produit permettent donc de créer une relation de confiance entre le client et le fournisseur.

 

Les 7 principes généraux des tests

 

Principe 1 : les tests montrent la présence de défauts

Les tests ne peuvent pas prouver l’absence de défauts mais ils peuvent en prouver la présence ! Lorsque qu’il y a des erreurs, on parle d’objectifs atteints. En revanche, si aucune erreur de ce type n’est trouvée mais que rien n’informe sur les erreurs d’un autre type, on parle d’objectifs non atteints. Les tests sont faits pour démontrer qu’il y a des défauts.

 

Principe 2 : les tests exhaustifs sont impossibles

Tout tester signifie : gérer la focalisation des efforts de tests en fonction des risques et des priorités. L’exhaustivité des données est impossible puisqu’il existe une infinité de valeurs, de combinaisons, de types d’utilisation et de chemins possibles. Il faut donc prioriser et analyser les risques.

 

 Principe 3 : il est important de tester tôt 

Le meilleur investissement dans le test et la validation est la prévention ! Plus un test est effectué tôt, plus vite il peut être corrigé et moins il coûte cher à corriger.

 

Principe 4 : regroupement des défauts

Le regroupement des défauts permet d’adapter les efforts de tests en fonction de la réalité, c’est-à-dire de la densité réelle des défauts dans un système. Selon la Loi de Pareto : 80% des défauts sont confinés dans 20% du logiciel. Les 20% se situent dans les 80% du logiciel restant.

 

Principe 5 : paradoxe du pesticide

Si les mêmes tests sont répétés de nombreuses fois, il est nécessaire de faire évoluer le système de tests. En effet, la validité des tests baisse en fonction de leur âge : un type de test trouvera les erreurs d’un certain type mais une fois corrigées, il n’en trouvera plus. La ré-exécution des tests est efficace sur les nouvelles lignes de codes (ou celles qui sont modifiées). Faire évoluer les tests permet donc de chercher d’autres types d’erreurs.

 

Principe 6 : les tests dépendent du contexte

Les tests sont effectués différemment dans des contextes différents. Par exemple, les logiciels de sécurité critique seront testés différemment d’un site de commerce électronique.

 

Principe 7 : l’illusion d’absence d’erreurs

La notion d’erreur est typique des objectifs et non du savoir-faire. L’absence d’erreur peut être expliquée par plusieurs éléments : des tests non pertinents, des données de tests non pertinentes, beaucoup d’erreurs de même types, etc. L’absence d’erreur ne signifie donc pas, réellement, qu’il n’y a aucune erreur.

 

La psychologie du test

 

Le travail de testeur valideur doit se réaliser en collaboration avec les développeurs puisqu’ils ont tous deux un objectif commun : la livraison d’un logiciel de la meilleure qualité possible dans les meilleurs délais et au meilleur coût.

La co-localisation des équipes de tests et de réalisation favorise la communication entre les équipes. Cela permet d’anticiper les efforts de tests en fonction de l’avancement des développements. Il peut, aussi, être bien de réaliser des réunions informelles entre développeurs et testeurs.

Enfin, il est important de déculpabiliser les erreurs (toute action humaine entraîne des erreurs. Eviter une vision négative) afin de former une équipe complémentaire.

 

Pour conclure

 

Le test, dans le processus de développement, a une importance primordiale. Il permet de soulever les problèmes et de les anticiper. Tout cela, conduit à une réduction des coûts et des délais de production et permet de créer une relation de confiance avec le client.

Il est capital de créer un objectif commun entre développeur et testeur, l’équipe doit travailler ensemble. Le testeur n’est pas là pour juger le travail du développeur et le retour d’un bug ne doit pas être vu comme un échec du développeur.

Pour poursuivre, nous pouvons mettre en avant le fait qu’il existe des supports pour rédiger et exécuter les tests. Nous pouvons citer, pour exemple, Hiptest et Zephyr.