Quels tests automatisés demander à une IA quand elle modifie une application existante ?

Par Thomas Bellanger ·

Demander à une IA de modifier une application existante est devenu banal : corriger un bug, refactorer un composant, ajouter une règle métier, adapter une API, faire évoluer une interface. Le vrai sujet n’est plus seulement de savoir si l’IA peut produire du code, mais quels tests automatisés avec IA exiger avant d’accepter ce code.

Une modification peut fonctionner dans le cas démontré par l’assistant et casser silencieusement un comportement existant. C’est là que les tests automatisés IA deviennent utiles : non pas comme garantie magique, mais comme méthode de revue augmentée. L’IA peut aider à générer des scénarios, écrire des tests unitaires, renforcer des tests API, proposer des tests UI automatisés, produire des données de test et maintenir une suite existante. Mais elle doit être cadrée.

Ce guide propose une approche concrète : quoi demander à l’IA selon le type de changement, comment formuler les prompts, comment vérifier les tests produits et quelles limites garder en tête avant de merger.

Le vrai risque : une modification IA qui fonctionne localement mais casse l’existant

Le piège classique est simple : l’IA modifie le code, lance ou imagine un test rapide, puis conclut que tout va bien. Pourtant, dans une application existante, le risque se situe souvent ailleurs : comportement historique, compatibilité avec d’anciennes données, cas limites, permissions, erreurs API, parcours utilisateur secondaire, intégration avec un service tiers.

Exemple : une IA modifie le calcul d’une remise pour corriger un bug sur les coupons promotionnels. Le cas présenté fonctionne. Mais elle oublie les remises cumulées, les arrondis de TVA, les clients professionnels, les commandes déjà créées et les anciennes règles de priorité. Sans tests ciblés, la correction peut introduire une régression plus coûteuse que le bug initial.

Pourquoi les tests générés après coup ne suffisent pas toujours

Une IA peut écrire des tests qui valident principalement sa propre solution. C’est utile, mais insuffisant. Les tests peuvent passer tout en ratant l’essentiel si :

  • les assertions vérifient seulement qu’une fonction est appelée ;
  • les mocks remplacent toutes les dépendances importantes ;
  • les cas limites ne sont pas couverts ;
  • les anciens comportements ne sont pas testés ;
  • le test valide l’implémentation au lieu du résultat métier ;
  • le scénario ne reproduit pas les conditions réelles de production.

Le bon réflexe consiste donc à demander à l’IA non seulement d’écrire des tests, mais aussi de justifier le risque couvert par chaque test.

Ce qu’il faut obtenir avant d’accepter la modification

Avant de merger une modification proposée par IA, vous devez obtenir au minimum :

  • une liste des comportements impactés ;
  • des tests automatisés adaptés au niveau de risque ;
  • des assertions métier lisibles ;
  • des cas nominaux, limites et erreurs ;
  • une preuve d’exécution des tests ;
  • une explication des zones non couvertes ;
  • une revue humaine des tests comme du code produit.

Commencer par cartographier le changement avant de demander des tests

La meilleure façon de savoir comment utiliser l’IA pour l’automatisation des tests n’est pas de lui demander “écris-moi des tests”. Il faut d’abord lui demander d’analyser le changement. Une bonne suite de tests part d’une cartographie du risque.

Identifier la nature de la modification

Demandez à l’IA de classer la modification dans une ou plusieurs catégories :

  • correction de bug : un comportement attendu ne fonctionnait pas ;
  • nouvelle règle métier : une logique fonctionnelle change ;
  • refactor : le comportement doit rester identique malgré une restructuration ;
  • changement d’API : contrat, payload, statut ou authentification évolue ;
  • modification UI : écran, formulaire, parcours ou état visuel change ;
  • migration technique : framework, version de langage, librairie ou base de données ;
  • optimisation de performance : cache, requête, pagination, traitement asynchrone.

Lister les comportements qui ne doivent pas changer

Dans une application existante, les tests les plus précieux ne sont pas toujours ceux qui valident la nouveauté. Ce sont souvent les tests de non-régression. Demandez explicitement à l’IA de lister :

  • les comportements historiques à préserver ;
  • les rôles utilisateurs concernés ;
  • les messages d’erreur existants ;
  • les formats de données déjà consommés ;
  • les anciennes configurations encore supportées ;
  • les parcours critiques métier.

Repérer les dépendances à risque

Une modification apparemment locale peut toucher un système plus large. Avant de demander des tests, faites identifier par l’IA les dépendances à risque :

  • base de données et migrations ;
  • appels API externes ;
  • services internes partagés ;
  • permissions et rôles ;
  • paiements, facturation ou panier ;
  • files d’attente et traitements asynchrones ;
  • cache, indexation ou recherche ;
  • emails, notifications ou webhooks.

