SlideShare a Scribd company logo
1 of 42
Download to read offline
Behavior Driven Development




                                  by Aliaksandr Ikhelis, 2012
Friday, 30 November 12
Communication Issue
                           They are   They do not know
                            slow!..   what they need!..




Friday, 30 November 12
Communication Issue
                           They are   They do not know
                            slow!..   what they need!..




Friday, 30 November 12
Building communication bridge




Friday, 30 November 12
Building communication bridge




Friday, 30 November 12
Behavior Driven Development




Friday, 30 November 12
Behavior Driven Development

                         BDD is an evolution in the thinking
                         behind TDD & ATDP




Friday, 30 November 12
Behavior Driven Development

                                 BDD is an evolution in the thinking
                                 behind TDD & ATDP



                               Focus on delivery of the
                     prioritized and verifiable business value
                        by providing a common vocabulary




Friday, 30 November 12
Behavior Driven Development
                       Practices




Friday, 30 November 12
Behavior Driven Development
                       Practices
                         • Establish goals




Friday, 30 November 12
Behavior Driven Development
                       Practices
                         • Establish goals

                         • Draw out features using feature injection




Friday, 30 November 12
Behavior Driven Development
                       Practices
                         • Establish goals

                         • Draw out features using feature injection

                         • Involve stakeholders in the implementation
                           process through outside-in software
                           development




Friday, 30 November 12
Behavior Driven Development
                       Practices
                         • Establish goals

                         • Draw out features using feature injection

                         • Involve stakeholders in the implementation
                           process through outside-in software
                           development

                         • Use examples to describe behavior




Friday, 30 November 12
Behavior Driven Development
                       Practices
                         • Establish goals

                         • Draw out features using feature injection

                         • Involve stakeholders in the implementation
                           process through outside-in software
                           development

                         • Use examples to describe behavior

                         • Automate examples to provide quick
                           feedback and regression testing



Friday, 30 November 12
What BDD adds to TDD




Friday, 30 November 12
What BDD adds to TDD
                          • Test what an object does instead
                            of what it is




Friday, 30 November 12
What BDD adds to TDD
                          • Test what an object does instead
                            of what it is

                          • Design top-down, which is essential
                            for YAGNI – You Aren't Gonna Need It




Friday, 30 November 12
What BDD adds to TDD
                          • Test what an object does instead
                            of what it is

                          • Design top-down, which is essential
                            for YAGNI – You Aren't Gonna Need It

                          • Define acceptance criteria with the
                            customer and specify it in the
                            automated way, serve the living spec




Friday, 30 November 12
The BDD “Outside-In” cycle




Friday, 30 November 12
The BDD “Outside-In” cycle




Friday, 30 November 12
Gherkin: feature title and narrative
       Feature: Adding movies to the queue




Friday, 30 November 12
Gherkin: feature title and narrative
       Feature: Adding movies to the queue




Friday, 30 November 12
Gherkin: feature title and narrative
       Feature: Adding movies to the queue




Friday, 30 November 12
Gherkin: feature title and narrative
       Feature: Adding movies to the queue




Friday, 30 November 12
Describing Features with Cucumber




Friday, 30 November 12
Describing Features with Cucumber
                         Cucumber is a BDD tool that reads plain
                          text descriptions of application features with
                          example scenarios, which can be converted
                          into automation. The text is written in a
                          business readable domain language,
                          known as Gherkin.




Friday, 30 November 12
Describing Features with Cucumber
                         Cucumber is a BDD tool that reads plain
                          text descriptions of application features with
                          example scenarios, which can be converted
                          into automation. The text is written in a
                          business readable domain language,
                          known as Gherkin.




Friday, 30 November 12
Describing code with RSpec




Friday, 30 November 12
Describing code with RSpec
                         RSpec is a BDD framework, which is
                          used to write executable examples of
                          the expected behaviour of a small bit
                          of code in a controlled context.




Friday, 30 November 12
Describing code with RSpec
                               RSpec is a BDD framework, which is
                                used to write executable examples of
                                the expected behaviour of a small bit
                                of code in a controlled context.


               Code example:                    Output:




Friday, 30 November 12
Describing code with RSpec




Friday, 30 November 12
Example: story card




Friday, 30 November 12
Example: process flow




Friday, 30 November 12
Describing code with RSpec




Friday, 30 November 12
Testing quadrands




Friday, 30 November 12
Get the testing pyramid (un)fit
                BEFORE         AFTER




Friday, 30 November 12
Communications in the business org




Friday, 30 November 12
Communications in the business org




    1. Translate business goals into prioritized list of features




