SlideShare una empresa de Scribd logo
1 de 24
Behaviour	
  Driven	
  Development	
  
 Beyond	
  “Given,	
  When,	
  Then”	
  


            Antony	
  Marcano	
  
The	
  Telephone	
  Game	
  




             h<p://www.brokenpicturetelephone.com/	
  
What	
  is	
  BDD?	
  

Beyond	
  “Given,	
  When,	
  Then”	
  
BDD	
  Origins	
  
	
  ‘ The	
  deeper	
  I	
  got	
  into	
  TDD,	
  the	
  more	
  I	
  felt	
  that	
  my	
  own	
  
    journey	
  had	
  been	
  less	
  of	
  a	
  wax-­‐on,	
  wax-­‐off	
  process	
  of	
  
    gradual	
  mastery	
  than	
  a	
  series	
  of	
  blind	
  alleys.	
  I	
  remember	
  
    thinking	
  “If	
  only	
  someone	
  had	
  told	
  me	
  that!”…	
  	
  
	
  I	
  decided	
  it	
  must	
  be	
  possible	
  to	
  present	
  TDD	
  in	
  a	
  way	
  that	
  
    gets	
  straight	
  to	
  the	
  good	
  stuff	
  and	
  avoids	
  all	
  the	
  piFalls.	
  	
  
    My	
  response	
  is	
  behaviour-­‐driven	
  development	
  (BDD).	
  	
  
	
  Over	
  Lme,	
  BDD	
  has	
  grown	
  to	
  encompass	
  the	
  wider	
  picture	
  
    of	
  agile	
  analysis	
  and	
  automated	
  acceptance	
  tesLng.’	
  
	
  -­‐Dan	
  North	
  
BDD	
  Origins	
  -­‐	
  Shortened	
  
“ 	
  Behaviour	
  Driven	
  Development	
  (BDD)	
  builds	
  
      upon	
  Test-­‐Driven	
  Development	
  (TDD)	
  by	
  
      formalising	
  the	
  good	
  habits	
  of	
  the	
  best	
  TDD	
  
      pracMMoners.	
  ”	
  –	
  The	
  Cucumber	
  Book,	
  Aslak	
  Hellesøy,	
  Ma<	
  Wynne	
  
Some	
  ‘Good	
  Habits’	
  

     Slice	
  VerMcally	
  
Work	
  from	
  the	
  outside-­‐in	
  
 One	
  example	
  at	
  a	
  Mme	
  
Slice	
  VerMcally	
  
SoWware	
  Components	
  
                                                                                                 SoWware	
  Components	
  
                                                                                                  (modules/classes)	
  
                                                                                                   (modules/classes)	
  




                                                           Lme	
  
                                                           Lme	
  



2009
                                                                          Sprint	
  nn
                                                                        IteraMon	
  	
   	
  
                                                                       Sprint	
  n+1…	
  
                                                                     IteraMon	
  n+1…	
  




                                                                                                                                     Story	
  
                                                                                                                             User	
  Login	
   A	
  


                                                                                                                             User	
  Story	
  B	
  
                                                                                                                             Create	
  album	
  
                                                                                                                                                       TradiMonally,	
  development	
  is	
  sliced	
  horizontally	
  




                                                                                                                             User	
  Story	
  C	
  
                                                                                                                              Share	
  photos	
  
                                                                          Sprint	
  x
                                                                        IteraMon	
  	
  x	
  




                                                                                                                             User	
  Story	
  D	
  
                                                                                                                             Private	
  albums	
  
       …but defers feedback (often, until it’s too late)
8
SoWware	
  Components	
  
                                                                        (modules/classes)	
  




                                      Lme	
  



2009
                                                                                                  Share	
  photos	
  




                                                IteraMon	
  n	
  
                                                                                                  Create	
  album	
  


                                                                                                  Share	
  photos	
  

                                                IteraMon	
  n+1	
  
                                                                                                                          VerMcal	
  slicing	
  




                                                                                                         Login	
  


                                                                                                   Create	
  album	
  


                                                                                                   Share	
  photos	
  
                                                IteraMon	
  x	
  




                                                                                                  Private	
  albums	
  
       …results in earlier feedback
9
Work	
  from	
  the	
  outside-­‐in	
  
