Aller au contenu
Moamen Elmasry
FREN
Votre parcours · 0 compétences sur 29
Retour au cours

Module 02 · Mener une campagne · 12 min

Du KO à l'anomalie

Qualifier un KO avant que quiconque ouvre un ticket, rédiger une anomalie qu'un développeur peut reproduire, et ne la fermer que sur un nouveau test réussi.


Révision

De la leçon précédente : un test est ignoré avec la raison « flaky, to look at later ». Que prouve le rapport sur le comportement qu'il couvre ?

Un KO n'est pas encore une anomalie

Un KO dit que le produit et le résultat attendu ne sont pas d'accord. Il ne dit pas encore lequel des deux a tort. Avant que quiconque rédige une anomalie, le KO est qualifié :

Le problème est La preuve Ce qui suit
Dans le produit Le résultat attendu vient d'une spécification que quelqu'un possède, et le produit s'en écarte Une anomalie, confiée à l'équipe qui corrige le produit
Dans le test Le résultat attendu n'a jamais été spécifié, ou il est périmé, ou le test vérifie un détail que personne n'a demandé Le test est corrigé, et la raison consignée
Dans l'environnement Connexion refusée, données manquantes, service non lancé : le test n'a jamais atteint le produit On répare l'environnement, on relance, on garde les deux exécutions

Il existe un quatrième cas, plus rare et important : le produit fait exactement ce qui a été spécifié, et la spécification a oublié quelque chose. Ce n'est pas un défaut du code. C'est une carence, et elle repart vers le product owner comme une exigence manquante, pas vers un développeur comme un bogue.

Où est le problème dans chaque KO ?
K1 · un sinistre voyage critique est parti en queue-travel ; la table de routage dit queue-A
K2 · le test attend le champ queue_id ; le contrat approuvé en juillet l'a renommé recommended_queue, que la fiche renvoie
K3 · l'exécution s'est arrêtée sur « connection refused » : le simulateur du système des sinistres n'était pas lancé sur le serveur de test

Une anomalie que l'on peut reproduire

Une anomalie s'écrit pour un développeur qui n'était pas là. Il doit pouvoir voir le problème sans rien vous demander. Elle contient :

  • un titre qui dit ce qui se passe, pas ce que vous en pensez : « Sinistre voyage critique routé vers queue-travel », pas « Routage cassé » ;
  • les étapes, avec les données exactes : quel sinistre, quelle ligne de produit, quelle urgence, quel build, quel environnement ;
  • le résultat attendu, et sa source : la table de routage, sa version, sa section ;
  • le résultat observé, exactement tel qu'il est apparu, avec la capture ou la ligne de journal ;
  • la gravité : à quel point c'est grave pour les personnes qui utilisent le produit. La priorité, c'est-à-dire dans quel délai corriger, est un autre champ, et en général la décision du product owner.

Elle ne contient pas la correction. Deviner la cause dans l'anomalie oriente le développeur avant qu'il ait regardé.

La fermer

Une anomalie se ferme sur une nouvelle exécution réussie, sur un build qui contient la correction. Pas sur « c'est corrigé, faites-moi confiance », ni sur un test modifié pour passer. Cette exécution devient un cas de non-régression, gardé pour de bon dans la suite, pour que le même défaut ne puisse pas revenir sans qu'on le voie.

Rédigez-en une

Dans CAMP-03, le cas CT-02 est KO : sinistre 7731, ligne voyage, urgence critique, build 2.3.0-142, environnement de test. La fiche indique queue-travel. Rédigez l'anomalie.

Une fois cette anomalie corrigée, quel cas le prouve, et que devient ce cas ensuite ? CT-02, relancé sur le build corrigé : un OK ferme l'anomalie, et CT-02 reste dans la suite comme cas de non-régression.