La taverne du testeur

Que devons nous tester avec la régression ?

La régression est un sujet majeur du test en Agile. Son importance est prépondérante car en Agile on construit son produit de manière itérative et il est essentiel de s’assurer que l’ajout d’une fonctionnalité n’a pas impacté négativement l’existant. Pour évaluer cet impact nous avons un outil: la régression.

Cette régression fréquente est d’ailleurs la source de nombreuses évolution dans les pratiques. Je pense notamment:

  • au besoin d’automatisation: pour gagner du temps sur l’exécution
  • aux tests exploratoires: pour tester plus en moins de temps des tests non réutilisés mais aussi lutter contre le paradoxe des pesticides
  • aux démarches DevOps et de test continu: pour fluidifier les processus de modification
  • au shift right: et le test en production pour compenser une couverture moins importante des tests manuels
  • au BDD: pour avoir des tests pouvant intégrer la régression avant même le développement de la fonctionnalité

Bref, il n’y a pas de produit Agile pérenne sans bonne campagne de régression. Mais comment s’assurer que notre campagne de régression est « bonne » ? Que doit contenir une campagne de régression ?

Pour répondre à cela je vous invite tout d’abord à revenir sur le rôle d’une campagne de régression ?

Pourquoi une campagne de régression ?

Une campagne de régression a de nombreux rôles. Son principal est avant tout de détecter des régressions majeures sur le produit en construction. Il est évidemment impossible de détecter toutes les régressions (l’exhaustivité des tests est impossible) ou même de tester tout autant en profondeur une nouvelle fonctionnalité qu’une fonctionnalité déjà implémentée pour des raisons de budget et de temps.

Tout tient donc dans le concept de « régression majeure » et je vous propose de revenir rapidement dessus:

  • Il faut d’abord détecter des « régressions », c’est à dire que le comportement doit être le même entre la version précédente et la nouvelle. Il n’y a, sur le papier, pas besoin de détecter des anomalies déjà présentes. En 2019, j’ai assisté à un tutoriel sur l’IA et le problème de l’Oracle pour ma première JFTL. Le présentateur considérait que la régression était simple à concevoir car on avait un oracle: la production! Et qu’au final une régression était un « contrôle de version ». J’aime beaucoup cette vision car elle limite le but de la régression et permet de se concentrer sur l’essentiel.
  • Il faut que cette régression soit « majeure », c’est à dire jugée suffisamment impactante pour occasionner une vraie gêne pour nos utilisateurs ou sur l’utilisation du produit… ce qui revient souvent à, de manière pratico-pratique, détecter des anomalies que nous souhaitons corriger plutôt que de les envoyer en production.

En partant de ces points il est plus simple d’imaginer ce à quoi doit ressembler une campagne de régression.

Le contenu d’une campagne de régression

Pour qu’une régression soit majeure (et ici ont dépend fortement du contexte) il faut qu’elle ait un impact conséquent ou qu’elle se produise suffisamment fréquemment pour occasionner une vraie gêne.

Il semble donc particulièrement important, d’après le 2ème point, que cette régression représente fidèlement les usages. Une régression sur un scénario jamais utilisé par les utilisateurs et n’ayant aucun impact non fonctionnel n’a potentiellement que peu d’intérêt. C’est d’ailleurs l’objet du bel article de Bruno Legeard sur le test des usages définis grâce à des logs d’utilisation.

Une régression doit donc proposer des parcours utilisateurs fréquents…Néanmoins ce n’est pas suffisant! Même si ces tests peuvent/doivent présenter la grande majorité des tests d’une campagne de régression il est primordial d’aller plus loin avec la régression… et c’est d’ailleurs pour cela que Bruno indique bien que l’outil gravity n’allège pas totalement la charge de travail sur la régression mais 80%.

Les 20% restant de l’effort sont dédiés à ce que l’on voit souvent sous le terme de cas « non-passants » ou de tests liés au non fonctionnel comme les performances et la sécurité. En effet, les tests de sécurité sont nécessaires afin d’éviter des intrusion, du vol de données ou des usurpations d’identité… mais les attaques ne sont pas aussi fréquentes que le flux des utilisateurs lambdas. De même une baisse de la performance et modifiera pas le résultat des tests d’usages mais détériorera très fortement l’expérience de nos utilisateurs.

Une campagne de régression doit donc proposer des tests complémentaires aux usages et ces tests doivent être en adéquation avec les différents risques identifiés… ces risques étant souvent liés à du non fonctionnel.

Conclusion

La campagne de régression est un élément majeure de la qualité lors des développement d’un produit en Agile. Il est donc nécessaire d’avoir une « bonne » campagne de régression pour avoir, sur la durée, un produit de qualité. Pour arriver à cela il faut évidemment avoir des tests proches des usages pour éviter l’illusion d’absence d’erreur mais ce n’est malheureusement pas suffisant, il faut aussi intégrer des tests plus spécifiques et souvent liés au non fonctionnel (sécurité, performances, robustesse…)

Cet article est disponible en anglais sur le blog de Gravity avec ce lien.

Pensez à rejoindre le groupe « Le métier du test » si vous souhaitez échanger sur le test

Merci à tous ceux qui mettent « j’aime », partagent ou commentent mes articles

N’hésitez pas à faire vos propres retours d’expérience en commentaire.

Une réponse

  1. Salutations, et bien que j’aie été satisfait de ce qui a été rapporté à propos de l’e-mail, je suis devenu un adepte fidèle de votre site, en plus de cela, l’ajout qualitatif que vous apportez dans le domaine du labo logiciel, et son leader rôle dans l’ajout qualitatif fourni par le laboratoire de logiciels à l’organisation dans laquelle il travaille et maintient sa position et son leadership de Grâce au travail diligent et distingué qu’il accomplit, merci pour le travail, que vous soyez bien et paix

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

culture générale

Bon ou mauvais ?

Les indicateurs sont un outil nécessaire mais dont il faut constamment se méfier. Je suis d’ailleurs revenu spécifiquement sur des exemples de dérives dans un article de décembre 2021. Malheureusement la complexité des indicateurs ne se limite pas à leurs potentielles dérives ou la loi de Goodhart. En effet, tout

Lire la suite »
Présentation

[STLS 2019] La stratégie de test sur un système multi-environnements

Ce support de présentation a été utilisé lors de la présentation du 17 octobre à la STLS. Cette présentation a été faite par Pierre Potel et moi-même. [googleapps domain= »drive » dir= »file/d/1DWvUj-b2R954xxkt4d1Zcyy3ym_Q9Xps/preview » query= » » width= »760″ height= »480″ /] N’hésitez pas à me suivre et lire mes autres articles si vous voulez en apprendre plus sur le

Lire la suite »
Image représentant le test et de nombreux éléments liés
Couvertures

Le test en image (3)

Tests en cycle en V: qui fait quoi? (image à retravailler) Les retest Tests boite noire Tests boite blanche Tests d’acceptance: Souhaiteriez vous vivre dans cette maison? Couverture des méthode (1 test minimum par fonctionnalité): Couverture des instructions (1 test minimum pour chaque ligne de code): Couverture des chemins d’exécution

Lire la suite »