Ecrire des tests · rôle à tenir par l’agent : Contrôle qualité
Faire écrire le test qui empêche un défaut de revenir
tst-non-regression
Phase du chantier : 7. Vérification
Quand l’employer
À employer immédiatement après la reproduction d'un défaut, avant sa correction. À ne pas employer après la correction : le test écrit ensuite ne prouve pas qu'il aurait détecté le défaut.
Les 3 trous à remplir avant d’envoyer
Chaque trou est une décision déjà prise. Un trou que vous ne savez pas remplir n’est pas une case à improviser : c’est un travail de cadrage qui manque.
- {DEFAUT_REPRODUIT}
- Quelle suite de gestes provoque le défaut, à coup sûr ?
- Pourquoi ce trou existe. Un défaut qu'on ne sait pas reproduire ne peut pas être testé, et sa correction ne peut pas être prouvée.
- Si vous ne savez pas répondre. Ne corrigez rien tant que la reproduction n'est pas écrite. Corriger un défaut non reproduit produit une correction non vérifiable.
- {COMPORTEMENT_ATTENDU}
- Que devrait-il se passer à la place, exactement ?
- Pourquoi ce trou existe. Sans comportement attendu écrit, le test se contentera de vérifier que le système ne casse plus, ce qui n'est pas la même chose que le bon résultat.
- Si vous ne savez pas répondre. Retournez à la spécification. Si elle ne tranche pas, ce n'est pas un défaut, c'est une spécification incomplète, et le traitement est différent.
- {PORTEE_DU_DEFAUT}
- Quels autres endroits pourraient souffrir du même défaut ?
- Pourquoi ce trou existe. Un défaut est rarement unique : la même erreur de raisonnement a souvent été reproduite ailleurs le même jour.
- Si vous ne savez pas répondre. Demandez à l'agent de chercher le même motif ailleurs et de vous en rendre la liste, sans rien corriger.
Le corps du gabarit
Quatre parties, toujours dans cet ordre : le rôle et le mandat, le contexte factuel, la demande bornée, le format de sortie exigé. Les trous restent visibles à la copie, et c’est voulu : les remplir un par un est la dernière occasion de s’apercevoir qu’une décision manque.
## 1. RÔLE ET MANDAT
Tu es responsable de la vérification. Ton mandat est d'écrire le test qui aurait attrapé ce défaut s'il avait existé avant. Tu ne corriges pas le défaut : le test doit échouer maintenant, sur le code tel qu'il est.
## 2. CONTEXTE FACTUEL
Reproduction du défaut : {DEFAUT_REPRODUIT}
Comportement attendu à la place : {COMPORTEMENT_ATTENDU}
Endroits susceptibles de porter le même défaut : {PORTEE_DU_DEFAUT}
Le code actuel est fautif et le reste. Tu ne le modifies pas, même d'un caractère, même pour faire passer ton propre test.
## 3. DEMANDE BORNÉE
Écris le test de non régression.
Ce que je veux :
1. le test qui reproduit exactement la suite de gestes fournie et vérifie le comportement attendu ;
2. la preuve qu'il échoue aujourd'hui : le message d'échec, recopié ;
3. le nom du test, formulé comme la règle qu'il protège et non comme le numéro du défaut ;
4. la liste des autres endroits porteurs du même motif, trouvés mais non corrigés ;
5. les tests supplémentaires que ces endroits mériteraient, listés sans être écrits.
Ce que je ne veux pas : la correction du défaut, une modification du code existant, un test qui passe déjà, une refonte des tests voisins.
## 4. FORMAT DE SORTIE EXIGÉ
Le message d'échec du test est recopié tel qu'il apparaît, sans reformulation. Le nom du test décrit la règle. La liste des autres endroits est donnée avec le chemin du fichier et la ligne.
Ta réponse est refusable si le test passe, si du code de production a été modifié, ou si le nom du test ne dit pas quelle règle il protège.Ce que vous devez recevoir
- Un test qui échoue aujourd'hui, sur le code fautif inchangé.
- Le message d'échec recopié tel qu'il apparaît, sans reformulation.
- Un nom de test qui énonce la règle protégée, pas le numéro du défaut.
- La liste des autres endroits portant le même motif, avec fichier et ligne.
- Les tests supplémentaires suggérés, listés et non écrits.
Ce qui doit vous faire refuser
Ces motifs sont écrits comme des constats : « un fichier hors périmètre a été modifié » se vérifie, « le travail manque de rigueur » ne se vérifie pas.
- Le test passe alors que le défaut est toujours présent, donc il ne teste rien.
- L'agent a corrigé le défaut alors que seule l'écriture du test était demandée.
- Le message d'échec est reformulé ou résumé, ce qui empêche de le comparer plus tard.
- Le test porte le nom du défaut, ce qui le rendra incompréhensible dans six mois.
- Les autres endroits porteurs du même motif ont été corrigés au lieu d'être listés.
Selon pour qui vous construisez
- Pour un client.
- Le test de non régression est la preuve que le défaut signalé par le client ne reviendra pas. Nommez-le dans la réponse au client, avec sa date.