Exemples de titres de bug : 35+ bons et mauvais titres (2026)

Pourquoi le titre compte plus que le reste du rapport

Un bon titre de bug = où c'est arrivé + ce que vous avez fait + ce qui a mal tourné + la condition de déclenchement. Si ces quatre éléments tiennent en une ligne, un développeur peut reproduire le problème sans vous poser de question. C'est toute la différence entre un bon et un mauvais titre. Vous trouverez ci-dessous 40 exemples en vis-à-vis, répartis sur sept scénarios — connexion, inscription, paiement, mobile, API, performance et interface — pour réécrire vos propres bugs.

Les développeurs lisent d'abord le titre, systématiquement. Un titre vague signifie soit une question supplémentaire, soit un ticket ignoré. Pire : un mauvais titre ne sera jamais sauvé par un bloc d'environnement bien rempli — personne n'ouvre un ticket intitulé « bouton cassé ».

Un titre réussit ou échoue sur quatre points : est-il précis (nomme le composant ou la page), est-il observable (des faits, pas « ça ne marche pas »), porte-t-il des conditions (navigateur, appareil, type de compte, moment) et permet-il de juger la portée (panne totale ou cas limite) ?

La formule de titre en 4 parties


[Composant/Page] + [Action] + [Résultat inattendu] + [Condition]

Comment remplir chaque bloc :

  • Composant : page de paiement / modale de connexion / liste des commandes / POST /api/orders
  • Action : cliquer, envoyer, téléverser, changer d'onglet, scanner
  • Résultat inattendu : aucune réaction, 500 renvoyée, montant avec un chiffre en trop, statut non synchronisé, texte qui se chevauche
  • Condition : Chrome 120, iOS 17.2, largeur <390px, comptes entreprise uniquement, après un timeout réseau

Sentence case, composant en premier, pas de mention de priorité. C'est la convention que la plupart des équipes adoptent — et la cohérence importe plus que le choix de la convention.

1. Connexion et comptes (7 exemples)

Titre faible Titre fort
Le bouton de connexion ne marche pas Un clic sur « Se connecter » dans Chrome 120 ne déclenche rien ; la console renvoie TypeError: login is not a function
L'e-mail de réinitialisation n'arrive pas Aucun e-mail de réinitialisation après un clic sur « Mot de passe oublié » avec une adresse Gmail (spam vérifié après 30 minutes)
Mauvaise redirection après connexion Un utilisateur standard arrive sur /admin au lieu de /dashboard après connexion ; reproductible depuis la v5.3
Le captcha échoue en boucle Un captcha valide est refusé avec « Code invalide » — uniquement en fenêtre de navigation privée
Le compte se verrouille Trois mots de passe erronés verrouillent définitivement le compte, alors que le message indique « réessayez dans 24 heures »
La session n'est pas invalidée La connexion sur un second appareil n'invalide pas la première session, qui reste pleinement utilisable
La connexion SSO échoue Le callback SSO renvoie « Invalid signature » depuis la rotation du certificat de l'IdP

À retenir : sur les bugs de connexion, la condition (navigateur, type de compte, navigation privée) décide si quelqu'un peut reproduire. Ne l'omettez jamais.

2. Inscription et formulaires (7 exemples)

Titre faible Titre fort
Impossible de s'inscrire L'inscription refuse les adresses contenant « + » (ex. user+test@x.com) avec « Format d'e-mail invalide »
La validation du téléphone ne marche pas Un numéro complet à 11 chiffres déclenche encore « Saisissez un numéro à 11 chiffres »
L'indicateur de robustesse est faux Un mot de passe de 8 caractères contenant déjà des chiffres affiche encore « doit contenir un chiffre »
La liste déroulante ne répond pas La liste « Pays » ne peut plus être sélectionnée au clavier après un filtrage de 3 caractères
Le formulaire s'envoie deux fois Appuyer sur Entrée dans le formulaire d'inscription envoie deux fois et crée deux comptes en double
Champ obligatoire non contrôlé L'inscription aboutit sans cocher « J'accepte les conditions » et le compte est créé malgré tout
Mauvais fuseau horaire par défaut Le fuseau est défini sur UTC+0 par défaut ; les utilisateurs en UTC+8 doivent le corriger à chaque inscription

À retenir : remplacez la description par des valeurs d'entrée concrètes. Une vraie chaîne de caractères vaut dix phrases du type « la saisie ne marche pas ».

3. Paiement et commande (7 exemples)

