Les bugs typiques des apps codées avec l’IA

Cas limites, erreurs non gérées, clés exposées, données de démo, textes non traduits. Repérez les bugs typiques d’une app codée avec l’IA avant vos clients.

Sommaire

L’app a été construite en un week-end, en décrivant chaque écran à une IA. La démo du lundi est parfaite : l’inscription marche, le panier se remplit, le paiement passe. Le mardi, un vrai client tape un nom avec une apostrophe, perd la 3G au mauvais moment, et l’app se fige sur un écran blanc.

Le vibe coding, l’expression lancée par le chercheur Andrej Karpathy en février 2025 et élue mot de l’année 2025 par le dictionnaire Collins, consiste à décrire ce qu’on veut à une IA en langage courant et à la laisser écrire le code. Le gain de vitesse est réel. Mais les apps produites ainsi échouent souvent aux mêmes endroits, si régulièrement qu’on peut en dresser la carte.

Cet article n’est pas un réquisitoire contre l’IA : elle accélère, le test humain sécurise. Vous y trouverez les familles de bugs typiques, la façon de repérer chacune en test, des exemples concrets et une grande liste de contrôle à dérouler avant de publier.

Pourquoi les apps codées avec l’IA cassent toujours aux mêmes endroits

Une IA répond à la demande telle qu’elle est écrite. Demandez « une page d’inscription » et vous obtenez des champs et un bouton qui fonctionnent quand tout va bien. Personne n’a précisé quoi faire si le numéro existe déjà, si le réseau coupe ou si le nom contient une apostrophe. L’IA n’invente pas ces exigences à votre place.

Trois autres causes s’ajoutent :

  • Le contexte manque. L’IA ne sait pas que vos clients ont des téléphones d’entrée de gamme, paient en francs CFA et lisent le français comme l’anglais.
  • Chaque écran naît séparément. Généré dans une conversation différente, il a son propre style, ses propres mots, ses propres règles.
  • Personne ne relit. Par définition, le vibe coder ne lit pas le code ligne à ligne. Si personne ne teste, personne ne voit rien.

Les chiffres confirment le risque. En juillet 2025, l’éditeur de solutions de sécurité Veracode a publié une étude portant sur 80 tâches de programmation confiées à plus de 100 modèles d’IA : dans 45 % des cas, le code produit contenait une faille appartenant au Top 10 de l’OWASP, la liste de référence des risques web. Les modèles les plus gros ne faisaient pas significativement mieux.

Définition

Chemin heureux (happy path) : le parcours où tout se passe comme prévu, avec des données « normales ». Cas limite (edge case) : une situation à la frontière de ce qui est prévu, comme une valeur vide, énorme, négative ou inattendue. Les apps générées excellent sur le premier et trébuchent sur le second.

Cas limites et erreurs non gérées : là où l’app casse en premier

Les cas limites oubliés

Pour chaque champ, essayez la série suivante : vide, quelques espaces seulement, 300 caractères, des accents et des apostrophes (« Éyenga N’Diaye »), un emoji. Pour un numéro de téléphone, tapez-le comme les gens le font vraiment : avec ou sans indicatif, avec des espaces. Pour un montant : zéro, négatif, décimal, très grand. Pour une date : le 29 février, le 31 d’un mois qui n’en a que 30.

Testez aussi les gestes : toucher deux fois un bouton d’envoi, revenir en arrière pendant un enregistrement, tourner l’écran en plein formulaire.

Exemple

Dans une app de cagnotte entre collègues, générée en quelques heures, le champ « montant » accepte « -5000 ». La contribution s’enregistre, le total de la cagnotte baisse, et rien ne prévient l’utilisateur. L’IA a produit un champ numérique, comme demandé ; personne n’avait écrit qu’un don devait être positif.

Les erreurs non gérées

Le code généré suppose souvent que le serveur répond toujours, vite et bien. Provoquez le contraire : mode avion pendant une action, réseau lent, session expirée, stockage plein. Sur le web, l’onglet Network des outils de développement de Chrome permet de couper le réseau d’un clic.

