• › Connexion
  • Blog RIA
Section separator

Catégories

  • Annonces
  • Concepts et Usages
  • Événements
  • Général
  • Notes Techniques
  • Références
Adobe EMEA Silver Solution Partner Section separator

Abonnement

  • RSS Articles Articles (RSS)
  • RSS Articles Commentaires (RSS)
  • RSS mail Articles (Email)
  • Populaires
  • Récents
  • Commentaires
  • La courbe de deuil du Flexeur (vu 1 105 fois)
  • La courbe de deuil du Flexeur
  • Sortie de Kalileo 2.4
  • TestRail : on l’a testé, on l’a adopté !
  • DB2 à la page dans Hibernate 4
  • Parsley fait peau neuve
  • Sphaxslayer dans Contest logo Apache Flex : Nos propositions
  • Anonyme dans Contest logo Apache Flex : Nos propositions
  • Pbergsma dans Contest logo Apache Flex : Nos propositions
  • Liens informatiques du mois – janvier 2012 | Gestion de projet et développement informatique dans Flex est mort, vive Flex !
  • Florian Fesseler dans Flexmojos : Quick compile mode

Auteurs

  • Alexis Kartmann (12)
  • Antoine Gehl (4)
  • Benoit Kogut-Kubiak (2)
  • Cyril Daloz (10)
  • Daniel Pesic (6)
  • Delphine Estebanez (3)
  • Fadi Mansour (3)
  • Florent Hirsch (1)
  • Florian Fesseler (13)
  • Gaétane Stavaux (3)
  • Guillaume Mignard (4)
  • Java Team (1)
  • Julien Revel (22)
  • Mahmoud Ramadan (1)
  • Matthieu Jobert (1)
  • Morgan Bruneau (1)
  • Stéphane Guyot (1)
  • Stéphane Koëth (2)
  • Thomas de Verdière (1)
  • Yann Graufogel (3)
Section separator

Tags

Adobe Adobe Business Exchange Adobe MAX AIR AMF AS3 Cairngorm Corporate Flash Player Flex Framework iPhone JAVA Kap Inspect Kap Lab LCDS LiveCycle Mobile MVC PureMVC QA Reporting RIA RTMP Spark
Section separator

Archives

  • mai 2013 (1)
  • avril 2012 (1)
  • février 2012 (3)
  • janvier 2012 (4)
  • décembre 2011 (1)
  • novembre 2011 (2)
  • octobre 2011 (4)
  • août 2011 (2)
  • juillet 2011 (5)
  • juin 2011 (4)
  • mai 2011 (1)
  • mars 2011 (1)
  • janvier 2011 (1)
  • décembre 2010 (1)
  • novembre 2010 (3)
  • juin 2010 (1)
  • mars 2010 (1)
  • février 2010 (1)
  • décembre 2009 (2)
  • novembre 2009 (1)
  • octobre 2009 (3)
  • septembre 2009 (1)
  • août 2009 (1)
  • avril 2009 (2)
  • février 2009 (1)
  • janvier 2009 (3)
  • décembre 2008 (4)
  • novembre 2008 (2)
  • octobre 2008 (2)
  • septembre 2008 (2)
  • août 2008 (1)
  • juin 2008 (1)
  • avril 2008 (4)
  • mars 2008 (3)
  • février 2008 (2)
  • janvier 2008 (1)
  • décembre 2007 (3)
  • novembre 2007 (1)
  • septembre 2007 (1)
  • juillet 2007 (1)
  • juin 2007 (1)
  • mai 2007 (3)
  • avril 2007 (8)
  • mars 2007 (2)
  • février 2007 (1)

Marque-pages

  • Adobe Blogs
  • Adobe Developer Connection
  • Adobe Evangelists
  • Adobe Flex Tutorials (FR)
  • Code moi un mouton
Section separator

Kap IT

  • Site Web
  • Blog RIA
  • Kap Lab - Composants Flex
  • GitHub Kap IT

Blog RIA

Veille, Recherche et Développement RIA

Bonnes Pratiques de Rédaction d’un Bug

Par Antoine GehlgravatarFermerAuteur : Antoine Gehl Email : agehl@kapit.fr
Site : http://
A propos : Voir les autres billets de l'auteur (4)
, publié le 25 octobre 2011

Pièges à éviter, conseils rédactionnels et retour d’expérience, voici les sujets que nous aborderons dans cet article concernant la remontée d’un bug.

