Idée en 30 secondes
Le test des agents IA est différent du test logiciel classique, car le comportement d'un agent dépend non seulement du code, mais aussi du LLM, du contexte, des tools et de la séquence des étapes.
C'est pourquoi les systèmes de production utilisent en général une stratégie de test multi-couches : unit tests, datasets d'évaluation, comparaisons de régression contre baseline, et replay de traces réelles.
Cette approche aide à trouver les erreurs avant release et à contrôler la dégradation du système dans le temps.
Le problème
Les approches classiques de test fonctionnent mal pour les agents IA. Dans du code classique, la même entrée donne presque toujours le même résultat. Dans les systèmes avec LLM, le comportement peut changer selon :
- la formulation du prompt ;
- la version du modèle ;
- le contexte ;
- les résultats des tools.
À cause de cela, des tests locaux peuvent passer, mais en production l'agent peut :
- faire des étapes inutiles et gonfler le token cost ;
- choisir le mauvais tool dans un scénario complexe ;
- devenir instable après un changement de version de modèle ou de prompt.
Sans stratégie de test structurée, ces problèmes sont en général découverts après release.
Concept principal / modèle
La stratégie de test d'agents se construit comme plusieurs niveaux de validation, et non comme un seul type de test. Chaque niveau capture sa propre classe de risques dans le comportement du système.
| Méthode | Ce que ça valide | Quand l'utiliser |
|---|---|---|
| Unit testing | Logique locale de l'agent : sélection de tools, schéma de sortie, règles runtime de base | À chaque changement de code, de prompt ou de règles de policy |
| Golden datasets | Jeu de cas stable pour des runs d'eval reproductibles | Quand il faut des résultats comparables entre baseline et candidate |
| Eval harness | Comportement du système dans une eval pipeline standardisée | Avant release et pour la validation de release |
| Regression testing | Différences (diff) entre versions sur les mêmes cas d'evaluation et de replay | Après un changement de modèle, de prompt, de tools ou de policy |
| Replay & debugging | Incidents de production et failure traces pour analyser les pannes | Quand il faut reproduire un incident et trouver la cause d'une dégradation |
Plus le niveau de validation est élevé, plus le run est coûteux, donc il est en général exécuté moins souvent.
Comment ça fonctionne
Dans les systèmes d'agents en production, les tests sont généralement organisés comme une release pipeline : les changements de code, de prompts, de version de modèle ou de tools passent par unit tests, datasets d'évaluation, comparaison de régression avec baseline et replay de scénarios réels.
Comment un changement passe dans la pipeline
- Change — toute modification de code, prompt, version de modèle ou tools déclenche un nouveau run.
- Unit — validation de la logique locale : sélection de tools, traitement des résultats, règles runtime de base.
- Eval — l'agent passe sur des scénarios d'évaluation, et la qualité est mesurée avec des métriques comme
tool correctnessettask completion. - Regression — les résultats du candidate sont comparés au baseline pour détecter les dérives indésirables.
- Gate — CI bloque la release si des métriques clés chutent ou si des scénarios critiques cassent.
- Replay — replay est utilisé avant release (traces sauvegardées en staging) et après release (monitoring de la dégradation).
Test pyramid pour agents
Dans de nombreuses équipes, les tests d'agents sont organisés en pyramide :