Outside-­‐in	
  
One	
  example	
  at	
  a	
  Mme	
  
One	
  example	
  at	
  a	
  Mme	
  
Expressing	
  Examples	
  

    Given,	
  When,	
  Then	
  
       And	
  beyond	
  
Given	
  When	
  Then	
  
	
  Given	
  <some	
  iniMal	
  context>	
  
	
  When	
  <something	
  happens>	
  
	
  Then	
  <some	
  expectaMon>	
  
Given	
  When	
  Then	
  
	
  Given	
  <some	
  iniMal	
  context>	
  
	
  	
  [and	
  some	
  addiMonal	
  context]	
  
	
  When	
  <something	
  happens>	
  
	
  	
  [and	
  something	
  else	
  happens]	
  
	
  Then	
  <some	
  expectaMon>	
  
	
  	
  [and	
  some	
  more	
  expectaMons]	
  
A	
  Typical	
  IllustraMon	
  
Scenario: Login Successfully!
  Given I am on the home-page!
  When I enter the username ‘antony’!
  And I enter the password ‘p4$$w0rd’!
  And I click ‘login’!
  Then I should be logged in	
  	
  




 What’s	
  wrong	
  with	
  this	
  example?	
  
A	
  Be<er	
  IllustraMon	
  
Scenario: Login Successfully!
 When I login as ‘antony’ with the password ‘p4$$w0rd’!
 Then I should be logged in	
  	
  




               Why	
  is	
  it	
  be<er?	
  
Task	
  Analysis	
  

A	
  li<le	
  UX	
  for	
  our	
  BDD	
  
•  Pitching	
  it	
  right…	
  
    –  Goals 	
                          	
  e.g.	
  Withdraw	
  Cash	
  
        •  Tasks	
  	
  	
   	
  IdenMfy	
  to	
  bank	
  
           	
   	
              	
  	
  	
  	
  	
   	
  Request	
  amount	
  
                                                                                                   }	
        Just	
  right	
  



                       –  (inter)acLons	
  



                                                                                                   }	
  
                         	
     	
        	
         	
  Insert	
  Card	
  
                                                                                                              Too	
  
                         	
     	
        	
  	
     	
  Enter	
  Pin	
  
                                                                                                              low	
  
                         	
     	
        	
         	
  Press	
  “Withdraw	
  Cash” 	
     	
         	
     level	
   	
  	
  
                                                                                                                	
  
                         	
     	
        	
         	
  Enter	
  amount	
  
                         	
     	
        	
         	
  Press	
  OK	
  
For	
  example…	
  

When I attempt to add, the number ‘2’ and the number ’3’!




                             task	
  

                     }	
  
                         acMons	
  

                                        h<p://cukesalad.info	
  
Some	
  nice	
  side-­‐effects	
  
          Encourages	
  descripMon	
  	
  
    of	
  UI	
  interacMons	
  in	
  one	
  place	
  

Makes	
  it	
  easier	
  to	
  execute	
  scenarios	
  
       via	
  different	
  interfaces	
  
Discussion	
  

 QuesMons?	
  
   Ideas?	
  
 Feedback?	
  
antony@riverglide.com 	
   	
  @AntonyMarcano	
  
talktous@riverglide.com	
   	
  @RiverGlide/rs	
  
  	
   	
     	
     	
     	
     	
     	
     	
     	
     	
     	
  h<p://twi<er.com/RiverGlide/rs	
  

h<p://cukesalad.info 	
   	
   	
  #cukesalad	
  
h<p://RiverGlide.com	
   	
   	
  @RiverGlide	
  	
  

Más contenido relacionado

Destacado

Intro to TDD & BDD
Intro to TDD & BDDIntro to TDD & BDD
Intro to TDD & BDDdevObjective
 
Hsv.py Lightning Talk - Bottle
Hsv.py Lightning Talk - BottleHsv.py Lightning Talk - Bottle
Hsv.py Lightning Talk - BottlePatrick Viafore
 
Security Automation using ZAP
Security Automation using ZAPSecurity Automation using ZAP
Security Automation using ZAPVaibhav Gupta
 
Visita Policía Nacional
Visita Policía NacionalVisita Policía Nacional
Visita Policía Nacionalpimasan
 
BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsBDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsPatrick Viafore
 
Modelling by Example Workshop - PHPNW 2016
Modelling by Example Workshop - PHPNW 2016Modelling by Example Workshop - PHPNW 2016
Modelling by Example Workshop - PHPNW 2016CiaranMcNulty
 
Acceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot FrameworkAcceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot FrameworkSteve Zhang
 
Getting Comfortable with BDD
Getting Comfortable with BDDGetting Comfortable with BDD
Getting Comfortable with BDDAlex Sharp
 
BDD style Unit Testing
BDD style Unit TestingBDD style Unit Testing
BDD style Unit TestingWen-Tien Chang
 

Destacado (11)

Intro to TDD & BDD
Intro to TDD & BDDIntro to TDD & BDD
Intro to TDD & BDD
 
Hsv.py Lightning Talk - Bottle
Hsv.py Lightning Talk - BottleHsv.py Lightning Talk - Bottle
Hsv.py Lightning Talk - Bottle
 
Futurecasting
FuturecastingFuturecasting
Futurecasting
 
Security Automation using ZAP
Security Automation using ZAPSecurity Automation using ZAP
Security Automation using ZAP
 
Visita Policía Nacional
Visita Policía NacionalVisita Policía Nacional
Visita Policía Nacional
 
BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsBDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
BDD to the Bone: Using Behave and Selenium to Test-Drive Web Applications
 
Modelling by Example Workshop - PHPNW 2016
Modelling by Example Workshop - PHPNW 2016Modelling by Example Workshop - PHPNW 2016
Modelling by Example Workshop - PHPNW 2016
 
TDD in Agile
TDD in AgileTDD in Agile
TDD in Agile
 
Acceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot FrameworkAcceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot Framework
 
Getting Comfortable with BDD
Getting Comfortable with BDDGetting Comfortable with BDD
Getting Comfortable with BDD
 
BDD style Unit Testing
BDD style Unit TestingBDD style Unit Testing
BDD style Unit Testing
 

Más de AgileOnTheBeach

Más de AgileOnTheBeach (20)

Research instruments case study
Research instruments case studyResearch instruments case study
Research instruments case study
 
Sullivan cuff case study
Sullivan cuff case studySullivan cuff case study
Sullivan cuff case study
 
Value stream mapping
Value stream mapping  Value stream mapping
Value stream mapping
 
Tool up your lamp stack
Tool up your lamp stackTool up your lamp stack
Tool up your lamp stack
 
The problem solvers problem
The problem solvers problemThe problem solvers problem
The problem solvers problem
 
System Error
System ErrorSystem Error
System Error
 
Surfing the Agile Wave
Surfing the Agile WaveSurfing the Agile Wave
Surfing the Agile Wave
 
Smart Metrics
Smart Metrics  Smart Metrics
Smart Metrics
 
Slow and dirty with callouts
Slow and dirty with calloutsSlow and dirty with callouts
Slow and dirty with callouts
 
Research instruments case study
Research instruments case studyResearch instruments case study
Research instruments case study
 
Objective agility
Objective agilityObjective agility
Objective agility
 
Lean and lego
Lean and lego Lean and lego
Lean and lego
 
Ignition team - creating agile companies
Ignition team - creating agile companiesIgnition team - creating agile companies
Ignition team - creating agile companies
 
First build the right thing
First build the right thingFirst build the right thing
First build the right thing
 
Embedded storycrafting
Embedded storycraftingEmbedded storycrafting
Embedded storycrafting
 
Beware sharp tools
Beware sharp toolsBeware sharp tools
Beware sharp tools
 
Lean startup
Lean startupLean startup
Lean startup
 
Sustaining Test-Driven Development
Sustaining Test-Driven DevelopmentSustaining Test-Driven Development
Sustaining Test-Driven Development
 
Agile in Practice
Agile in PracticeAgile in Practice
Agile in Practice
 
Oxford Innovation - case study
Oxford Innovation - case studyOxford Innovation - case study
Oxford Innovation - case study
 