Les signes qui ne trompent pas : une roue de chargement qui tourne sans fin, un écran blanc, un message brut comme « TypeError : Cannot read properties of undefined », un « Something went wrong » sans aucune piste, un formulaire vidé après l’erreur. Sur le web, ouvrez aussi la console : une page qui « marche » peut y afficher des dizaines d’erreurs rouges.

États vides, chargements et données de démo oubliées

Les états vides. L’IA conçoit les écrans avec des données d’exemple, rarement sans données. Créez un compte tout neuf et visitez chaque écran : « Mes commandes » est-il vide, cassé, ou affiche-t-il « undefined » ? Un bon état vide explique la situation et propose une action, par exemple « Vous n’avez pas encore de commande. Découvrir les produits ».

Les chargements. Pendant un envoi, le bouton doit se désactiver et un indicateur doit apparaître. Sinon, sur un réseau lent, l’utilisateur touche encore et crée des doublons. Vérifiez aussi que la page ne saute pas quand les images arrivent.

Les données de démo. C’est le défaut le plus gênant, car il se voit tout de suite. Cherchez :

  • « John Doe », « Lorem ipsum », « jane@example.com », « Acme Inc. » ;
  • des produits fictifs, des prix en dollars au lieu de francs CFA, des numéros au format américain ;
  • des avis clients inventés, avec cinq étoiles et des prénoms étrangers à votre marché ;
  • un compte de test ou un bouton « Admin » encore visible, des identifiants préremplis dans le formulaire de connexion ;
  • des images d’illustration génériques, des liens « À propos » ou « Mentions légales » qui mènent nulle part.

Des avis inventés ne sont pas un simple oubli : ils trompent vos clients. Supprimez-les avant toute publication.

Sécurité : clés exposées et règles d’accès trop larges

C’est la famille la plus grave, parce qu’elle ne se voit pas à l’écran.

Les clés exposées. Une app web ou mobile envoie son code au téléphone de l’utilisateur : tout ce qui s’y trouve peut être lu. Une clé secrète de paiement ou d’API d’IA placée dans ce code est donc publique. Sur votre propre app web, ouvrez l’onglet Sources des outils de développement et cherchez « secret », « sk_ », « service_role » ou « api_key ». Attention aux nuances : chez Supabase, la clé publique (anon ou publishable) est prévue pour le navigateur, à condition que la sécurité au niveau des lignes soit activée ; la clé secrète, elle, ne doit jamais y apparaître.

Les règles d’accès trop larges. Les bases de données en ligne prisées des apps générées reposent sur des règles d’accès. La documentation de Supabase demande d’activer la sécurité au niveau des lignes (Row Level Security) sur chaque table exposée : sans elle, une table peut être lue et modifiée par toute personne qui possède la clé publique. Chez Firebase, des règles ouvertes laissent quiconque devine l’identifiant du projet lire, modifier ou supprimer les données ; une règle qui vérifie seulement que l’utilisateur est connecté donne à chaque compte l’accès aux données de tous les autres.

Pour le repérer sans rien attaquer, créez deux comptes de test, A et B. Avec B, cherchez les commandes, messages, fichiers et profils de A, par les listes, la recherche et les liens partagés. Avec un compte ordinaire, essayez d’ouvrir l’adresse /admin. Puis demandez au développeur de vous montrer les règles d’accès, table par table.

Attention

Ces vérifications se font uniquement sur votre propre app, ou avec une autorisation écrite, et avec des comptes de test. Les limites à respecter sont détaillées dans notre guide des vérifications de sécurité à la portée de tout testeur. Pour une app qui manipule de l’argent ou des données de santé, faites aussi appel à un expert.

Interface incohérente, accessibilité oubliée, textes non traduits

Les incohérences. Trois styles de boutons, « Valider » ici et « Envoyer » là, des dates au format « 10/20/2026 » sur un écran et « 20/10/2026 » sur l’autre, « XAF », « FCFA » et « $ » dans la même app. Pour les repérer, faites une capture de chaque écran et posez-les côte à côte : les différences sautent aux yeux. La cohérence est l’une des heuristiques de Nielsen : elle évite à l’utilisateur de réapprendre l’app à chaque écran.

