Leçon 5 / 20

Décrire un défaut comme un test reproductible

12 min Git — flux d’équipe et récupération Gratuit

Objectif : Transformer un défaut constaté sur une page du site en critère de test binaire.

Un défaut constaté sur une page ne suffit pas à guider une recherche dans l’historique. Si sa reproduction dépend du navigateur, de données variables ou d’une interprétation subjective, deux personnes peuvent obtenir des verdicts différents. Vous allez transformer un symptôme du site en une vérification qui répond toujours par « conforme » ou « défectueux ».

La stratégie de branches et les règles d’intégration du dépôt sont déjà documentées dans README.md ; vous n’avez pas à les redéfinir ici. Dans le projet fil rouge, nous prenons un défaut simulé : le lien « Récupération » de la navigation ne mène plus à la section qui porte l’identifiant correspondant. Le problème concerne la cohérence entre le lien de navigation et sa destination dans index.html.

Décrire les deux états à distinguer

Un test de régression commence par une comparaison explicite. L’état sain est une révision connue dans laquelle le comportement attendu est présent ; l’état défectueux est une révision où le défaut est observable. Pour notre exemple, l’état sain possède un lien href="#recuperation" et une section id="recuperation", tandis que l’état défectueux a perdu cette correspondance.

Décrivez le défaut avec des faits que vous pouvez vérifier, pas avec une cause supposée. Par exemple : « Depuis la page d’accueil, l’activation du lien Récupération doit atteindre la section Récupérer un commit perdu avec reflog ; sur la révision défectueuse, la destination n’existe pas. » Cette description fixe le contexte, l’action et le résultat attendu sans prétendre déjà savoir quel changement a introduit le problème.

Transformer le symptôme en critère binaire

Pour que le contrôle soit reproductible, choisissez une propriété précise du défaut. Ici, vous vérifiez que l’identifiant ciblé par le lien existe bien dans la page. Le contrôle lit index.html et renvoie un code de sortie non nul si l’élément est absent ; il ne dépend ni d’un clic manuel, ni du chargement d’un navigateur, ni d’un service externe.

Vérifier la destination du lien de récupérationTexte
from pathlib import Path
import re
import sys

html = Path("index.html").read_text(encoding="utf-8")

lien_present = re.search(
    r'<a\s+class="depot-lien"\s+href="#recuperation">Récupération</a>',
    html,
)
section_presente = re.search(
    r'<section\b[^>]*\bid="recuperation"',
    html,
)

if lien_present and section_presente:
    print("OK : le lien Récupération cible une section existante.")
    sys.exit(0)

print("ÉCHEC : le lien Récupération ou sa section cible est absent.")
sys.exit(1)
Résultat attendu
Sur l’état sain :
OK : le lien Récupération cible une section existante.

Sur l’état défectueux simulé, si l’identifiant recuperation a été renommé ou supprimé :
ÉCHEC : le lien Récupération ou sa section cible est absent.

Enregistrez ce contrôle temporairement hors du dépôt ou exécutez-le depuis un terminal avec Python 3, à la racine du projet. Il ne modifie aucun fichier du site : il lit uniquement index.html. Le résultat est binaire et interprétable sans ambiguïté : le code de sortie 0 signifie que le critère est satisfait ; le code 1 signale le défaut recherché.

Écarter les verdicts fragiles

Une vérification manuelle peut compléter le contrôle, mais elle ne doit pas en remplacer le critère précis. « La page semble cassée » ne dit pas quelle observation déclenche l’échec ; « l’identifiant visé par le lien de navigation est absent » est testable. Évitez aussi de faire dépendre le verdict d’un contenu qui change souvent, d’une ressource réseau ou d’un réglage local non consigné.

Le contrôle donné vise volontairement une seule propriété du site. Il ne valide pas toutes les destinations de navigation et ne prouve pas que la présentation visuelle est correcte ; il répond uniquement à la question formulée. Gardez cette limite dans la description du défaut afin que l’équipe ne prenne pas un succès partiel pour une validation complète de la page.

À retenir

  • Formulez le défaut comme une action observable suivie d’un résultat attendu.
  • Identifiez une révision saine et une révision défectueuse à partir du même critère.
  • Choisissez un contrôle déterministe qui distingue ces deux états par un résultat binaire.
  • Vérifiez que le contrôle réussit sur l’état sain et échoue sur l’état défectueux.
  • Délimitez clairement ce que le test vérifie et ce qu’il ne vérifie pas.

Dans la prochaine leçon, vous utiliserez un état sain et un état défectueux pour encadrer la recherche du changement qui a introduit le défaut.

Envie d'aller plus loin ?

Les cours Enovatic sont gratuits et le resteront. Si vous cherchez un accompagnement encadré, nos formations professionnelles sont animées par les mêmes formateurs.