De la story aux tests d acceptation



Documents pareils
Topologie du web - Valentin Bourgoin - Méthodes agiles & SCRUM

Gestion de projet Agile. STS IRIS Module «Gérer et organiser un projet informatique»

Testeur Agile Niveau Fondation Bertrand Cornanguer, Vice-chair Agile tester WG

25/12/2012

Scrum Une méthode agile pour vos projets

Règles d engagement. Présentation Diapositives Bibliographie Questions Les vertus de la marche

INTRODUCTION À LA GESTION DE PROJET AGILE (BACKLOG, TABLEAUX DE BORD, BURNDOWN, PLANIFICATION D ITERATIONS)

Agilitéet qualité logicielle: une mutation enmarche

1/15. Jean Bernard CRAMPES Daniel VIELLE

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Conduite de projets SI. Les méthodes «Agiles» N QUAL/1995/3660e ORESYS

Retour d expérience implémentation Scrum / XP

Scrum + Drupal = Julien Dubois

Les méthodes Agiles Introduction. Intervenant : Tremeur Balbous tremeur@agilegardener.com 04/09/2008

Yassine ZAKARIA SÉMINAIRE : MÉTHODES AGILES

Certification Scrum Master

Les méthodes itératives. Hugues MEUNIER

Agile 360 Product Owner Scrum Master

SCRUM chez BWIN : implémentation d une méthode agile dans Focalpoint Spasija Taseva et Corinne Bacle

L'agilité appliquée à nous-mêmes. Philippe Krief, PhD Development Manager IBM France Lab

TP3 Intégration de pratiques agiles. 1. User Stories (1) Scénario d intégration agile. En direct-live du château

GESTION DE PROJET : LA METHODE AGILE

Le Product Owner Clé de voute d un projet agile réussi

XP : plus qu'agile. Extreme Programming v2 et Développement Responsable. Thierry Cros

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

Soyez agile. Dans l industrie du logiciel, la. De plus chaque projet informatique

Estimer et mesurer la performance des projets agiles avec les points de fonction

Formation Scrum. 2 jours

Cours Ephec Niv. 2 : Technique et gestion de projet. Par Monsieur Bertieaux Année Académique Quelles sont les 4 valeurs Agiles?

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

backlog du produit Product Owner

EXIN Agile Scrum Master

L'AGILITÉ AVEC VISUAL STUDIO

Process 4D Catalogue de formations 2011

ISTQB Agile Tester en quelques mots ISTQB Marketing Working Group

REX Scrum Master du terrain

Gestion de Projet Agile

SCRUM BUT, LE LIVRE BLANC. De la problématique de mener un projet AGILE dans une organisation classique

Scrum et l'agilité des équipes de développement

CATALOGUE)FORMATION)2015)

Fondateur d Agile Impulse nicolashennion@agileimpulse.com. Support disponible sur agileimpulse.com/formation/scrumssii2j.

Le rôle du coach Agile et son apport pour le projet

Architecture pragmatique pour la gestion du cycle de vie des applications (ALM)

Scrum et itk : adaptation de la méthode au développement d OAD. D après Henrik Kniberg Scrum et XP depuis les tranchées

Guide de Préparation. EXIN Agile Scrum. Foundation

Les méthodes agiles UM Les méthodes agiles S. Mathon

Introduc)on à l Agile

Les méthodes Agiles. Introduc)on aux méthodes Agiles Exemple : Scrum

LA MÉTHODE AGILE VS LE CYCLE EN V UNE RÉVOLUTION DANS LA GESTION DE PROJET. Franck BEULÉ

Méthodologies SCRUM Présentation et mise en oeuvre

Une bonne dose d'agilité au cœur de votre équipe. La rece e Visual Studio 2012 pour des projets maitrisés

Le Product Backlog, qu est ce c est?

Le management de projet

Méthodes Agiles et gestion de projets

Journée COMPIL «Agilité et recherche»

AGILE IPHONE DEVELOPMENT