Matrice de risques utilisée pour choisir les tests automatisés à demander à une IA

Les tests à demander à l’IA selon le type de modification

La bonne question n’est pas “faut-il des tests unitaires, API ou UI ?”, mais “quel risque cette modification introduit-elle ?”. Voici une matrice de décision simple à utiliser pendant une revue de code assistée par IA.

Modification IA Risque principal Tests à demander Preuve attendue
Fonction ou règle métier Calcul faux, priorité incorrecte, cas limite oublié Tests unitaires, tests de cas limites, données invalides Assertions sur le résultat métier, pas sur l’implémentation
Plusieurs modules Interaction cassée entre services Tests d’intégration Exécution avec dépendances réalistes ou environnement contrôlé
API Contrat rompu pour les consommateurs Tests API, tests de contrat, compatibilité Statuts, schémas, erreurs et formats validés
Interface utilisateur Parcours cassé, message absent, régression visuelle Tests UI automatisés, end-to-end, test visuel IA Parcours critique exécuté, états d’écran vérifiés
Correction de bug Correction superficielle Test de reproduction, puis non-régression Test rouge avant correction, vert après correction
Refactor Comportement modifié sans intention Tests de caractérisation, non-régression Mêmes entrées, mêmes sorties qu’avant

Si l’IA modifie une fonction ou une règle métier : tests unitaires et cas limites

Les tests unitaires générés par IA sont pertinents lorsque la modification concerne une fonction, une classe, un service ou une règle métier isolable. Demandez à l’IA de couvrir :

  • le cas nominal ;
  • les valeurs limites ;
  • les entrées nulles, vides ou invalides ;
  • les dates, fuseaux horaires et arrondis ;
  • les priorités entre règles ;
  • les permissions ;
  • les erreurs attendues.

Exemple de demande utile : “Ajoute des tests unitaires pour cette règle de remise. Couvre le cas nominal, les remises cumulées, les montants à zéro, les arrondis, les clients non éligibles et les conflits de priorité. Pour chaque test, explique quelle régression il empêche.”

Si l’IA touche plusieurs modules : tests d’intégration

Les tests unitaires ne suffisent pas quand l’IA modifie une interaction entre plusieurs parties du système. Un service peut être correct seul et échouer une fois connecté à la base de données, à une file d’attente ou à un autre module.

Demandez des tests d’intégration lorsque la modification touche :

  • un flux de commande ;
  • une écriture puis lecture en base ;
  • un traitement asynchrone ;
  • un service partagé ;
  • un cache ;
  • une migration de données ;
  • une logique déclenchée par événement.

Un bon test d’intégration doit vérifier un comportement observable, avec des données contrôlées et une isolation suffisante pour rester stable en CI.

Si l’IA change une API : tests de contrat et de compatibilité

Les tests API avec IA sont indispensables dès qu’un endpoint, un schéma, une authentification ou une erreur change. L’IA doit vérifier bien plus qu’un simple statut 200.

Demandez-lui de couvrir :

  • les codes HTTP attendus ;
  • les payloads obligatoires et optionnels ;
  • les erreurs de validation ;
  • l’authentification et les permissions ;
  • la pagination, le tri et les filtres ;
  • la rétrocompatibilité avec les consommateurs existants ;
  • les champs supprimés, renommés ou nouvellement requis.

Formulation efficace : “Analyse cette modification d’API comme un risque de rupture de contrat. Propose les tests nécessaires pour vérifier les statuts, le schéma de réponse, les erreurs, la pagination, les permissions et la compatibilité avec les clients existants.”

Si l’IA modifie l’interface : tests end-to-end et tests visuels

Les tests UI automatisés avec IA sont utiles pour sécuriser les parcours critiques : inscription, connexion, paiement, création d’un objet, validation d’un formulaire, modification d’un paramètre. Ils ne doivent pas tout couvrir, car une suite end-to-end trop large devient lente et fragile.

Demandez à l’IA de tester les parcours à forte valeur :

  • l’action principale de l’écran ;
  • les erreurs utilisateur ;
  • les états de chargement ;
  • les champs obligatoires ;
  • les permissions ;
  • les messages de confirmation ;
  • les comportements responsive si le changement les impacte.

Le test visuel IA peut compléter ces tests lorsqu’un changement d’interface risque de casser la mise en page. Des outils de comparaison visuelle ou de détection d’écarts peuvent repérer des régressions que des assertions DOM ne voient pas : bouton déplacé, contenu tronqué, contraste inattendu, composant masqué.