Friday, 30 November 12
Communications in the business org




    1. Translate business goals into prioritized list of features
    2. Trace required behavior within the team - drive design by
    behavior, build transparency, trust and confidence.




Friday, 30 November 12
Communications in the business org




    1. Translate business goals into prioritized list of features
    2. Trace required behavior within the team - drive design by
    behavior, build transparency, trust and confidence.

    3. Clarify business value and desired software behavior -
    ask “5 Why”, provide feedback, if application logic appears
    overcomplicated.

Friday, 30 November 12
Speaking the same language =
                      building together

             As an awesome team
             We want to build such a great product
             So that everyone loves it




                                              Given the investment of 22M of bricks
                                              When you place all the bricks properly
                                              Then the Microsoft Tower of Babel
                                               is visible to all people across the Globe




Friday, 30 November 12
Recommended reading




                                          by Aliaksandr Ikhelis, 2012
Friday, 30 November 12

More Related Content

Similar to Bdd intro for Microsoft, 29 Nov 2012

Custom Android Code Templates
Custom Android Code TemplatesCustom Android Code Templates
Custom Android Code Templates
murphonic
 

Similar to Bdd intro for Microsoft, 29 Nov 2012 (18)

Mike Krieger, Instagram, Warm Gun 2012
Mike Krieger, Instagram, Warm Gun 2012Mike Krieger, Instagram, Warm Gun 2012
Mike Krieger, Instagram, Warm Gun 2012
 
Webinar: MongoDB on the JVM
Webinar: MongoDB on the JVMWebinar: MongoDB on the JVM
Webinar: MongoDB on the JVM
 
Ultimate agilisttokyo
Ultimate agilisttokyoUltimate agilisttokyo
Ultimate agilisttokyo
 
How BDD can save your agile?
How BDD can save your agile?How BDD can save your agile?
How BDD can save your agile?
 
How to be an agile programmer.
How to be an agile programmer.How to be an agile programmer.
How to be an agile programmer.
 
Solit 2013, Behaviour Driven Development, Ихелис Александр
Solit 2013, Behaviour Driven Development, Ихелис АлександрSolit 2013, Behaviour Driven Development, Ихелис Александр
Solit 2013, Behaviour Driven Development, Ихелис Александр
 
Velocity Marketing and Growth Hacking, Nov '12
Velocity Marketing and Growth Hacking, Nov '12Velocity Marketing and Growth Hacking, Nov '12
Velocity Marketing and Growth Hacking, Nov '12
 
iOS Prototyping with Xcode Storyboards
iOS Prototyping with Xcode StoryboardsiOS Prototyping with Xcode Storyboards
iOS Prototyping with Xcode Storyboards
 
Brad Hauck - Better Wordpress Blogging Workshop - Breakout Session
Brad Hauck - Better Wordpress Blogging Workshop - Breakout SessionBrad Hauck - Better Wordpress Blogging Workshop - Breakout Session
Brad Hauck - Better Wordpress Blogging Workshop - Breakout Session
 
Morning with MongoDB Paris 2012 - Accueil et Introductions
Morning with MongoDB Paris 2012 - Accueil et IntroductionsMorning with MongoDB Paris 2012 - Accueil et Introductions
Morning with MongoDB Paris 2012 - Accueil et Introductions
 
The Use of Open Source Javascript Libraries with CICS.
The Use of Open Source Javascript Libraries with CICS. The Use of Open Source Javascript Libraries with CICS.
The Use of Open Source Javascript Libraries with CICS.
 
SEF for students 2012. Product Management vs. Project Management
SEF for students 2012. Product Management vs. Project ManagementSEF for students 2012. Product Management vs. Project Management
SEF for students 2012. Product Management vs. Project Management
 
Interfaces Inteligentes para Android
Interfaces Inteligentes para AndroidInterfaces Inteligentes para Android
Interfaces Inteligentes para Android
 
Bridging the gap between business and it using cucumber
Bridging the gap between business and it using cucumberBridging the gap between business and it using cucumber
Bridging the gap between business and it using cucumber
 
Custom Android Code Templates
Custom Android Code TemplatesCustom Android Code Templates
Custom Android Code Templates
 
Architecting large Node.js applications
Architecting large Node.js applicationsArchitecting large Node.js applications
Architecting large Node.js applications
 
NCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experienceNCDevCon2012_designing the mobile experience
NCDevCon2012_designing the mobile experience
 