Feature Team Primer. par Craig Larman et Bas Vodde. Version 1.2

Isabelle Nicolas

Catalogue de formation 2014

Agile Maroc 24 Novembre Méthodes agiles. Thierry Cros. Agile Maroc 24 novembre 2010

Tuesday, October 20, Nantes

LES tests d'acceptation

Scrum. ... pour des projets informatiques agiles. Pascal Lando Certified Scrum product owner

La solution IBM Rational pour une ALM Agile

Formation agile. Formation agile Created on 24 janv Edited on 29 févr Page 1 sur 16

Processus d Informatisation

UML est-il soluble dans les méthodes agiles?

Table des matières. Préface... Avant-propos...

Circuit du médicament informatisé

Programmation Agile Mise en oeuvre via Scrum et l'extreme Programming (XP)

Modèle de changement d organisation. Leanpizza.net présente. Petit Guide Rapide du jeu de cartes Modèle de Changement d Organisation

Liste des Formations

Les mécanismes d'assurance et de contrôle de la qualité dans un

Scrum Le guide pratique de la méthode agile la plus populaire 3 e édition Claude Aubry 320 pages Dunod, 2013

Bertrand Cornanguer Sogeti

Jean-Pierre Vickoff

User stories et Backlog de produit

Les méthodes Agile. Implication du client Développement itératif et incrémental

Avant propos. Parcours de lecture : combien de sprints vous faut il?

Les Bonnes PRATIQUES DU TEST LOGICIEL

Contact: Yossi Gal, Téléphone:

Les 10 pratiques pour adopter une démarche DevOps efficace

Groupe Eyrolles, 2006, ISBN :

Les méthodes agiles en développement informatique : Fondements théoriques et retours d expérience

XP : ce célèbre inconnu

Développement itératif, évolutif et agile

Serena Software. Damien Terrien Solution Architect

PagesJaunes.fr Mise en place de Scrum de scrum. Fabien Grellier Agile Tour Octobre

Formation pour Product Owner

TIERCE MAINTENANCE APPLICATIVE

Étude HERMES et agilité

C ) Détail volets A, B, C, D et E. Hypothèses (facteurs externes au projet) Sources de vérification. Actions Objectifs Méthode, résultats

En face du commanditaire, on met un chef de projet qui connait le domaine (banque, administration, etc.)

P s a sep e o p r o t S e S r e vi v ce c s Fabrice Dubost

Comment réussir la mise en place d un ERP?

CONSULTANT AMOA/RECETTE à la recherche d un poste dans la région de Montpellier 7 ans d expérience

Ingénierie des méthodes Agiles : Que cache l opposition entre déploiement et livraison en continu? Faut-il adopter DevOps 1?

Plan. 1 Cycles de développement. 2 Méthodes agiles, principes généraux. 3 Comment se passe un Sprint?

AGILE. Implémenter la pratique Scrum dans votre équipe?

Transcription:

14 De la story aux tests d acceptation À l occasion d un audit sur le processus de développement d une entreprise, j avais constaté que la documentation relative aux spécifications et aux tests était abondante et, qu à mon avis, c était du gaspillage. L entreprise en question était organisée avec une séparation entre le service des représentants des utilisateurs (maîtrise d ouvrage) et celui des informaticiens (appelé maîtrise d œuvre) : Le premier rédigeait un document de spécification fonctionnelle du besoin. Le second répondait par un document de spécification du logiciel pour montrer ce qu il avait compris des demandes des utilisateurs. Il développait le logiciel et passait des tests unitaires, des tests d intégration mais aussi des tests fonctionnels écrits en interne. L équipe de test de la maîtrise d ouvrage rédigeait un cahier de recette, pas fourni au préalable, qu elle passait sur le logiciel reçu des informaticiens. Cela faisait quatre documents, tous décrivant le comportement du produit! C est pour éviter ce genre de gaspillage que les méthodes agiles préconisent d avoir un seul référentiel pour les spécifications et les tests. Un article publié dans le très sérieux magazine IEEE Software 1 fait l hypothèse de cette équivalence entre les tests et les exigences. La référence au ruban de Möbius illustre comment les deux (exigences et tests) se confondent lorsque le formalisme augmente. 1. L article Tests and Requirements, Requirements and Tests : A Möbius strip est signé de Grigori Melnik et de Robert C. Martin, le célèbre Uncle Bob.