Titre faible Titre fort
Le paiement échoue Un total de 129,99 € s'affiche en 1 299,99 € au moment du paiement (un chiffre en trop) ; la page de paiement reprend le mauvais montant
Le code promo ne fonctionne pas Un code expiré s'affiche encore comme « valide » ; son application renvoie une 500 et vide le panier
Le compteur du panier ne se met pas à jour Le badge du panier en en-tête affiche encore « 1 » après suppression du dernier article, jusqu'au rechargement de la page
Double débit Un nouvel essai de paiement après un timeout réseau débite deux fois la même commande (commande n° 10231)
Les informations de facturation ne sont pas enregistrées Les informations de facturation de l'entreprise sont effacées après un retour en arrière puis un retour au paiement
Statut de remboursement désynchronisé La commande affiche encore « Payée » côté client alors que le remboursement a été exécuté (commande n° 10388)
Moyen de paiement manquant L'option carte bancaire est absente au paiement — uniquement pour les comptes sur l'ancien modèle de facturation

À retenir : dès qu'il s'agit d'argent ou de numéro de commande, mettez le numéro dans le titre. Le temps de triage est divisé par deux.

4. Mobile et responsive (6 exemples)

Titre faible Titre fort
La mise en page casse sur mobile Le bouton « Ajouter au panier » chevauche le prix sur iPhone 14 (iOS 17.2) en dessous de 390px de large
La page ne défile plus L'ouverture d'une modale bloque le défilement sur mobile ; il reste bloqué après la fermeture
Le champ est masqué par le clavier Le clavier d'Android Chrome masque le bouton « Envoyer », qui devient impossible à toucher
Mise en page paysage cassée La barre de navigation passe à la ligne sur iPad en paysage (1024×768) et le logo chevauche le menu
Les images ne se chargent pas L'image principale du produit est absente sur Safari iOS 16 ; la console renvoie 403 (signature CDN expirée)
Cible tactile trop petite Les boutons de pagination sur mobile ont une cible de 12×12px, sous le minimum d'accessibilité de 44px

À retenir : sur mobile, « mobile » n'est pas une condition. Indiquez le modèle exact, la version d'OS et la largeur de viewport.

5. Données, API et permissions (6 exemples)

Titre faible Titre fort
L'export échoue L'export de plus de 10 000 commandes renvoie une 504 ; un export par lots fonctionne
Horodatages erronés Les horodatages du rapport accusent 8 heures de retard — uniquement pour les utilisateurs du fuseau Asia/Shanghai
La recherche ne renvoie rien La recherche « iPhone » renvoie 0 résultat alors que 12 enregistrements correspondants existent en base
Lignes dupliquées en paginant La liste des commandes répète les 3 dernières lignes de la page 1 en tête de la page 2
Erreur de téléversement Un PNG de plus de 5 Mo renvoie 413, mais l'interface affiche « Téléversement terminé » avec un fichier vide
Élévation de privilèges Un rôle en lecture seule peut appeler DELETE /api/projects/12 et supprimer un projet avec succès

À retenir : pour les bugs d'API, mettez le code HTTP, le chemin d'endpoint ou le seuil dans le titre. C'est la moitié du travail de débogage fait d'avance.

6. Performance et chargement (3 exemples)

Titre faible Titre fort
La page est lente Le LCP de la page d'accueil est de 8,2s en 4G, à cause de 2,1 Mo de JavaScript non compressé
Fuite mémoire La mémoire passe de 120 Mo à 900 Mo après 20 changements d'onglet, puis l'onglet plante
L'API est lente Le P95 de l'endpoint de liste produits est de 4,8s (base 300ms) — uniquement en pic de soldes

À retenir : un bug de performance exige un chiffre et une base de référence, sinon personne ne peut juger s'il s'agit d'un défaut.

7. Textes et détails d'interface (4 exemples)

Titre faible Titre fort
Faute de frappe sur la page « Parametres » doit s'écrire « Paramètres » sur la page de confirmation de commande
Icônes incohérentes Deux des quatre icônes de la page de réglages sont en style linéaire, deux en style plein
Mode sombre illisible En mode sombre, le texte de saisie est en #333 sur fond sombre, donc quasiment invisible
Message d'erreur inutile Un téléversement échoué affiche seulement « Opération échouée », sans cause ni indication de nouvelle tentative

À retenir : pour les bugs de texte et d'interface, écrivez « ce qui est affiché → ce qui devrait l'être ». C'est le coût de relecture le plus faible de tous les types de bugs.