L’accessibilité oubliée. Boutons-icônes sans nom, texte gris pâle à la mode, cibles minuscules, zones cliquables impossibles à atteindre au clavier. Cinq minutes de TalkBack ou de VoiceOver sur le parcours principal, et quelques appuis sur la touche Tab sur le web, suffisent à révéler l’essentiel. La méthode complète est dans le guide pour tester l’accessibilité d’une app.

Les textes non traduits. L’app est en français, mais les erreurs disent « Invalid email », le bouton dit « Submit » et les dates s’affichent « Oct 20 ». Pluriels ratés (« 1 commandes »), textes qui débordent quand la traduction est plus longue, moitié de l’écran restée en français quand on passe le téléphone en anglais. Changez la langue du téléphone, déclenchez chaque message d’erreur et lisez les SMS et e-mails envoyés par l’app.

Performance : rapide chez le créateur, lente chez l’utilisateur

Sur l’ordinateur du créateur, branché à la fibre, tout va vite. Chez l’utilisateur, les causes typiques de lenteur apparaissent : images de plusieurs mégaoctets tout droit sorties d’un générateur d’images, liste entière chargée d’un coup au lieu de page par page, grosse bibliothèque ajoutée pour une seule fonction, mêmes requêtes envoyées plusieurs fois.

Pour le repérer, ouvrez l’onglet Network des outils de développement : regardez le poids total transféré et le nombre de requêtes, puis limitez le débit à la 3G et rechargez. Sur mobile, prenez le téléphone le moins cher de votre liste. Les seuils et la méthode complète sont dans le guide pour tester sur un téléphone modeste et un réseau lent.

La liste de contrôle avant de publier une app codée avec l’IA

Déroulez cette liste avant chaque publication. Elle complète la liste de contrôle avant publication, valable pour toutes les apps.

Cas limites

Erreurs et états

Données de démo

Sécurité

Interface, accessibilité, langues

Performance

Astuce

Un bon rapport de bug est aussi une excellente requête pour l’IA : étapes, résultat attendu, résultat obtenu, contexte. Demandez-lui de corriger le défaut et de vérifier ce cas précis, puis retestez vous-même tout le parcours : en réparant une chose, l’IA en casse parfois une autre. C’est tout l’intérêt du test de régression.

L’IA vous a fait gagner des semaines ; quelques heures de test humain protègent ce gain. Pour aller plus loin sur ce partage des rôles, lisez pourquoi le vibe coding a besoin de tests humains. Et pour un regard neuf avant le lancement, vous pouvez faire tester votre app par les testeurs GeekTest, sur leurs propres téléphones.

À retenir

  • Les apps codées avec l’IA réussissent le chemin heureux et échouent sur ce que personne n’a demandé.
  • Testez en priorité les cas limites, les erreurs, les états vides et les données de démo oubliées.
  • La sécurité est la famille la plus grave : clés secrètes exposées et règles d’accès trop larges ne se voient pas à l’écran.
  • Deux comptes de test suffisent à révéler beaucoup de défauts d’accès, sans rien attaquer.
  • L’IA accélère, le test humain sécurise : chaque bug bien décrit devient une meilleure requête.

Pour aller plus loin

Partager cet article

L’auteur

Donchi

Donchi écrit les guides de l’Académie GeekTest, l’espace d’apprentissage de la plateforme de testeurs de Geek Institut : des conseils concrets pour sortir des applications fiables et faciles à utiliser, et pour progresser comme testeur.

Et maintenant ?

Ne manquez aucun article

Chaque nouvel article de l’Académie est annoncé sur la chaîne WhatsApp GeekTest. Rejoignez-la et abonnez-vous : des conseils de test utiles, sans spam.

Rejoindre la chaîne WhatsApp (nouvel onglet)

Faites tester votre app par de vrais humains

De vrais testeurs sur Android, iPhone, web et ordinateur, leurs retours et un rapport de test : ce que l’IA ne voit pas.

Faire tester mon app

Devenez testeur

Testez des applications sur votre téléphone ou votre ordinateur, mettez en pratique ce que vous apprenez ici, et soyez rémunéré.

Devenir testeur

Un projet d’application ?

L’équipe de développement de Geek Institut conçoit et réalise des applications web et mobiles, de l’idée à la publication. Parlons de votre projet.

Parler de mon projet