182 Chapitre 14. De la story aux tests d acceptation C est l objectif de ce chapitre de montrer comment les stories, accompagnées de leurs tests d acceptation, constituent une spécification par l exemple. Le test n est pas une phase Tester c est un processus qui consiste à collecter des informations en faisant des observations et en les comparant aux attentes. Avec l approche itérative de Scrum, le test n est plus une phase qui se déroule après le développement. Il est intégré dans chaque sprint. Dès le premier sprint, une équipe commence à tester des stories. Cette façon de procéder permet de réduire le délai entre le moment où une erreur est introduite dans le logiciel et celui où elle est corrigée. On sait depuis longtemps que plus ce délai s allonge plus le coût de la correction est élevé. 14.1 TEST D ACCEPTATION Quelle que soit la méthode de développement utilisée, il existe des tests de nature différente. Les méthodes agiles apportent une nouveauté dans la façon de percevoir certains types de tests. En effet, la vue classique du test est la détection d erreurs a posteriori, après le travail de développement : le testeur, en cherchant des erreurs, vise à critiquer. Or, le test agile a un objectif différent, celui de guider le développeur dans son travail. Brian Marick met en évidence cette nouvelle vision des tests dans la matrice à quatre quadrants 1 (figure 14.1). Figure 14.1 Quadrants des tests Cette idée de guide pour le développement transparaît dans le pilotage par les tests (TDD pour Test Driven Development), centré sur les tests unitaires 2. C est aussi le but 1. http://www.exampler.com/old-blog/2003/08/21/ 2. Le TDD est abordé dans le chapitre 15 Scrum et l ingénierie du logiciel

14.2 Étapes 183 pour les tests d acceptation qui sont des tests orientés client (ATDD, Acceptance Test Driven Development). Le test d acceptation est le processus qui permet d accepter une story à la fin d un sprint. Il consiste en plusieurs étapes, appliquées à une story : Décrire le comportement attendu avec les conditions de satisfaction. Transformer ces conditions en cas de test, appelés storytests. Écrire le code applicatif qui répond au comportement attendu Passer les storytests sur le code applicatif. En cas d échec, corriger les tests ou le code. Ce processus est appelé pilotage par les tests d acceptation. Figure 14.2 Une story possède des storytests Une user story devrait posséder au moins deux storytests associées : un cas de succès et un cas d échec. Il peut y avoir d autres cas de tests pour une story, mais un nombre trop important (disons au-delà de huit) est le signe d une trop grande complexité de la story, qu il conviendrait de décomposer. Pour les stories techniques, la notion de test n est pas pertinente, on en restera au niveau des conditions de satisfaction. De même pour une user story, toutes les conditions de satisfaction ne deviennent pas des tests : c est le cas de celles qui portent sur d autres artefacts que le produit, par exemple sur de la documentation requise. 14.2 ÉTAPES Figure 14.3 Les étapes du processus 14.2.1 Définir les conditions de satisfaction Le principe, pour toutes les méthodes agiles, est qu une story soit réalisée en une itération. Mais comment savoir si elle est vraiment finie à la fin de l itération? C est la responsabilité du Product Owner d accepter (ou non) une story. Pour cela, le moins qu il puisse faire est de définir ses conditions de satisfaction. Si toutes les

