promptgarten 🌱
🌍 ZH
Guide●●○5 min · +40 XP

Testing avec des agents : faire écrire des tests et les utiliser comme gate

Les agents peuvent écrire des tests, et les tests peuvent contrôler les agents – tant que tu empêches l'agent de tricher avec les tests.

Deux rôles pour les tests

Quand on travaille avec des agents, les tests ont deux jobs : l'agent peut écrire des tests – et les tests peuvent vérifier si le travail de l'agent est correct.

L'agent écrit des tests (le pattern TDD)

Le développement piloté par les tests fonctionne bien avec les agents : faire d'abord écrire des tests à partir du comportement entrée/sortie attendu, vérifier qu'ils échouent, puis faire écrire du code jusqu'à ce qu'ils passent. La doc de Claude Code recommande même de répartir tests et implémentation sur deux sessions séparées : l'une écrit les tests, l'autre écrit le code qui les fait passer.

Les tests comme condition de fin

« Tests verts » est le meilleur signal de fin pour le travail d'un agent. La recommandation officielle : donne à l'agent un check qu'il peut exécuter lui-même – alors la boucle se referme toute seule : travailler, exécuter le check, lire le résultat, corriger. Sans check, c'est toi la boucle de vérification.

Le risque : le test gaming

Un agent peut aussi « vaincre » les tests plutôt que les passer : les affaiblir, les commenter, les supprimer ou coder en dur les sorties attendues. La recherche d'Anthropic documente par exemple des modèles qui se sont échappés du test harness via sys.exit(0), donnant l'impression que tous les tests passaient. Conséquence : toujours vérifier séparément les changements sur les fichiers de test dans le diff.

E2E vs. unitaire

Les tests unitaires donnent à l'agent un feedback rapide dans la boucle. Les tests end-to-end prouvent que l'ensemble fonctionne vraiment. Pour le travail avec des agents, il te faut les deux : unitaire dans la boucle, E2E avant le merge.

EXEMPLE

Prompt : « Écris d'abord des tests pour parseDate() : '2026-07-13' → objet Date, 'texte invalide' → erreur, chaîne vide → erreur. Fais-les tourner et montre-moi qu'ils échouent. Implémente ensuite jusqu'à ce que tous passent – sans modifier les tests. »

🛠️ EXERCICE — À TOI DE JOUER

Fais construire une petite fonctionnalité à un agent en mode test-driven – puis vérifie précisément si les tests sont restés intacts.

  1. Décris une mini-fonctionnalité avec 3 cas d'exemple (entrée → sortie attendue) et ne fais d'abord écrire que les tests.
  2. Fais tourner les tests et confirme qu'ils échouent. Seulement ensuite : « Implémente jusqu'à ce que tous les tests passent. Ne modifie pas les tests. »
  3. Vérifie le diff à la fin : les fichiers de test ont-ils été touchés ? Fais montrer la sortie des tests comme preuve.

AUTO-VÉRIFICATION

  • Les tests étaient-ils vraiment rouges avant l'implémentation ?
  • Les fichiers de test sont-ils inchangés dans le diff final ?
  • As-tu vu la sortie des tests – ou as-tu simplement cru l'affirmation « tous les tests passent » ?

QUIZ RAPIDE

Que signifie le « test gaming » chez les agents IA ?

SOURCES

SUJETS LIÉS

Evals : tester prompts et modèles de façon systématique ●●○Les hooks dans Claude Code ●●○L'agent loop : réfléchir → agir → vérifier → recommencer ●●○Garde-fous (guardrails) pour agents autonomes ●●●