Il ne faut pas oublier que la personne qui va devoir corriger le problème n’est pas la personne qui l’a observé et généralement ils n’utilisent pas le même langage (développeurs vs testeurs/utilisateurs).

Le scénario de reproduction

« Il y a un bug ! » Qui n’a jamais entendu cette phrase ? Personnellement, c’est la phrase que nous utilisons quand nous avons envie de faire monter en pression un développeur. La réponse du développeur ressemble généralement à : « C’est toi le bug ! ». Traduction faite : comment veux-tu que je corrige ce bug si je ne sais pas dans quelles conditions il se produit? En résumé ce qui l’intéresse c’est de savoir où? quand? comment? se produit le bug.

Il est donc important lors de la détection d’un bug de repérer le triptyque suivant :

  • Où : Dans quelle partie de l’application le bug a été détecté ?
  • Quand : A quel moment de l’utilisation de l’application le bug se produit-il ?
  • Comment : Quel est le scénario permettant de reproduire le bug à tous les coups ?

Quels sont les impacts de la non-détermination de ces informations ?

  • Incompréhension du problème : correctifs inadaptés
  • Reproduction impossible : correctifs irréalisables
  • Bouclage entre le développeur et le testeur : perte de temps et d’efficacité

C’est le rôle du scénario de reproduction de mettre en lumière ces trois informations et d’éviter de tels impacts. L’écriture d’un bon scénario de reproduction est donc indispensable lors de la saisie d’un bug.

L’importance des représentations visuelles

Les représentations visuelles sont un moyen d’illustration qui permettent d’économiser beaucoup de temps en explications, cependant il faut rester prudent : un commentaire peut toujours être utile pour expliquer le contexte ou détailler ce qui se passe sur la représentation visuelle.

jing_exemple_panda

Sans explication une représentation visuelle ne permet pas forcément d’identifier le problème. A l’inverse, il n’est pas forcément évident de se représenter le problème lorsque celui-ci n’est pas illustré. Il faut donc déterminer, en fonction de la complexité du problème, le savant mélange composé des représentations qui parleront le plus au correcteur : explications, screenshots, vidéos, logs, traces, …, ou tout en même temps.

Focus sur un outil : Jing

Jing est un petit logiciel très pratique dans notre travail de tous les jours. Il permet de prendre rapidement des screenshots et des screencasts de tout ou partie de l’écran afin d’illustrer facilement les problèmes remontés dans notre qualification d’applications. Nous enregistrons les étapes et attachons la vidéo dans notre logiciel de suivi des anomalies (ou bug tracker en anglais). Attention, même une vidéo peut avoir besoin d’explications, d’ailleurs Jing permet l’enregistrement de commentaires audio en même temps que la vidéo.

jing_logo

Ce logiciel est gratuit pour les usages décrits précédemment. Il existe aussi une version payante qui permet d’élargir le panel de fonctionnalités avec le partage sur youtube, l’enregistrement en MP4, …

Aide à la saisie dans votre bug tracker préféré

Nous allons essayer de décrire dans cette section l’ensemble des informations devant être renseignées lors de la création d’une demande de correctif d’un bug sans tenir compte du bug tracker utilisé (nous utilisons Jira de l’éditeur Atlassian en interne, un bug tracker très souple et pratique d’utilisation).

Voici la liste des informations que nous considérons comme essentielles lors de la rédaction d’un bug :

  • un titre : Ce titre doit être suffisamment explicite pour pouvoir repérer une demande parmi d’autres. Il s’agit d’un résumé de la description du problème. Il peut se suffire à lui même lorsque la demande est triviale et facilement compréhensible (ex : le bouton « Valider » devrait être vert)
  • une description : Il s’agit de l’explication du problème. Elle doit être la plus détaillée possible afin de rendre la compréhension du problème facile. On pourra donc y retrouver une description générale du problème, un (ou plusieurs) scénario de reproduction, les informations de connexion (si il existe différents types d’utilisateur), …
  • la criticité : Elle permet de signifier la gravité du problème. Cette donnée est essentielle afin de déterminer les actions à mener (ex : empêcher la livraison d’un produit qui contient un problème bloquant, déterminer les correctifs principaux à intégrer dans une roadmap)
  • la version sur laquelle le problème se produit : elle permettra de retrouver facilement les nouveaux bugs et ceux causés par des régressions
  • l’environnement (surtout dans le cas d’un problème lié au socle technique) : il permet de cibler le contexte technique dans lequel le bug se reproduit
  • les données d’enrichissement de la demande : Il s’agit de toutes les représentations permettant au correcteur de cibler le problème. Il peut s’agir de fichiers de logs, de traces, de screenshots, de vidéos,…

