Module 01 · Les bases du test · 12 min
Des critères aux cas de test
Les techniques qui transforment un critère en cas qui le testent : chemin nominal, classes d'équivalence, valeurs limites, erreurs, états, droits et non-régression.
Révision
De la leçon précédente : quelles sont les trois parties d'un critère testable, et que faites-vous d'un chiffre que personne n'a décidé ?
La réponse du cours
Une situation de départ, une action, et un résultat observable. Un chiffre que personne n'a décidé reste « à confirmer », avec le nom de qui le décide : en inventer un plausible le ferait passer pour un chiffre approuvé.
Un critère, plusieurs cas
Un critère dit ce qui doit être vrai. Un cas de test le vérifie dans une situation précise. Un critère a presque toujours besoin de plusieurs cas, parce qu'un produit casse rarement sur le chemin évident : il casse sur la limite, sur le champ vide, sur le deuxième clic.
Sept techniques, dans l'ordre où les appliquer :
| Technique | Ce qu'elle donne | Exemple dans ClaimTriage |
|---|---|---|
| Chemin nominal | Un cas par résultat valide distinct | Un conseiller qui a le droit ouvre un sinistre automobile et reçoit sa fiche |
| Classes d'équivalence | Un cas par groupe d'entrées que la règle traite de la même façon | Rôle avec le droit, rôle sans le droit |
| Valeurs limites | Des cas sur chaque limite et sur la première valeur de chaque côté | 19, 20, 2 000 et 2 001 caractères |
| Erreurs et dépendances en panne | Un cas par refus, et par panne de ce dont le produit dépend | Le service des droits ne répond pas |
| États et enchaînements | Des cas pour les transitions qui comptent | Ouvrir deux fois le même sinistre ; l'ouvrir après sa clôture |
| Droits | Un cas par rôle qui doit être autorisé ou refusé | Conseiller, superviseur, auditeur |
| Non-régression | Un cas par défaut corrigé | R-06, le sinistre voyage critique, gardé pour toujours |
Les classes d'équivalence sont une affaire d'économie : si la règle traite tous les rôles autorisés de la même façon, un seul rôle autorisé suffit. Les valeurs limites, c'est là que vivent les bogues : un développeur qui écrit < au lieu de <= livre un produit juste partout, sauf exactement sur la limite. Une limite testée seulement au milieu est une limite non testée.
Exemple travaillé : la règle des droits
Critère : un conseiller dont le rôle n'a pas droit à la ligne de produit d'un sinistre reçoit ENTITLEMENT_DENIED et aucune fiche. La matrice des droits est tenue par la Conformité.
| Cas | Technique | Résultat attendu | Source |
|---|---|---|---|
| Conseiller avec le droit automobile, ouvre un sinistre automobile | Nominal | La fiche est renvoyée | Matrice des droits |
| Conseiller sans le droit automobile, ouvre un sinistre automobile | Classe d'équivalence : sans droit | ENTITLEMENT_DENIED, aucune fiche |
Matrice des droits |
| Superviseur, qui a droit à toutes les lignes, ouvre un sinistre de responsabilité civile | Droits | La fiche est renvoyée | Matrice des droits |
| Le service des droits ne répond pas | Dépendance en panne | ‹à confirmer avec le responsable technique› : refuser, ou laisser passer ? | Écrit nulle part |
| Un conseiller perd le droit automobile, puis ouvre un sinistre automobile dans la même session | État | ENTITLEMENT_DENIED, aucune fiche |
Matrice des droits |
Regardez la quatrième ligne. Personne n'a décidé ce que ClaimTriage doit faire quand le service des droits est arrêté : la matrice dit qui peut voir quoi, pas ce qui se passe quand on ne peut pas la lire. Le cas est écrit, et son résultat attendu reste à confirmer, avec son responsable. Écrire « refuser » parce que cela paraît plus prudent, ce serait inventer une spécification. C'est peut-être la bonne réponse ; ce n'est pas à vous de la donner.
Chaque cas nomme aussi la source de son résultat attendu. C'est cette colonne qui rend une relecture possible : n'importe qui peut vérifier le cas contre la matrice sans vous poser de question.
Pourquoi le cas « le service des droits ne répond pas » compte-t-il plus qu'un troisième cas nominal ?
La réponse du cours
Parce que c'est là que le comportement du produit n'est pas décidé. Un troisième cas nominal testerait encore la matrice sur un chemin qui fonctionne déjà. La dépendance en panne pose une question à laquelle personne n'a répondu : en production, le jour où le service est arrêté, ClaimTriage fera quelque chose, et aujourd'hui personne ne sait s'il laisse chaque conseiller voir chaque sinistre. Trouver cette question vaut plus que n'importe quel nombre de cas qui passent.
| A | Il teste un comportement non décidé, et la réponse pourrait être une divulgation de sinistres à des personnes qui n'y ont pas droit | ✅ |
| B | « Les cas d'erreur trouvent plus de bogues » | ⚠️ Souvent vrai, et à côté de l'essentiel : ici, c'est le résultat attendu lui-même qui manque |
| C | « Ça compte peu, le service est fiable » | ❌ La fiabilité, justement, personne ne l'a testée |
La leçon suivante répond à la question que ce tableau a laissée de côté : à quel niveau chacun de ces cas tourne-t-il ?