Ici, la regression n'est pas une couche séparée, mais une méthode de comparaison entre la nouvelle version et baseline sur les mêmes tests d'évaluation et de replay.
- Unit tests — rapides et peu coûteux, exécutés souvent.
- Evaluation — plus lents, mais valident le comportement de l'agent.
- Replay — les plus coûteux, mais couvrent des scénarios réels de production.
Implémentation
En pratique, cela ressemble généralement à plusieurs validations automatiques dans une pipeline. Les exemples ci-dessous sont schématiques : ils montrent la logique de validation et ne sont pas liés à une API de framework spécifique.
1. Unit test de la logique d'agent
On vérifie si l'agent choisit le bon tool.
def test_tool_selection():
tools = FakeTools(price_api_response={"symbol": "BTC", "price": 65000})
agent = Agent(tools=tools)
result = agent.run("What is the price of BTC?")
assert result.selected_tool == "crypto_price_api"
assert result.output["symbol"] == "BTC"
Dans les vrais unit tests, les appels à des tools externes sont en général stub/mock pour valider la logique de l'agent, pas les dépendances réseau.
2. Evaluation sur dataset de scénarios
L'agent est exécuté sur un ensemble de requêtes de test.
test_cases = [
{"input": "Find BTC price", "expected_tool": "crypto_price_api"},
{"input": "Search latest AI news", "expected_tool": "web_search"}
]
for case in test_cases:
result = agent.run(case["input"])
assert result.tool == case["expected_tool"]
La qualité d'évaluation est mesurée via des métriques de qualité, stabilité et coût (liste détaillée dans Métriques de test d'agents plus bas). Pour des tâches ouvertes ou complexes, les résultats sont souvent vérifiés en plus par LLM-as-a-judge. En production, pendant l'évaluation, on suit aussi token cost, latency et nombre d'étapes d'agent, afin que les nouvelles versions ne deviennent pas plus coûteuses, plus lentes, ou trop multi-étapes.
Le dataset d'évaluation lui-même doit aussi être versionné, sinon avec le temps il devient difficile de savoir si c'est le comportement de l'agent qui a changé, ou le jeu de scénarios.
3. Regression test après changement
Quand le modèle ou le prompt change, on exécute le même jeu d'évaluation.
run_eval_suite(model="baseline-model")
run_eval_suite(model="candidate-model")
Si les résultats diffèrent fortement, le changement doit être vérifié avant release.
En pratique, on compare aussi candidate et baseline sur des datasets de replay, pas uniquement sur des cas d'évaluation synthétiques.
4. Replay de scénarios production
Les requêtes production sont stockées et utilisées avant release (staging replay) et après release (post-release replay). Beaucoup d'équipes stockent automatiquement les failure traces et les ajoutent au regression dataset.
for trace in production_traces:
result = agent.run(trace.input)
evaluate(result, trace.expected_behavior)
Cette approche valide le comportement de l'agent sur des scénarios réels, pas seulement sur des tests synthétiques.
5. Ce qui bloque en général la release dans CI
En pratique, les tests d'agents sont souvent divisés en validations déterministes (logique locale, routing, format de sortie) et validations non déterministes (qualité de réponse, complétude, pertinence du raisonnement), pour lesquelles on utilise des métriques d'eval ou LLM-as-a-judge.
Dans CI, la release est généralement bloquée si des scénarios critiques échouent, si task success rate chute, si hallucination rate augmente, ou si latency et token cost montent fortement.
Erreurs typiques
Tester uniquement les prompts
L'équipe vérifie quelques exemples manuels et considère le changement sûr, mais cela ne couvre pas le comportement de l'agent en boucle d'exécution réelle.
Cause typique : pas de processus d'évaluation systématique avec des métriques claires.
En production, cela mène souvent à AI agent drift après release.
Absence de datasets d'évaluation de scénarios
Sans jeu de scénarios de référence, il est difficile de comparer baseline et candidate de façon objective.
Cause typique : pas de golden datasets construits.
Conséquence : la qualité de réponse devient instable, les régressions sont trouvées trop tard.
Pas de validation de regression
Après changement de modèle ou de prompt, le système peut "fonctionner" formellement, mais avec un profil de comportement différent.
Cause typique : pas de regression testing régulier.
En production, cela apparaît souvent comme un AI agent drift d'abord discret.
Pas de version de modèle figée
Les providers LLM mettent parfois à jour les modèles sans changer leur nom générique.
Si la version n'est pas figée (par exemple gpt-4o-2024-08-06), les tests peuvent passer aujourd'hui et échouer demain.
Cause typique : la configuration utilise un nom de modèle "flottant" sans pinning.
Dans les systèmes de production, on fige généralement une version de modèle précise ou une version snapshot.
Pas de tests de replay
Un incident arrive une fois en production, mais l'équipe ne peut pas le reproduire de façon stable en local.
Cause typique : les failure traces ne sont pas sauvegardées et agent replay and debugging n'est pas utilisé.
Conséquence : le même bug revient après les releases suivantes.
Tester uniquement des scénarios happy-path
Les datasets d'évaluation contiennent seulement des requêtes "propres", alors que les requêtes réelles sont souvent incomplètes, ambiguës, ou arrivent pendant une dégradation partielle de dépendances.
Cause typique : absence de scénarios avec erreurs de tools et dégradation de dépendances.
En production, cela ressemble souvent à tool failure ou partial outage.
Métriques de test d'agents
| Métrique | Ce qu'elle montre |
|---|---|
| Tool accuracy | justesse du choix de tool |
| Task success rate | achèvement de la tâche |
| Hallucination rate | fréquence de faits incorrects |
| Token cost | coût d'exécution |
| Latency | temps d'exécution de la tâche |
| Reasoning steps | nombre d'étapes de l'agent |
Limites de l'approche
Le test multi-couches ne supprime pas complètement la non-déterminisme, car les systèmes LLM ne sont pas entièrement déterministes. Il réduit seulement le risque et rend les changements de comportement visibles plus tôt.
Evaluation et replay sont aussi coûteux : ils augmentent la durée des runs, la charge CI et le coût des modèles.
C'est pourquoi, dans les équipes réelles, la batterie complète de validations est souvent divisée entre tests rapides pre-merge et runs plus lourds nightly ou pre-release.
En bref
- Un seul type de test ne suffit pas pour les agents IA.
- Les unit tests valident la logique locale.
- Evaluation et regression contrôlent la qualité du comportement après changement.
- Replay aide à reproduire les pannes réelles en production.
FAQ
Q : Les unit tests seuls suffisent-ils pour les agents ?
R : Non. Les unit tests détectent bien les erreurs locales, mais les risques comportementaux sont couverts par evaluation, regression et replay.
Q : Qu'est-ce que l'evaluation pour les agents ?
R : C'est l'exécution de l'agent sur un jeu de scénarios de test, avec évaluation des résultats via des métriques clés de qualité, stabilité et coût.
Q : Quand faut-il lancer les regression tests ?
R : Après toute modification pouvant affecter le comportement de l'agent : mise à jour de modèle, changement de prompt, nouveaux tools ou modification de logique runtime.
Q : Pourquoi utiliser le replay des traces production ?
R : Replay permet de reproduire des requêtes réelles de production et de vérifier si le système se comporte pareil après changement. Cela aide à trouver des pannes difficiles à reproduire avec des tests synthétiques.
Et ensuite
Si vous voulez transformer cette stratégie en pipeline opérationnelle, commencez par Unit Testing, puis ajoutez Golden Datasets, et standardisez l'exécution/évaluation via Eval Harness. Cette séquence donne un feedback rapide en développement et une vérification stable de la qualité dans CI.
Quand vous mettez à jour modèle, prompts ou tools, Regression Testing devient central. Et si le problème est déjà apparu en production, Replay and Debugging est souvent le plus efficace : vous rejouez la trace réelle et vérifiez où le comportement de l'agent a changé.
Pour les systèmes multi-agents avec Orchestrator Agent, ajoutez des tests dédiés sur l'ordre des étapes, les dépendances entre branches et les pannes partielles. Dans ces scénarios, les risques de production classiques apparaissent le plus souvent : Infinite Loop, Tool Spam, et Cascading Failures.