Scrum Version 3
Scrum Version 3Scrum Version 3
Scrum Version 3
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Bdd intro for Microsoft, 29 Nov 2012

  • 1. Behavior Driven Development by Aliaksandr Ikhelis, 2012 Friday, 30 November 12
  • 2. Communication Issue They are They do not know slow!.. what they need!.. Friday, 30 November 12
  • 3. Communication Issue They are They do not know slow!.. what they need!.. Friday, 30 November 12
  • 7. Behavior Driven Development BDD is an evolution in the thinking behind TDD & ATDP Friday, 30 November 12
  • 8. Behavior Driven Development BDD is an evolution in the thinking behind TDD & ATDP Focus on delivery of the prioritized and verifiable business value by providing a common vocabulary Friday, 30 November 12
  • 9. Behavior Driven Development Practices Friday, 30 November 12
  • 10. Behavior Driven Development Practices • Establish goals Friday, 30 November 12
  • 11. Behavior Driven Development Practices • Establish goals • Draw out features using feature injection Friday, 30 November 12
  • 12. Behavior Driven Development Practices • Establish goals • Draw out features using feature injection • Involve stakeholders in the implementation process through outside-in software development Friday, 30 November 12
  • 13. Behavior Driven Development Practices • Establish goals • Draw out features using feature injection • Involve stakeholders in the implementation process through outside-in software development • Use examples to describe behavior Friday, 30 November 12
  • 14. Behavior Driven Development Practices • Establish goals • Draw out features using feature injection • Involve stakeholders in the implementation process through outside-in software development • Use examples to describe behavior • Automate examples to provide quick feedback and regression testing Friday, 30 November 12
  • 15. What BDD adds to TDD Friday, 30 November 12
  • 16. What BDD adds to TDD • Test what an object does instead of what it is Friday, 30 November 12
  • 17. What BDD adds to TDD • Test what an object does instead of what it is • Design top-down, which is essential for YAGNI – You Aren't Gonna Need It Friday, 30 November 12
  • 18. What BDD adds to TDD • Test what an object does instead of what it is • Design top-down, which is essential for YAGNI – You Aren't Gonna Need It • Define acceptance criteria with the customer and specify it in the automated way, serve the living spec Friday, 30 November 12
  • 19. The BDD “Outside-In” cycle Friday, 30 November 12
  • 20. The BDD “Outside-In” cycle Friday, 30 November 12
  • 21. Gherkin: feature title and narrative Feature: Adding movies to the queue Friday, 30 November 12
  • 22. Gherkin: feature title and narrative Feature: Adding movies to the queue Friday, 30 November 12
  • 23. Gherkin: feature title and narrative Feature: Adding movies to the queue Friday, 30 November 12
  • 24. Gherkin: feature title and narrative Feature: Adding movies to the queue Friday, 30 November 12
  • 25. Describing Features with Cucumber Friday, 30 November 12
  • 26. Describing Features with Cucumber Cucumber is a BDD tool that reads plain text descriptions of application features with example scenarios, which can be converted into automation. The text is written in a business readable domain language, known as Gherkin. Friday, 30 November 12
  • 27. Describing Features with Cucumber Cucumber is a BDD tool that reads plain text descriptions of application features with example scenarios, which can be converted into automation. The text is written in a business readable domain language, known as Gherkin. Friday, 30 November 12
  • 28. Describing code with RSpec Friday, 30 November 12
  • 29. Describing code with RSpec RSpec is a BDD framework, which is used to write executable examples of the expected behaviour of a small bit of code in a controlled context. Friday, 30 November 12
  • 30. Describing code with RSpec RSpec is a BDD framework, which is used to write executable examples of the expected behaviour of a small bit of code in a controlled context. Code example: Output: Friday, 30 November 12
  • 31. Describing code with RSpec Friday, 30 November 12
  • 32. Example: story card Friday, 30 November 12
  • 34. Describing code with RSpec Friday, 30 November 12
  • 36. Get the testing pyramid (un)fit BEFORE AFTER Friday, 30 November 12
  • 37. Communications in the business org Friday, 30 November 12
  • 38. Communications in the business org 1. Translate business goals into prioritized list of features Friday, 30 November 12
  • 39. Communications in the business org 1. Translate business goals into prioritized list of features 2. Trace required behavior within the team - drive design by behavior, build transparency, trust and confidence. Friday, 30 November 12
  • 40. Communications in the business org 1. Translate business goals into prioritized list of features 2. Trace required behavior within the team - drive design by behavior, build transparency, trust and confidence. 3. Clarify business value and desired software behavior - ask “5 Why”, provide feedback, if application logic appears overcomplicated. Friday, 30 November 12
  • 41. Speaking the same language = building together As an awesome team We want to build such a great product So that everyone loves it Given the investment of 22M of bricks When you place all the bricks properly Then the Microsoft Tower of Babel is visible to all people across the Globe Friday, 30 November 12
  • 42. Recommended reading by Aliaksandr Ikhelis, 2012 Friday, 30 November 12