13 janv. 2009

Stratégie de test & Tests de Non-Régression

De nombreux articles ont déjà été écrits sur les tests de non régression, mais, d’expérience, il règne encore beaucoup de confusion sur le sujet.

Qu’appelle t’on régression et tests de non-régression ?

Pour décrire ce qu’est un test de non-régression (TNR pour les intimes) il faut rappeler la définition du mot régression. Régression est un terme souvent employé en psychologie et en biologie. Dans le langage courant il signifie « Marche en arrière, recul » (définition Larousse). Dans l’activité du test logiciel la régression concernera un recul concernant une ou plusieurs fonctionnalités applicatives attendues, quelque chose qui marchait conformément aux attentes et qui ne fonctionne plus correctement.

L’objectif premier des tests de non régression est de déterminer si des modifications (ou des ajouts de fonctionnalités) dans une nouvelle version vont perturber des fonctions qui s’exécutait correctement dans la version de référence (la version précédente par itération.) Il faut noter que l’objectif des TNR n’est pas de trouver de nouvelles anomalies, mais bien de s’assurer que ce qui fonctionnait précédemment continue de fonctionner de manière satisfaisante.

En Non-Régression, on teste tout ?

Sur la majorité des projets, même les plus petits, le nombre de tests nécessaires pour s’assurer que les toutes fonctionnalités d’une nouvelle version ne régressent pas par rapport à la version précédente peut vite devenir ingérable.
Avoir une livraison sans régression est un pré-requis pour les clients. Généralement la direction projet s’attend à ce que la majorité des efforts de tests porte sur les nouvelles fonctionnalités non pour s’assurer que le logiciel fonctionne toujours de façon adéquate.
Il est donc obligatoire d’inclure une approche concernant les TNR dans la stratégie de tests qui permettra d’en limiter le nombre tout en atteignant les objectifs attendus.

Quels tests inclure dans les scénarii de non régression ?

Une des activités principales de la définition des tests de non-régression est de sélectionner les tests qui devront être passés version après version. Cette sélection doit permettre de limite le nombre de tests à exécuter tout en gardant un degré de confiance élevé sur la représentabilité de la couverture par rapport aux fonctionnalités à vérifier.

Sont inclus principalement 2 types de tests :

1. Les tests dont l’importance est le plus élevé sur les fonctionnalités majeures du produits (ce qui revient à dire que pour pouvoir faire des TNR il faut prioritiser les requirements et les tests.)
2. Des tests sur les parties les moins robustes du logiciel (celles où par le passé des anomalies et/ou régressions ont été trouvées.)

Il faut revoir régulièrement la sélection des TNR pour conserver un volume de tests acceptable. En particulier, il faut se poser des questions concernant les tests qui sur une longue période ne trouvent aucune anomalie.

Pour finir, l’étude des anomalies (qui étaient des régressions) trouvées en production doit donner lieu à des modifications de la couverture des TNR.

Quelles fonctionnalités inclure dans la couverture des TNR ?

Comme vu plus haut, les TNR doivent rester une portion congrue de la stratégie de tests. Pour sélectionner les fonctionnalités à intégrer dans la couverture, il est nécessaire de se baser sur des priorités basées sur une estimation du risque, risque au niveau des produits en incluant, en priorité, des fonctionnalités majeures de l’applicatif, mais aussi risque au niveau projet en incluant les fonctions modifiées ou possiblement impactées par des effets de bord.

Automatisation des TNR

Par définition, les TNR devraient être exécutées sur chaque nouvelle version livrée. Outre le nombre d’exécutions qui entre pour une part importante dans le ROI, l’importance de la fonction et son côté fondamental en font de bons candidats pour l’automatisation,
Pour ces raisons, il faut se poser des questions sur l’intérêt d’un TNR qui est difficilement automatisable.

Ici se finit mon premier billet, n’hésitez pas à me contacter par mail ou à commenter pour faire part de vos remarques, suggestions, désaccords…

Aucun commentaire:

Enregistrer un commentaire