184 Chapitre 14. De la story aux tests d acceptation conditions sont satisfaites, la story est acceptée, sinon elle n est pas considérée comme finie. Exemple avec la story «Inscription à une conférence». On peut identifier trois comportements : Inscription acceptée C est le cas de succès, l inscription d une personne à une conférence est confirmée. Inscription différée L inscription n est pas confirmée faute de place et placée en liste d attente. Inscription refusée L inscription est refusée, la liste d attente ayant atteint sa limite. Pour une user story, une condition de satisfaction peut être formalisée par un test. 14.2.2 Écrire les storytests Formalisme utilisé pour les storytests Les différents tests associés à une story correspondent à des comportements différents du logiciel. Les comportements diffèrent parce que, en fonction de l état du logiciel au moment où la story est exécutée, les résultats obtenus seront différents. La technique du BDD (Behaviour Driven Development 1 ) permet de décrire ces comportements. Chaque test est formalisé avec trois rubriques : l état du logiciel avant l exécution du test (on parle aussi de précondition ou de contexte du test) ; l événement qui déclenche l exécution ; l état du logiciel après l exécution (on parle aussi de postcondition ou de résultat attendu). Figure 14.4 Un test BDD 1. http://dannorth.net/introducing-bdd

14.2 Étapes 185 Le formalisme textuel du BDD est le suivant : Étant donné le contexte et la suite du contexte Quand l événement Alors résultat et autre résultat Cette façon de faire est particulièrement adaptée à des applications interactives. Elle pousse à avoir des tests courts, puisqu on y décrit la réponse à un seul événement. Exemple avec la story «Inscription à une conférence» Chaque condition de satisfaction est transformée en test. Exemple pour inscription acceptée Étant donné l utilisateur Benji connecté et la conférence AgileToulouse avec le nombre d inscrits à 134 et la salle A4 d une capacité de 200 associée à AgileToulouse. Quand Benji s inscrit à AgileToulouse Alors l inscription de Benji est acceptée et le message Vous êtes bien inscrit à AgileToulouse est envoyé à Benji et le nombre des inscrits passe à 135. Exemple pour inscription différée Étant donné l utilisateur Pred connecté et la conférence AgileToulouse avec le nombre d inscrits à 200 et la salle A4 d une capacité de 200 associée à AgileToulouse et 3 personnes dans la liste d attente. Quand Pred s inscrit à AgileToulouse Alors l inscription de Pred est refusée et le message Vous êtes en liste d attente est envoyé à Pred et le nombre des inscrits reste à 200 et le nombre de personnes en liste d attente passe à 4. Exemple pour inscription refusée Étant donné l utilisateur Chipeau connecté et la conférence AgileToulouse avec le nombre d inscrits à 200 et la salle A4 d une capacité de 200 associée à AgileToulouse et 20 personnes dans la liste d attente. Quand Chipeau s inscrit à AgileToulouse Alors l inscription de Chipeau est refusée et le message Il n y a plus de places disponibles est envoyé à Chipeau et le nombre des inscrits reste à 200 et le nombre de personnes en liste d attente reste à 20. Où stocker les tests? Chaque test étant associé à une story, il est considéré comme un attribut de la story et placé avec elle dans le backlog de produit (si l outil employé le permet ; sinon les tests peuvent être mis dans un document annexe mais en gardant la référence aux stories).