Attention toutefois : un test visuel ne remplace pas une assertion fonctionnelle. Une interface peut être visuellement correcte et fonctionnellement cassée.

Interface web testée par des tests UI automatisés sur un ordinateur portable

Si l’IA corrige un bug : test de reproduction puis test de non-régression

Pour une correction de bug, la demande la plus importante est : écris d’abord le test qui échoue avant la correction. Ce test prouve que le problème est compris. Ensuite seulement, le code doit être modifié pour faire passer le test.

Demandez à l’IA :

  1. de résumer le bug en comportement attendu et comportement observé ;
  2. de créer un test de reproduction minimal ;
  3. de vérifier que ce test échoue sur l’ancien code ;
  4. de corriger le code ;
  5. de confirmer que le test passe ;
  6. d’ajouter, si nécessaire, des cas voisins pour éviter une correction trop étroite.

Prompts utiles pour obtenir de vrais tests automatisés, pas seulement du code de test

Pour générer des scénarios de test avec l’IA, la qualité du prompt fait une énorme différence. Plus vous demandez une analyse de risque, des assertions et une justification, moins vous obtenez de tests décoratifs.

Prompt pour analyser l’impact d’une modification

“Analyse cette modification avant d’écrire des tests. Liste les fichiers touchés, les comportements impactés, les dépendances à risque, les régressions possibles et les types de tests recommandés. Distingue ce qui doit être couvert par tests unitaires, intégration, API, UI ou tests visuels.”

Prompt pour générer des scénarios de test complets

“Propose une matrice de scénarios de test pour cette modification. Inclus cas nominal, cas limites, erreurs, données invalides, permissions, anciennes données, compatibilité et interactions avec les dépendances. Pour chaque scénario, indique le niveau de test recommandé et la raison.”

Prompt pour renforcer les assertions

“Relis ces tests et identifie les assertions faibles. Remplace les vérifications superficielles par des assertions métier observables. Évite les tests qui vérifient uniquement qu’une méthode est appelée, qu’un composant existe ou qu’un snapshot complet n’a pas changé.”

Prompt pour générer les données de test

Les données de test générées par IA peuvent faire gagner du temps, à condition d’être réalistes et contrôlées. Demandez des jeux de données qui couvrent les cas standards et les cas extrêmes.

Prompt utile : “Génère des données de test réalistes et anonymisées pour cette règle. Inclus des cas valides, invalides, limites, historiques et incompatibles. Propose des fixtures ou factories réutilisables, sans données personnelles réelles.”

Prompt pour expliquer pourquoi chaque test est nécessaire

“Pour chaque test proposé, explique quelle régression il détecte, quelle partie du comportement il protège, pourquoi ce niveau de test est adapté et quelles zones restent non couvertes.”

Ce prompt force l’IA à rendre visibles ses angles morts. Il transforme la génération de tests en support de revue, pas en simple production de fichiers.

Comment vérifier que les tests proposés par l’IA sont fiables

Les tests générés par IA doivent être relus comme n’importe quel code critique. Un test qui passe n’est pas forcément un bon test. Il peut être trop permissif, trop mocké, trop lié à l’implémentation ou incapable d’échouer pour la bonne raison.

Contrôler que le test échoue pour la bonne raison

Un bon test doit pouvoir échouer si le comportement attendu est cassé. C’est le principe red/green : le test échoue avant la correction, puis passe après. Pour une nouvelle fonctionnalité, vous pouvez demander à l’IA de montrer quelle modification minimale ferait échouer le test.

Question à poser : “Si je casse volontairement cette règle métier, quel test échoue ? Est-ce qu’il échoue pour la bonne raison ?”

Vérifier les assertions et pas seulement l’exécution

Méfiez-vous des tests qui se contentent de vérifier que le code ne plante pas. Les signes d’un test faible sont fréquents :

  • aucune assertion métier ;
  • assertion trop générale ;
  • snapshot énorme et illisible ;
  • mock de toutes les dépendances ;
  • vérification d’un détail d’implémentation ;
  • test qui passerait même avec un résultat faux ;
  • nom de test vague ou trompeur.

Évaluer la stabilité dans la CI

Un test utile localement mais instable en intégration continue devient vite un coût. Demandez à l’IA d’identifier les sources de flakiness :

  • dépendance au temps réel ;
  • réseau externe ;
  • données partagées ;
  • ordre d’exécution implicite ;
  • sélecteurs UI fragiles ;
  • attentes arbitraires ;
  • environnement non isolé.

Pour les tests end-to-end, privilégiez des sélecteurs stables, des données préparées proprement et des attentes explicites plutôt que des pauses fixes.

Faire relire les tests comme du code produit