7 habitudes qui dégradent les titres

  • Des émotions au lieu de faits : « c'est trop lent », « mauvaise UX », « ça marche mal » — impossible d'agir.
  • Seulement des noms de champs : « le titre est faux », « la priorité est fausse » — ne dit rien du problème.
  • La priorité dans le titre : « [URGENT] la connexion est cassée » — la priorité a son propre champ et se périme.
  • Des hypothèses présentées comme un résultat : « la connexion échoue à cause du cache » — écrivez « probablement » et gardez l'hypothèse hors du titre.
  • Tout mettre dans un même titre : « connexion, inscription et paiement sont cassés » — un ticket, un symptôme vérifiable.
  • Omettre la condition : « erreur intermittente » — intermittent exige aussi des conditions.
  • Terminologie incohérente : mélanger « panier » et « caddie », ou « connexion » et « login », casse la recherche et les statistiques.
  • Comment rédiger selon votre rôle

    Rôle Méthode
    QA / testeur Formule complète en 4 parties, toutes les conditions (navigateur, appareil, compte, réseau)
    Support ou ops qui escalade Symptôme visible côté utilisateur + chemin reproductible + capture d'écran ; omettez la cause si elle est inconnue et notez « en attente de validation technique »
    Relecteur UAT Ancrez sur le critère d'acceptation : « Échoue au critère AC-3 : statut de commande non mis à jour en 5 secondes »
    Chef de produit Décrivez l'impact visible pour prioriser, sans remplacer le symptôme technique

    Quand un titre est traduit

    Titre en langue d'origine Titre français
    结算页删除最后一件商品后购物车角标未更新 Le compteur du panier n'est pas mis à jour après suppression du dernier article au paiement
    Android Chrome 键盘遮挡提交按钮,无法点击 Android Chrome : le clavier masque le bouton Envoyer, impossible de le toucher
    只读角色可删除项目(越权) Un rôle en lecture seule peut supprimer des projets (élévation de privilèges)

    Trois règles lorsqu'un titre change de langue : conservez les noms de composants dans leur langue d'origine s'il s'agit de noms propres, traduisez littéralement le résultat observable, et ne traduisez jamais les messages de log ni les codes d'erreur. Une stack trace traduite est un bug impossible à reproduire.

    FAQ

    Quelle longueur pour un titre de bug ? Environ 60 caractères ou 10 mots au maximum, pour qu'il ne soit pas tronqué dans les listes. S'il ne tient pas, soit le symptôme principal n'est pas isolé, soit il s'agit de deux bugs.

    Faut-il mettre la priorité ou la gravité dans le titre ? Non. La priorité est un champ à part qui évolue avec la planification. Une fois modifiée, le titre devient faux — et il pollue la recherche.

    Puis-je écrire une hypothèse dans le titre si je ne connais pas la cause ? « Probablement causé par X » est acceptable, mais jamais comme conclusion. Justifiez-la dans le corps du ticket, sinon vous orientez mal le triage.

    Un bug présent sur plusieurs navigateurs : plusieurs tickets ? Le titre porte le symptôme principal, les différences d'environnement vont dans le champ environnement ou notes. Ne séparez que si les chemins de correction diffèrent réellement, par exemple des chemins iOS et Android distincts.

    Title Case ou sentence case ? Les deux fonctionnent, mais restez cohérent avec votre backlog existant. Sans historique, le sentence case se lit mieux et se parcourt plus vite.

    Le titre reste à vous, le reste peut être automatique

    Soyons clairs : BugCapturer n'écrit pas votre titre — cela demande votre jugement sur ce que vous avez observé. En revanche, les champs fastidieux et faciles à oublier peuvent se remplir seuls :

    • Contexte technique automatique : URL, navigateur, système d'exploitation, résolution d'écran et taille de viewport sont capturés, donc les conditions du titre n'ont plus à être recopiées à la main.
    • Données de diagnostic : les logs console de niveau erreur et les requêtes réseau en échec (HTTP ≥ 400) sont collectés, avec anonymisation automatique des paramètres sensibles (jetons, mots de passe, clés d'API).
    • Captures annotées : sélectionnez la zone au glisser-déposer et ajoutez flèches, cadres et texte, pour fixer « où c'est faux » dans l'image.
    • Enregistrement d'écran : capturez l'onglet courant et découpez le clip, pour transmettre aux développeurs une vidéo de 12 secondes qu'ils peuvent vérifier.
    • Partage ou synchronisation en un clic : générez un lien de partage que des collaborateurs externes ouvrent sans inscription, ou poussez le rapport vers Feishu Bitable ou un webhook générique.

    Ainsi, vous n'avez que cette seule ligne de titre à réussir, et l'outil remplit le reste.

    Checklist à télécharger

    Collez-la près de votre écran et vérifiez avant d'envoyer :

    • Le composant ou la page est-il nommé ?
    • Un fait observable remplace-t-il « ça ne marche pas » ?
    • Le titre contient-il des conditions (navigateur / appareil / compte / réseau / largeur) ?
    • Contient-il un chiffre vérifiable (code de statut, numéro de commande, montant, durée, seuil) ?
    • Décrit-il exactement un seul symptôme ?
    • La priorité et toute hypothèse non vérifiée sont-elles retirées ?
    • Reste-t-il sous 60 caractères ou 10 mots environ ?

    Les sept points validés, vos titres passeront avant 90 % du backlog.

    Pour aller plus loin : modèle de rapport de bug (liste complète des champs et modèle à copier) · signaler les bugs efficacement · modèle de cas de test avec exemples · Format de rapport de bug · Rédiger les étapes de reproduction