186 Chapitre 14. De la story aux tests d acceptation Quand écrire les tests? Si la story est réalisée dans l itération n, cela implique que les étapes du processus de test d acceptation s y déroulent (pour quelques stories, il faut même faire l étape d écriture des tests dans l itération n 1). Une recommandation est, au moins pour une story du sprint, que ses tests soient prêts avant le début du sprint et que tous les tests soient prêts à la moitié du sprint. Les étapes ne sont pas nécessairement séquentielles, l ajout de nouveaux tests peut se faire en parallèle avec le développement de la story. Qui écrit les tests? Scrum met l accent sur l équipe sans spécialiser les rôles. Il n y a pas de rôle de testeur, mais cela ne veut pas dire que l équipe ne teste pas! Il existe parfois l idée que c est le client qui teste, le client étant représenté par le Product Owner, ce qui peut conduire les développeurs à déléguer au Product Owner tout l effort de test. Ce n est pas une bonne idée : pour des raisons de quantité de travail et de compétences, le Product Owner n est généralement pas en situation pour s occuper seul du test d acceptation et surtout cela doit être un travail collectif. En fait, peu importe qui rédige les tests, ce qui compte c est que cela soit fait au bon moment. 14.2.3 Développer la story Le développement de la story est mené rapidement pendant le sprint ; il dure, en moyenne, trois jours, à plusieurs personnes. Le pilotage par les tests signifie que l équipe part des tests d acceptation pour concevoir et coder la story. Pendant le développement, il est fréquent que des storytests soient complétés, voire que de nouveaux soient ajoutés. 14.2.4 Passer les storytests Pour vérifier que la story est bien finie, il faut exécuter ses tests sur la dernière version du logiciel, le build courant. Si des tests ne passent pas, la correction est faite aussitôt, l objectif étant que tous passent avant la fin du sprint. À chaque nouveau build, pour éviter les régressions, il conviendrait de repasser tous les tests. C est une raison pour laquelle il est vite nécessaire de s intéresser à leur automatisation. Intérêt de l automatisation À la première itération, on passe T1 tests. À la deuxième, on passe les T2 nouveaux tests identifiés et on repasse les T1 pour détecter les régressions éventuelles. Cela donne :

14.2 Étapes 187 Itération 1 : T1 Itération 2 : T2 + T1 Itération 3 : T3 + T2 + T1 Itération n : Tn +... + T3 + T2 + T1 Avec l hypothèse d un nombre moyen Ti des tests par itération, cela donne pour le nombre de tests à passer : Total = Ti *n*(n+1)/2 Pour dix itérations avec chacune dix nouveaux tests, le total est de : Ti=10, n=10, Total = 550 Avec 50 tests par itérations, il devient : Ti=50, n=10, Total = 2750 On imagine que si les tests ne sont pas automatisés, ils ne seront pas tous passés manuellement à chaque sprint et que des régressions peuvent ne pas être détectées. Mesures et indicateurs de suivi de test Il n est pas nécessaire de produire une documentation de rapport des tests comme on en fait dans le développement traditionnel. Il peut être intéressant, lorsque la pratique est mise en place, de faire quelques mesures. Les mesures sur le nombre de stories tests existants et sur leur exécution sont importantes pour évaluer la qualité du test. La collecte 1 se fait à chaque build et à chaque fin de sprint. Figure 14.5 Évolution des tests à chaque sprint Dans cet exemple, on voit que le nombre de tests passés avec succès a diminué entre le sprint 3 et le sprint 4, ce qui est le signe d un problème. L équipe doit analyser ce qui a causé cette régression et en tirer les conséquences. Cet indicateur met également en évidence qu il reste des tests en échec à la fin d un sprint. 1. Voir le chapitre 15 Estimations, mesures et indicateurs.

188 Chapitre 14. De la story aux tests d acceptation 14.3 GUIDES POUR LE TEST D ACCEPTATION À essayer Se servir des tests pour communiquer Connecter les tests Planifier le travail de test À éviter Tester une story dans le sprint suivant son développement Stocker les bugs 14.3.1 Se servir des tests pour communiquer L ensemble des stories avec leurs tests remplacent une spécification fonctionnelle détaillée, avec un bénéfice essentiel : la communication est facilitée entre le métier et le développement. Les membres de l équipe sont demandeurs de ces tests. Ils s en servent dans les discussions avec le Product Owner et les testeurs. Ils les complètent si c est nécessaire. Le référentiel des tests est complété progressivement et toujours à jour. Cela montre que cette façon de faire dans façon de faire j inclus bien plus que du test ; en fait je pense que le mot test est trompeur : au lieu de test d acceptation, spécification par l exemple serait probablement plus approprié est un moyen d obtenir une meilleure compréhension entre le métier et le développement, et procure un apport absolument fondamental. 14.3.2 Tester une story dans le sprint où elle est développée Un des constats fait en suivant des équipes Scrum qui débutent est que de nombreuses stories ne sont pas finies en un sprint. Quelques-unes durent même plusieurs sprints! Ce problème est souvent dû à l accostage développeurs-testeurs. Si un testeur reçoit le logiciel à tester en toute fin de sprint, au mieux il découvre des erreurs qui ne pourront pas être corrigées avant la fin du sprint, au pire il diffère ses tests au sprint suivant. Ne pas développer, tester et corriger une story dans le même sprint est un dysfonctionnement sérieux auquel il faut s attaquer. Pourquoi est-ce un problème? Cela diminue la productivité des développeurs qui doivent se replonger dans le code qui implémente une story qu ils ont développée dans une itération précédente. Ce n est pas satisfaisant pour l équipe. Elle s est engagée au début de l itération à finir une story et le résultat montre que ce n est pas fini. Cela rend la planification plus difficile. Une user story pas finie est comptée à zéro point pour la vélocité alors que du travail a été effectué dessus. Cette décorrélation entre résultat et travail tend à produire un burndown chart de release en dents de scie, ce qui peut être perturbant.