Último

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Behaviour Driven Development - Beyond given when then

  • 1. Behaviour  Driven  Development   Beyond  “Given,  When,  Then”   Antony  Marcano  
  • 2. The  Telephone  Game   h<p://www.brokenpicturetelephone.com/  
  • 3. What  is  BDD?   Beyond  “Given,  When,  Then”  
  • 4. BDD  Origins    ‘ The  deeper  I  got  into  TDD,  the  more  I  felt  that  my  own   journey  had  been  less  of  a  wax-­‐on,  wax-­‐off  process  of   gradual  mastery  than  a  series  of  blind  alleys.  I  remember   thinking  “If  only  someone  had  told  me  that!”…      I  decided  it  must  be  possible  to  present  TDD  in  a  way  that   gets  straight  to  the  good  stuff  and  avoids  all  the  piFalls.     My  response  is  behaviour-­‐driven  development  (BDD).      Over  Lme,  BDD  has  grown  to  encompass  the  wider  picture   of  agile  analysis  and  automated  acceptance  tesLng.’    -­‐Dan  North  
  • 5. BDD  Origins  -­‐  Shortened   “  Behaviour  Driven  Development  (BDD)  builds   upon  Test-­‐Driven  Development  (TDD)  by   formalising  the  good  habits  of  the  best  TDD   pracMMoners.  ”  –  The  Cucumber  Book,  Aslak  Hellesøy,  Ma<  Wynne  
  • 6. Some  ‘Good  Habits’   Slice  VerMcally   Work  from  the  outside-­‐in   One  example  at  a  Mme  
  • 8. SoWware  Components   SoWware  Components   (modules/classes)   (modules/classes)   Lme   Lme   2009 Sprint  nn IteraMon       Sprint  n+1…   IteraMon  n+1…   Story   User  Login   A   User  Story  B   Create  album   TradiMonally,  development  is  sliced  horizontally   User  Story  C   Share  photos   Sprint  x IteraMon    x   User  Story  D   Private  albums   …but defers feedback (often, until it’s too late) 8
  • 9. SoWware  Components   (modules/classes)   Lme   2009 Share  photos   IteraMon  n   Create  album   Share  photos   IteraMon  n+1   VerMcal  slicing   Login   Create  album   Share  photos   IteraMon  x   Private  albums   …results in earlier feedback 9
  • 10. Work  from  the  outside-­‐in  
  • 12. One  example  at  a  Mme  
  • 13. One  example  at  a  Mme  
  • 14. Expressing  Examples   Given,  When,  Then   And  beyond  
  • 15. Given  When  Then    Given  <some  iniMal  context>    When  <something  happens>    Then  <some  expectaMon>  
  • 16. Given  When  Then    Given  <some  iniMal  context>      [and  some  addiMonal  context]    When  <something  happens>      [and  something  else  happens]    Then  <some  expectaMon>      [and  some  more  expectaMons]  
  • 17. A  Typical  IllustraMon   Scenario: Login Successfully! Given I am on the home-page! When I enter the username ‘antony’! And I enter the password ‘p4$$w0rd’! And I click ‘login’! Then I should be logged in     What’s  wrong  with  this  example?  
  • 18. A  Be<er  IllustraMon   Scenario: Login Successfully! When I login as ‘antony’ with the password ‘p4$$w0rd’! Then I should be logged in     Why  is  it  be<er?  
  • 19. Task  Analysis   A  li<le  UX  for  our  BDD  
  • 20. •  Pitching  it  right…   –  Goals    e.g.  Withdraw  Cash   •  Tasks        IdenMfy  to  bank                  Request  amount   }   Just  right   –  (inter)acLons   }          Insert  Card   Too            Enter  Pin   low          Press  “Withdraw  Cash”       level                Enter  amount          Press  OK  
  • 21. For  example…   When I attempt to add, the number ‘2’ and the number ’3’! task   }   acMons   h<p://cukesalad.info  
  • 22. Some  nice  side-­‐effects   Encourages  descripMon     of  UI  interacMons  in  one  place   Makes  it  easier  to  execute  scenarios   via  different  interfaces  
  • 23. Discussion   QuesMons?   Ideas?   Feedback?  
  • 24. antony@riverglide.com    @AntonyMarcano   talktous@riverglide.com    @RiverGlide/rs                        h<p://twi<er.com/RiverGlide/rs   h<p://cukesalad.info      #cukesalad   h<p://RiverGlide.com      @RiverGlide