Un bug

Quelques règles supplémentaires

Ci-dessous un ensemble de règles que nous essayons d’appliquer au quotidien :

1. Rédiger correctement le bug : Outre les informations à décrire dans cette remontée de bug (Se reporter aux paragraphes précédents), il est important de s’exprimer dans un langage clair et compréhensible par tous.

2. Fournir un scénario de reproduction : Il arrive souvent qu’un bug se produise sans savoir vraiment quelle en est la cause. Il est du devoir du testeur de fournir un scénario de reproduction à ses développeurs. Notre politique par rapport à cette problématique est de ne pas diffuser le bug tant que celui-ci n’est pas reproductible. On nuancera cette approche lors de la détection de bug très critique afin d’avoir un avis extérieur.

3. Simplifier les étapes de reproduction : Moins il y a d’étapes, plus il sera facile pour le développeur de reproduire le problème et d’en trouver la cause.

4. Décrire et Numéroter vos étapes de reproduction : On part du constat qu’il est plus facile de lire un scénario en séquentiel plutôt que de le lire à plat. On préfèrera donc un scénario décrit de la manière suivante :

1. Lancer l’application
2. Cliquer sur le lien « Accéder à la recherche »
3. Choisir « Voiture » dans le type de recherche
4. Lancer une recherche -> KO aucun résultat n’est remonté

à

Lorsque je cherche des voitures, aucun résultat n’est remonté.

5. Agrémenter vos demandes : En plus du scénario de reproduction, il est important de préciser ce qui est observé lors de l’apparition du bug et le résultat qui est attendu. Dans le cas contraire, vous vous exposez à des remarques du type « Ce n’est pas un bug, c’est une feature ! » et à devoir reboucler avec le développeur sur le sujet.

resultats_observes_vs_resultats_attendus

6. Préférer l’utilisation du bug tracker à l’email : Le bug tracker simplifiera le suivi pour tous et se chargera par la même occasion de prévenir automatiquement les personnes concernées par email.

7. Cibler vos problèmes : Plusieurs techniques permettent de spécifier la provenance du problème :

  • Définir le contexte dans le titre de la demande (ex: [Ecran de recherche] Aucune voiture remontée)
  • Préciser le composant technique mis en cause (certains bugs trackers autorisent la création de composants)
  • Préciser l’environnement technique dans lequel le bug se produit (de la même manière que les composants, certains bug trackers permettent la saisie de cette donnée)

8. Affecter des demandes au Chef de Projet : Le chef de projet est en charge du bon déroulement du projet : c’est lui qui gère la roadmap (feuille de route). Pour se faire, il doit garder en permanence un œil sur toutes les composantes de la réalisation et c’est donc à lui que doivent revenir toutes les tâches afin qu’il puisse les dispatcher en fonction des priorités, des disponibilités de chacun et de la criticité des demandes qui lui sont remontées.

9. Gérer les doublons : Dans l’idéal, la personne qui constate le bug vérifie qu’un bug similaire n’a pas déjà été créé. Il peut arriver cependant qu’un bug soit saisi en double (exemple : 2 testeurs différents OU un testeur et un client). Comme vu précédemment, le chef de projet à une vision globale des demandes, il saura donc quelles sont celles qui sont en double et fermera les demandes inutiles. Certains bug tracker permettent de lier des demandes entre elles, il est alors possible de lier 2 bugs similaires entre eux.

Il est important de noter que ces bonnes pratiques ne sont pas exhaustives et qu’il n’est pas forcément nécessaire d’utiliser ces techniques dans tous les cas. Il ne faut pas considérer une remontée de bug comme parfaite lorsque celle-ci est surpeuplée de diverses représentations du même problème. Au contraire, le plus important est de rester le plus simple possible et de se concentrer sur les informations nécessaires et suffisantes.

Catégories: Concepts et Usages
Mots-clefs :Bonnes pratiques, Bug, QA

Le commentaires sont fermés.

Article précédent
Article suivant
 
Haut de page

Copyright © 2009 Kap IT - Blog RIA - Kap Lab

Motorisé par Wordpress - Thème avec YAML par Kap IT