14.3 Guides pour le test d acceptation 189 Le testeur doit être impliqué dans la planification du sprint, s engager avec le reste de l équipe et être très réactif. L équipe doit aussi être capable de refuser d inclure une story dans un sprint si elle estime qu elle n est pas suffisamment définie. 14.3.3 Ne pas stocker les bugs Un story développée dans un sprint est testée dans ce sprint. Si un test ne passe pas avec succès, l équipe doit effectuer la correction au plus vite et au plus tard avant la fin du sprint. Si à la fin du sprint tous les tests ne passent pas avec succès, la story n est pas montrée lors de la revue et n est pas considérée comme finie. On ne stocke pas les bugs, on stocke les tests. 14.3.4 Connecter les tests d acceptation La technique des «user stories» est très efficace couplée à un développement par itérations. Les stories alimentent le backlog de produit et sont développées pendant l itération. La tendance est à avoir des stories très petites, ce qui présente des avantages en termes de gestion et de suivi. Mais cela a l inconvénient de rendre les choses plus difficiles à comprendre. Une story est à replacer dans un contexte plus large pour que l on identifie son usage. En fait une story ne suffit pas pour raconter une histoire qui parle aux utilisateurs. Par exemple lors de la revue, à laquelle participent de nombreuses personnes, il convient de préparer une démonstration qui enchaîne des user stories. C est ce qu on appelle un scénario. Sur un projet de gestion documentaire auquel j ai participé, deux scénarios ont été présentés lors de la revue de sprint. Nous avions identifié et sélectionné pour ce sprint des stories comme : créer un document, télécharger un document existant, commenter un document, désigner les approbateurs, déléguer l approbation, approuver un document. La démonstration a montré d abord le cas d un nouveau document créé et approuvé (scénario 1), puis celui d un document téléchargé puis délégué dans un mécanisme d approbation en série (scénario 2). Souvent les scénarios font référence à des utilisateurs fictifs, appelés user1 ou toto. Il est préférable de choisir de vrais utilisateurs. De la même façon, plutôt que de prendre des documents appelés doc1, il vaut mieux s appuyer sur un exemple réel qui rend les choses plus concrètes et facilite leur compréhension.

190 Chapitre 14. De la story aux tests d acceptation Les scénarios sont utiles pour la démonstration en fin de sprint, mais c est mieux de les élaborer bien avant. En début de sprint, ils donneront à toute l équipe le contexte pour le travail de développement. 14.3.5 Planifier le travail de test Pour chaque story, on peut identifier deux tâches pour mener à bien le test d acceptation : La spécification des tests de cette story, qu on peut séparer en identification du test et formalisation du test. Le passage de ces tests. C est du travail qui prend du temps, c est pourquoi les tâches de test doivent figurer dans le plan du sprint. Résumé Le test n est pas une activité réservée à la fin des développements. Avec les méthodes agiles, les tests d acceptation sont passés à chaque sprint. Le pilotage par les tests d acceptation pousse même à définir le test d une story avant son développement, pour qu il serve de spécification par l exemple à l équipe.