BDD (Behavior Driven Development) - Une voie vers l'agilité

1,852 views
1,747 views

Published on

Mauro Talevi @Mix-IT 2011

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,852
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
44
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

BDD (Behavior Driven Development) - Une voie vers l'agilité

  1. 1. BDD:un chemin vers l’Agilité Comment BDD peut favoriserl’adoption d’une approche Agile Mauro Talevi 2011
  2. 2. Plan “Pain-Driven Development”Behaviour-Driven Development BDD en Java: JBehave Etude de Cas Questions
  3. 3. Pain-DrivenDevelopment **Développement pour les SM
  4. 4. Maux du DéveloppementLe système ne fait pas ce qu’il devrait Fonctionnalité manquante Le système est développé en “silos” Le système n’est pas accessible ni visible par le métier Pas de tests d’acceptation ... et plus encore!
  5. 5. Un Exemple... c’est familier?
  6. 6. BDD propose un nouveau paradigme ... décrire le un langage comportement est universel c’est la un meilleur type clef de test les tests d’acceptation doivent être automatisables toutes requêtes sont aussi des comportements ... mais ça prend du temps
  7. 7. Il y a langage ... et langage
  8. 8. Behaviour-Driven Development **Développement pour les bien élevés
  9. 9. (Une des) definitions de Dan North:“BDD essaie d’implémenter une application en décrivant son comportement du point de vue des stakeholders” Qui sont les “stakeholders”? Développement Out-In Parlez le langage du métier
  10. 10. StakeholdersTous ceux qui ont un intérêt dans le système: Métier (bien sûr!) Sécurité Production Audit de Qualité ... et plus encore!
  11. 11. Développement Out-InChoisissez la bonne frontiere
  12. 12. Parlez le langage du métierDefinissez un langage spécifique pour le domaine (DSL) Concentrez-vous sur les concepts du métierDécrivez les comportements du point de vue du métier Evitez les détails techniques
  13. 13. Quelques definitions Une Histoire (User Story): une collection des Scénarios, chacun étant une collection d’étapesLes histoires décrivent descomportements, c.a.d. la fonctionalitéattendue par le métier Les scénarios explorent des déclinations de l’histoire, nominales et alternatives
  14. 14. Commençons une conversation:Etant donné un seuil de 15.0Quand une action est échangée á 5.0Alors le trader ne doit pas être alerté Grammaire BDD d’Etapes: Etant donné - contexte Quand - événement Alors - résultat Et - répète étape précédente
  15. 15. Explorez d’autres options du métier:Etant donné un seuil de 15.0Quand une action est échangée á 16.0Alors le trader doit être alerté La même grammaire BDD Seules des valeurs ont changé
  16. 16. Combinez les étapes:Etant donné un seuil de 15.0Quand une action est échangée à 5.0Alors le trader ne doit pas être alertéQuand une action est échangée à 16.0Alors le trader doit être alerté Choisissez le paramétrage d’étapes
  17. 17. Faites évoluer le langage:Etant donné un seuil de 15.0Quand une action est échangée á 16.0Alors le trader doit être alertéAlias pour Mêmes paramétresmêmes étapes Langage changeEtant donné un seuil de prix de 15.0Quand un stock est échangé á 16.0Alors le trader doit être alerté
  18. 18. Et en plus ... Tabularisation: quand on a desrépétitions d’étapes ou des donnéHistoires comme des pre-requis:quand on a des répétitions des histories et des scénarios
  19. 19. BDD vs TDDBDD parle un langage du métier, écrit en texteTDD parle un langage technique, écrit en code Ils sont complémentaires, pas en conflit!
  20. 20. BDD vs ATDDBDD permet d’automatiser les tests, en mettant l’accent sur la communicationATDD est un paradigme générique d’automatisation des tests, pas toujours communicative
  21. 21. BDD en Java
  22. 22. Etapes correspondent aux méthodes Java Etant donné un seuil de 15.0 @Given(“un seuil de $seuil”) public void unSeuil(double seuil){ / assignez l’objet pour garder l’état / } Paramétres auto-convertis
  23. 23. Tous les types Java sont supportésStrings Booleans Enums NombresListes des Strings Listes des nombres
  24. 24. Types des paramétres sur-mesure @Given(“la date de $date”) public void uneDate(Date date){ / Date est multi-format / } Etant donné la date de 01/04/2010DateConverter implements ParameterConverter { public Object convertValue(String value, Type type) { / DateFormat injectée dans DateConverter / return dateFormat.parse(value); }}
  25. 25. AliasEtant donné un seuil de 15.0Etant donné un seuil de prix de 15.0 @Given(“un seuil de $seuil”) @Alias(“un seuil de prix de $seuil”) public void unSeuil(double seuil){ / assignez l’objet pour garder l’état / } Evolution du langage du scénario
  26. 26. Un scénario Web Scénario: Un article est ajouté au panier du site e-commerce Etant donné le panier est vide Quand je recherche un article Et l’article est ajouté au panier Alors le panier contient cet articleOn décrit les interactions des utilisateurs Pas les détails HTTP/HTML
  27. 27. Groovy WebDriverclass Home extends BasePage { def Home(WebDriverProvider webDriverProvider) { super(webDriverProvider) } def go() { get("http://www.etsy.com") } def go(String section) { go() findElement(By.xpath("//a[@title = $section]")).click() } def search(String thing) { findElement(By.id("search-facet")).click() findElement(By.className("all")).click() findElement(By.id("search-query")).sendKeys(thing) findElement(By.id("search_submit")).click() } def goToBuySection() { findElement(By.linkText("Buy")).click() }} WebDriver agit comme une API
  28. 28. Exécutions
  29. 29. ReportingStoryReporter observe lesévénements (“Observer Pattern”)En entrée texte (peut-être a wiki)En sortie plusieurs formats:CONSOLE, HTML, XML, TXT, STATS
  30. 30. Un Exemple
  31. 31. Un Report HTML
  32. 32. Et en plus ...Dependency Injection Multi-Threading Story Mapping Web Queue Web Runner
  33. 33. Etude de Cas
  34. 34. ContexteProjet stratégique pourune banque globaled’investissementCommencé en Sept 2008 ...... des temps trèsinteressants pour lemonde financier!
  35. 35. TechnologieApplication Java EnterpriseArchitecture basée sur JMS (transactionnelle)Interfaçant plusieurs systèmes internesFocus initial sur le “core back-end”“Web front-end” ajouté plus tard
  36. 36. MéthodologieProjet Agile ScrumSprints de deux semainesEquipe jusqu’á 10 membresAuto-organisé: devs, testers, BA, SM Le SM c’est pas un Chef de Projet!
  37. 37. Les Stakeholders“No world is an island” ... ... plusieurs stakeholders Métier Securité Production InfrastructureSans expérience d’Agile ni de BDD ... ... mais très investis & pas juste concernés!
  38. 38. Le Poulet & Le CochonIl faut être tous des cochons!
  39. 39. CochonnetLe plus important membre de l’équipe
  40. 40. BDD et l’Agilité
  41. 41. BDD et l’AgilitéBDD ideale pour un projet Agile: .... “Done Criteria” de Scrum .... le Contrat de la livration ... la clef pour une meilleure communication ... mais il peut aussi favoriser l’adoption de l’Agilité
  42. 42. Web RunnerLe métier voulait plus de visibilité ... ... mais ils n’ont pas acces au environment technique du buildUtilisé pour le setup des démos ... dans les Sprint Reviews ... dans les démos métier Cela donne plus de confiance au métier
  43. 43. Deux Ans Apres ... Most Valuable Agile Project
  44. 44. Cochonnet est très fier
  45. 45. CommunicationBDD clef pour la communication en:... specifiant critères d’acceptance... aidant l’équipe pour l’estimation... détaillant des séquences par étapes... rendant input/output plus visibles
  46. 46. ConfianceBDD relance la confiance:... du métier, en rendant lecomportement plus visible et detaillé... de l’équipe, en livrant “what it sayson the tin” et en permettant desrefactoring sans peur
  47. 47. Traitez les tests comme codeAttention au “scenario smells”:... répétition d’étapes... répétition des scénarios Il faut faire du refactoring Engagez-vous avec le métier
  48. 48. Pairing est de grande valeurComportement représente un domainepartagé: Métier Testers BAs Devs Pairing baisse le risque de malentendu et favorise la communication
  49. 49. Scénarios par Sprint
  50. 50. En Conclusion ...BDD représente un nouveau paradigme: mais pas toujours Commesimple ... facile! l’AgilitéBDD a joué un rôle clef en developpant ...... la confiance entre équipe et métier... du code qui est important pour le métier
  51. 51. Contact Mauro Talevimauro.talevi@agilesque.com http://jbehave.org
  52. 52. Questions ... et Démo(pour les intéressés)

×