Your SlideShare is downloading. ×
BDD (Behavior Driven Development) - Une voie vers l'agilité
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

1,388
views

Published on

Mauro Talevi @Mix-IT 2011

Mauro Talevi @Mix-IT 2011

Published in: Technology, Business

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,388
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
39
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. BDD:un chemin vers l’Agilité Comment BDD peut favoriserl’adoption d’une approche Agile Mauro Talevi 2011
  • 2. Plan “Pain-Driven Development”Behaviour-Driven Development BDD en Java: JBehave Etude de Cas Questions
  • 3. Pain-DrivenDevelopment **Développement pour les SM
  • 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. Un Exemple... c’est familier?
  • 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. Il y a langage ... et langage
  • 8. Behaviour-Driven Development **Développement pour les bien élevés
  • 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. 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. Développement Out-InChoisissez la bonne frontiere
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. BDD en Java
  • 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. Tous les types Java sont supportésStrings Booleans Enums NombresListes des Strings Listes des nombres
  • 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. 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. 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. 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. Exécutions
  • 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. Un Exemple
  • 31. Un Report HTML
  • 32. Et en plus ...Dependency Injection Multi-Threading Story Mapping Web Queue Web Runner
  • 33. Etude de Cas
  • 34. ContexteProjet stratégique pourune banque globaled’investissementCommencé en Sept 2008 ...... des temps trèsinteressants pour lemonde financier!
  • 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. 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. 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. Le Poulet & Le CochonIl faut être tous des cochons!
  • 39. CochonnetLe plus important membre de l’équipe
  • 40. BDD et l’Agilité
  • 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. 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. Deux Ans Apres ... Most Valuable Agile Project
  • 44. Cochonnet est très fier
  • 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. 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. 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. 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. Scénarios par Sprint
  • 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. Contact Mauro Talevimauro.talevi@agilesque.com http://jbehave.org
  • 52. Questions ... et Démo(pour les intéressés)