La question “l’IA remplacera-t-elle les testeurs QA ?” revient souvent. Dans ce contexte, la réponse pratique est non : l’IA augmente la capacité de production et de maintenance des tests, mais elle ne remplace pas le jugement humain sur le risque, la priorité métier et l’expérience utilisateur.

Les développeurs et QA doivent relire :

  • la pertinence des scénarios ;
  • la lisibilité des tests ;
  • la justesse des données ;
  • la robustesse des assertions ;
  • la place du test dans la pyramide de tests ;
  • le coût de maintenance.

Quels outils utiliser selon le besoin ?

L’article ne dépend pas d’un outil précis : la méthode compte davantage que la marque. Mais certaines familles d’outils sont adaptées à des besoins différents.

Besoin Familles d’outils utiles Quand les utiliser
Tests unitaires Frameworks de test du langage, assistants IA de code Fonctions, services, règles métier isolables
Tests API Outils de requêtes API, tests de contrat, frameworks backend Endpoints, schémas, statuts, authentification
Tests UI et end-to-end Playwright, Cypress, Selenium ou équivalents Parcours utilisateur critiques et validations front-end
Tests visuels Outils de comparaison visuelle, plateformes de visual testing Régressions de mise en page, composants, responsive
Maintenance des tests Assistants IA, auto-réparation encadrée, analyse de flakiness Suites existantes, sélecteurs cassés, refactors UI
CI/CD GitHub Actions, GitLab CI, Jenkins ou équivalents Exécution automatique avant merge et déploiement

L’auto-réparation des tests peut être utile quand une interface change et qu’un sélecteur devient obsolète. Mais elle doit être surveillée : si un outil “répare” un test en pointant vers le mauvais élément, il peut masquer une vraie régression. Toute réparation automatique doit être relue.

Pipeline CI exécutant des tests automatisés avant la mise en production

Adapter les demandes à la maturité de votre projet

Toutes les applications n’ont pas le même niveau de tests. La bonne stratégie dépend de l’existant.

Application sans tests

Ne demandez pas à l’IA de tout tester d’un coup. Commencez par les zones modifiées et les parcours critiques. Pour une correction de bug, exigez au moins un test de reproduction. Pour une règle métier importante, demandez des tests unitaires sur les cas principaux et limites.

Application avec tests partiels

Demandez à l’IA de s’intégrer au style existant : conventions de nommage, fixtures, factories, helpers, structure des dossiers. Elle doit étendre la suite plutôt que créer un système parallèle difficile à maintenir.

Application avec CI mature

Dans un projet déjà bien testé, l’IA doit surtout aider à analyser l’impact, compléter les angles morts, réduire la flakiness et maintenir les tests. Exigez que tout nouveau test soit exécuté dans la CI et que les échecs soient expliqués, pas seulement corrigés au hasard.

Checklist avant d’accepter une modification faite par IA

Avant de valider une pull request contenant du code modifié par IA, utilisez cette checklist :

  • La modification est-elle décrite en termes de comportement, pas seulement de fichiers changés ?
  • Les risques de régression ont-ils été listés ?
  • Les tests couvrent-ils les cas nominaux, limites et erreurs ?
  • Les anciens comportements importants sont-ils protégés ?
  • Les tests API vérifient-ils statuts, payloads, erreurs et permissions ?
  • Les tests UI couvrent-ils seulement les parcours critiques, sans surcharger la suite ?
  • Les tests visuels sont-ils utilisés pour les vrais risques d’affichage ?
  • Les données de test sont-elles réalistes, isolées et anonymisées ?
  • Les assertions vérifient-elles le résultat métier ?
  • Les mocks ne masquent-ils pas le comportement à tester ?
  • Le test peut-il échouer pour la bonne raison ?
  • Les tests passent-ils dans la CI ?
  • Les tests ont-ils été relus par un humain ?
  • Les limites de couverture sont-elles explicites ?

Conclusion : l’IA doit produire des preuves, pas seulement du code

Utiliser l’IA pour modifier une application existante peut accélérer le développement, réduire le temps de revue et améliorer la couverture des chemins critiques. Mais seulement si vous lui demandez les bons tests et si vous refusez le faux sentiment de sécurité.

La règle à retenir est simple : chaque modification IA doit venir avec une preuve testable de non-régression. Selon le changement, cette preuve peut prendre la forme de tests unitaires, tests d’intégration, tests API, tests UI automatisés, test visuel IA ou données de test renforcées.

L’IA est très utile pour proposer des scénarios, écrire une première version, repérer des cas limites et maintenir une suite existante. Mais la responsabilité finale reste humaine : choisir les risques à couvrir, relire les assertions, vérifier l’exécution et décider si la modification mérite d’être mergée.