SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Behavior Driven
  Development
          (BDD)
                   With Mocking
  An amazing set of agile tools that
   helps to create kick ass software

             Eric Hosick (erichosick)
Remeber
● Throughout this lecture, please remember:

Agile doesn't fix problems in your
company. It simply brings them to
          light quicker.
             As such:
 Don't be Quick to Blame Agile
Software Without Requirements???




               ?
Question...
 Agile Manifesto: [Favor] working software over
         comprehensive documentation.

We need requirements. They describe the
features/behavior of the program being
developed.

If we need requirements, then why not write
requirements in a way that they can be verified
similar to source code?
Behavior Driven Development

What is it? The name gives it all away...
● Behavior/Feature
   ○ What your software will do described through requirements
     (mocking,stories,begging).
● Driven
   ○ To cause or guide the movement of something.
● Development
   ○ The creation of software through engineering and coding.
● Behavior Driven Development
   ○ The development of software guided directly by described
     behavior and features (and mocking).
Given, When, Then



● Given Eric is authorized
● When he visits the "About Me" Page
● Then he should still be authorized
● And the name "Eric" is shown
Discovering Behavior
● Mockup the system using mocking software
  (Balsamiq for example).
   ○ Create user stories from mockup and or
   ○ Create mockup from user stories
   ○ Hack away on Research and Development but keep
     that code out of production.
● Discover ALL behavior and features of the mockup and
  write Scenarios with Gherkin
● Only then should you write code being pushed to
  production.
                                 GUI centric software
Example Mockup




      http://balsamiq.wpengine.netdna-cdn.com/images/samples/mytunez.png
Why It is So Cool
● Aligns With Agile Manifesto:
   ○ Favor code over documentation
● Forces Product Owner To Focus
   ○ Mock-out and verify what stakeholders want (Lean
     Development) before writing a line of code.
● Forces Developer To Focus
   ○ Developer codes exactly what is needed.
● Requirements and code Are "Verified"
   ○ Continuous integration of requirements
   ○ Continuous integration of code
Why It is So Cool - Part 2
● Describes Your System Twice
    ○ The behavior of your system is written in a programming
      language.
    ○ The behavior of your system is written in a DSL.
    ○ Makes your software more robust.
● Same Scenarios In Different Languages
    ○ Ruby (Cucumber), C# (SpecFlow), PHP (Behat), Java
      (???)
● Iterative Development
    ○ Implement scenarios and push to production as fast as
      possible.
Why It is So Cool - Part 3
● 100% Coverage of the Behavior of Your Software
   ○ Easy to refactor
   ○ Any bugs caused by changes are found out: if you
     changed the behavior of your program you will find out!
   ○ See Describes your system twice.


YOU CAN'T BREAK YOUR
     PROGRAM!
Arguments Against BDD
● Code Isn't Dry
   ○ BDD is too wordy. But! Depends on the language and depends on
     the robustness of your code.
● Product Owner Can's Use BDD
   ○ But - The Domain Specific Language can be written to a level
     appreciated by the Product Owner.
   ○ If they can't explain what they want to you in their own language,
     you need a new product owner.
● Assumes you Know the Problem
   ○ But - If you don't know the problem then how can you code a
     solution?
   ○ Doing R&D - Don't use BDD. Have fun and Hack.
   ○ Sticking that code in production? Not without BDD.
Arguments Against BDD Part 2
● Don't Use In Startup - No Upfront Value
   ○ But! BDD forces the startup to focus on their core products and
     work closely with customers.
   ○ Remove code before it is even written!
● Product Owner Can's Use BDD
   ○ But - The Domain Specific Language can be written to a level
     appreciated by the Product Owner.
   ○ If they can't explain what they want to you in their own language,
     you need a new product owner.
● Assumes You Know the Problem
   ○ But - If you don't know the problem then how can you code a
     solution?
   ○ Doing R&D? - Don't use BDD. Have fun and Hack.
   ○ Sticking code in production? Not without BDD.
Arguments Against BDD Part 3
● Have to Change the BDD A Lot
   ○ If you are changing the BDD a lot does that mean BDD is
     broken? OR
   ○ Does that mean the Product Owner had you write something they
     really didn't want?
Questions?


  source: http://www.flickr.com/photos/katemonkey/122489910/

Mais conteúdo relacionado

Mais procurados

Mob Programming (2016)
Mob Programming (2016)Mob Programming (2016)
Mob Programming (2016)Peter Kofler
 
Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Peter Kofler
 
Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)Peter Kofler
 
Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)Peter Kofler
 
Code Retreat Venice (2016)
Code Retreat Venice (2016)Code Retreat Venice (2016)
Code Retreat Venice (2016)Peter Kofler
 
Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)Peter Kofler
 
Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)Peter Kofler
 
How To Be A Better Developer
How To Be A Better DeveloperHow To Be A Better Developer
How To Be A Better DeveloperAhmed Abu Eldahab
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Peter Kofler
 
Polar talks: code generation
Polar talks: code generationPolar talks: code generation
Polar talks: code generationStojan Peshov
 
It's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspecIt's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspecGiulio De Donato
 
Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Peter Kofler
 
Coding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataCoding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataAlin Pandichi
 
GDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran CanariaGDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran CanariaPeter Kofler
 
Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)Peter Kofler
 
The State of Conversation Design - Designing for the Conversational Future
The State of Conversation Design - Designing for the Conversational FutureThe State of Conversation Design - Designing for the Conversational Future
The State of Conversation Design - Designing for the Conversational FutureRasa Technologies
 
Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Peter Kofler
 
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...Infinum
 

Mais procurados (20)

Mob Programming (2016)
Mob Programming (2016)Mob Programming (2016)
Mob Programming (2016)
 
Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)Coding Dojo: Bank OCR (2014)
Coding Dojo: Bank OCR (2014)
 
Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)Coding Dojo: Asynchronous Clock-In (2016)
Coding Dojo: Asynchronous Clock-In (2016)
 
Phpers day 2019
Phpers day 2019Phpers day 2019
Phpers day 2019
 
Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)Refactoring the Tennis Kata v2 (2016)
Refactoring the Tennis Kata v2 (2016)
 
Java interfaces design perspective
Java interfaces design perspectiveJava interfaces design perspective
Java interfaces design perspective
 
Code Retreat Venice (2016)
Code Retreat Venice (2016)Code Retreat Venice (2016)
Code Retreat Venice (2016)
 
Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)Designing Test Cases for the Gilded Rose Kata v3 (2016)
Designing Test Cases for the Gilded Rose Kata v3 (2016)
 
Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)Brutal Coding Constraints (ITAKE 2017)
Brutal Coding Constraints (ITAKE 2017)
 
How To Be A Better Developer
How To Be A Better DeveloperHow To Be A Better Developer
How To Be A Better Developer
 
Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)Idiomatic R for Rosetta Code (2013)
Idiomatic R for Rosetta Code (2013)
 
Polar talks: code generation
Polar talks: code generationPolar talks: code generation
Polar talks: code generation
 
It's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspecIt's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspec
 
Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)Coding Dojo: Data Munging (2016)
Coding Dojo: Data Munging (2016)
 
Coding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataCoding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis Kata
 
GDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran CanariaGDCR15 in Las Palmas, Gran Canaria
GDCR15 in Las Palmas, Gran Canaria
 
Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)Coding Dojo Object Calisthenics (2016)
Coding Dojo Object Calisthenics (2016)
 
The State of Conversation Design - Designing for the Conversational Future
The State of Conversation Design - Designing for the Conversational FutureThe State of Conversation Design - Designing for the Conversational Future
The State of Conversation Design - Designing for the Conversational Future
 
Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)Software Craftsmanship Journeyman Tour (2013)
Software Craftsmanship Journeyman Tour (2013)
 
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
Infinum Android Talks #19 - Stop wasting time fixing bugs with TDD by Domagoj...
 

Destaque

Implementing the Click - Per Åkerberg
Implementing the Click - Per ÅkerbergImplementing the Click - Per Åkerberg
Implementing the Click - Per ÅkerbergSmartBear
 
Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"EPAM Systems
 
Keeping it Real real Cukeup2015
Keeping it Real real Cukeup2015Keeping it Real real Cukeup2015
Keeping it Real real Cukeup2015jennyjmar
 
Writing Requirements Right
Writing Requirements RightWriting Requirements Right
Writing Requirements RightHani Massoud
 
Gherkin - crash course
Gherkin - crash courseGherkin - crash course
Gherkin - crash courseMichele Costa
 

Destaque (6)

Bdd and Agile Requirements
Bdd and Agile RequirementsBdd and Agile Requirements
Bdd and Agile Requirements
 
Implementing the Click - Per Åkerberg
Implementing the Click - Per ÅkerbergImplementing the Click - Per Åkerberg
Implementing the Click - Per Åkerberg
 
Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"Alexander Litvinok (software engineer) "bdd wtf"
Alexander Litvinok (software engineer) "bdd wtf"
 
Keeping it Real real Cukeup2015
Keeping it Real real Cukeup2015Keeping it Real real Cukeup2015
Keeping it Real real Cukeup2015
 
Writing Requirements Right
Writing Requirements RightWriting Requirements Right
Writing Requirements Right
 
Gherkin - crash course
Gherkin - crash courseGherkin - crash course
Gherkin - crash course
 

Semelhante a Bdd agile requirements

2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meetingpetercaitens1
 
Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowKathy Brown
 
Introduction of Tools for providing rich user experience in debugger
Introduction of Tools for providing rich user experience in debuggerIntroduction of Tools for providing rich user experience in debugger
Introduction of Tools for providing rich user experience in debuggerNaoto Ono
 
CI/CD: Lessons from LinkedIn and Mockito
CI/CD: Lessons from LinkedIn and MockitoCI/CD: Lessons from LinkedIn and Mockito
CI/CD: Lessons from LinkedIn and MockitoC4Media
 
No Code Past The MVP
No Code Past The MVPNo Code Past The MVP
No Code Past The MVPSteph Smith
 
You cant be agile if your code sucks
You cant be agile if your code sucksYou cant be agile if your code sucks
You cant be agile if your code sucksPeter Gfader
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXSolve
 
“One man” development process model
“One man” development process model“One man” development process model
“One man” development process modelSilicon Straits
 
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsShafiul Azam Chowdhury
 
TDD BDD PHP - Sviluppo guidato dai test in PHP con phpspec
TDD BDD PHP - Sviluppo guidato dai test in PHP con phpspecTDD BDD PHP - Sviluppo guidato dai test in PHP con phpspec
TDD BDD PHP - Sviluppo guidato dai test in PHP con phpspecPatrick Luca Fazzi
 
Hack'n Break Android Workshop
Hack'n Break Android WorkshopHack'n Break Android Workshop
Hack'n Break Android WorkshopElif Boncuk
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software houseParis Apostolopoulos
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll buildMark Stoodley
 
Your first 5 PHP design patterns - ThatConference 2012
Your first 5 PHP design patterns - ThatConference 2012Your first 5 PHP design patterns - ThatConference 2012
Your first 5 PHP design patterns - ThatConference 2012Aaron Saray
 
Myths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven DevelopmentMyths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven DevelopmentPankaj Nakhat
 
Developing Better Software
Developing Better SoftwareDeveloping Better Software
Developing Better SoftwareHean Hong Leong
 

Semelhante a Bdd agile requirements (20)

2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting2024.04 - AI in Code Generation - April User Group Meeting
2024.04 - AI in Code Generation - April User Group Meeting
 
Scrum + bdd + ddd
Scrum + bdd + dddScrum + bdd + ddd
Scrum + bdd + ddd
 
What is dev ops?
What is dev ops?What is dev ops?
What is dev ops?
 
Top Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To KnowTop Tips Every Notes Developer Needs To Know
Top Tips Every Notes Developer Needs To Know
 
BDD using behat
BDD using behatBDD using behat
BDD using behat
 
Introduction of Tools for providing rich user experience in debugger
Introduction of Tools for providing rich user experience in debuggerIntroduction of Tools for providing rich user experience in debugger
Introduction of Tools for providing rich user experience in debugger
 
CI/CD: Lessons from LinkedIn and Mockito
CI/CD: Lessons from LinkedIn and MockitoCI/CD: Lessons from LinkedIn and Mockito
CI/CD: Lessons from LinkedIn and Mockito
 
No Code Past The MVP
No Code Past The MVPNo Code Past The MVP
No Code Past The MVP
 
You cant be agile if your code sucks
You cant be agile if your code sucksYou cant be agile if your code sucks
You cant be agile if your code sucks
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektowe
 
“One man” development process model
“One man” development process model“One man” development process model
“One man” development process model
 
Introducing systems analysis, design & development Concepts
Introducing systems analysis, design & development ConceptsIntroducing systems analysis, design & development Concepts
Introducing systems analysis, design & development Concepts
 
TDD BDD PHP - Sviluppo guidato dai test in PHP con phpspec
TDD BDD PHP - Sviluppo guidato dai test in PHP con phpspecTDD BDD PHP - Sviluppo guidato dai test in PHP con phpspec
TDD BDD PHP - Sviluppo guidato dai test in PHP con phpspec
 
Hack'n Break Android Workshop
Hack'n Break Android WorkshopHack'n Break Android Workshop
Hack'n Break Android Workshop
 
Services, tools & practices for a software house
Services, tools & practices for a software houseServices, tools & practices for a software house
Services, tools & practices for a software house
 
Oh the compilers you'll build
Oh the compilers you'll buildOh the compilers you'll build
Oh the compilers you'll build
 
Your first 5 PHP design patterns - ThatConference 2012
Your first 5 PHP design patterns - ThatConference 2012Your first 5 PHP design patterns - ThatConference 2012
Your first 5 PHP design patterns - ThatConference 2012
 
Myths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven DevelopmentMyths and Challenges of Behaviour Driven Development
Myths and Challenges of Behaviour Driven Development
 
Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
 
Developing Better Software
Developing Better SoftwareDeveloping Better Software
Developing Better Software
 

Mais de Agile Vietnam

Hanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum team
Hanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum teamHanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum team
Hanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum teamAgile Vietnam
 
[Hanoi, june 2015] one normal day of an agile developer
[Hanoi, june 2015] one normal day of an agile developer [Hanoi, june 2015] one normal day of an agile developer
[Hanoi, june 2015] one normal day of an agile developer Agile Vietnam
 
An Approach to estimate Software Testing
An Approach to estimate Software TestingAn Approach to estimate Software Testing
An Approach to estimate Software TestingAgile Vietnam
 
Example Agile Marketing
Example Agile MarketingExample Agile Marketing
Example Agile MarketingAgile Vietnam
 
Build up an agile community
Build up an agile communityBuild up an agile community
Build up an agile communityAgile Vietnam
 
Sprint Zero in Scrum
Sprint Zero in ScrumSprint Zero in Scrum
Sprint Zero in ScrumAgile Vietnam
 
You thought you understood Product Backlog
You thought you understood Product BacklogYou thought you understood Product Backlog
You thought you understood Product BacklogAgile Vietnam
 
The Role of the Scrum Master
The Role of the Scrum MasterThe Role of the Scrum Master
The Role of the Scrum MasterAgile Vietnam
 
Tuyên Ngôn Agile - Agile manifesto
Tuyên Ngôn Agile - Agile manifestoTuyên Ngôn Agile - Agile manifesto
Tuyên Ngôn Agile - Agile manifestoAgile Vietnam
 
Agile vietnam scrum coaching sessions
Agile vietnam scrum coaching sessionsAgile vietnam scrum coaching sessions
Agile vietnam scrum coaching sessionsAgile Vietnam
 
From traditional software development process to scrum
From traditional software development process to scrumFrom traditional software development process to scrum
From traditional software development process to scrumAgile Vietnam
 
Agile Vietnam Five Core Concepts
Agile Vietnam Five Core ConceptsAgile Vietnam Five Core Concepts
Agile Vietnam Five Core ConceptsAgile Vietnam
 
Agile tour chris brown-leanstartup
Agile tour chris brown-leanstartupAgile tour chris brown-leanstartup
Agile tour chris brown-leanstartupAgile Vietnam
 
Expeirence design-vietnam-agile tour
Expeirence design-vietnam-agile tourExpeirence design-vietnam-agile tour
Expeirence design-vietnam-agile tourAgile Vietnam
 
Keynote agile-in-vietnam
Keynote agile-in-vietnamKeynote agile-in-vietnam
Keynote agile-in-vietnamAgile Vietnam
 
Scrum Introduction Vietnam
Scrum Introduction VietnamScrum Introduction Vietnam
Scrum Introduction VietnamAgile Vietnam
 

Mais de Agile Vietnam (18)

Hanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum team
Hanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum teamHanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum team
Hanoi, July2015 monthly event: Overcome obstacles to truly be a Scrum team
 
[Hanoi, june 2015] one normal day of an agile developer
[Hanoi, june 2015] one normal day of an agile developer [Hanoi, june 2015] one normal day of an agile developer
[Hanoi, june 2015] one normal day of an agile developer
 
An Approach to estimate Software Testing
An Approach to estimate Software TestingAn Approach to estimate Software Testing
An Approach to estimate Software Testing
 
Example Agile Marketing
Example Agile MarketingExample Agile Marketing
Example Agile Marketing
 
Agile adoption
Agile adoptionAgile adoption
Agile adoption
 
Build up an agile community
Build up an agile communityBuild up an agile community
Build up an agile community
 
Sprint Zero in Scrum
Sprint Zero in ScrumSprint Zero in Scrum
Sprint Zero in Scrum
 
You thought you understood Product Backlog
You thought you understood Product BacklogYou thought you understood Product Backlog
You thought you understood Product Backlog
 
The Role of the Scrum Master
The Role of the Scrum MasterThe Role of the Scrum Master
The Role of the Scrum Master
 
Tuyên Ngôn Agile - Agile manifesto
Tuyên Ngôn Agile - Agile manifestoTuyên Ngôn Agile - Agile manifesto
Tuyên Ngôn Agile - Agile manifesto
 
Agile vietnam scrum coaching sessions
Agile vietnam scrum coaching sessionsAgile vietnam scrum coaching sessions
Agile vietnam scrum coaching sessions
 
From traditional software development process to scrum
From traditional software development process to scrumFrom traditional software development process to scrum
From traditional software development process to scrum
 
Agile Vietnam Five Core Concepts
Agile Vietnam Five Core ConceptsAgile Vietnam Five Core Concepts
Agile Vietnam Five Core Concepts
 
Agile tour chris brown-leanstartup
Agile tour chris brown-leanstartupAgile tour chris brown-leanstartup
Agile tour chris brown-leanstartup
 
Expeirence design-vietnam-agile tour
Expeirence design-vietnam-agile tourExpeirence design-vietnam-agile tour
Expeirence design-vietnam-agile tour
 
Keynote agile-in-vietnam
Keynote agile-in-vietnamKeynote agile-in-vietnam
Keynote agile-in-vietnam
 
Scrum Introduction Vietnam
Scrum Introduction VietnamScrum Introduction Vietnam
Scrum Introduction Vietnam
 
Tpl agile processes
Tpl agile processesTpl agile processes
Tpl agile processes
 

Último

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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
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
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
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
 
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
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

Último (20)

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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
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
 
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
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 

Bdd agile requirements

  • 1. Behavior Driven Development (BDD) With Mocking An amazing set of agile tools that helps to create kick ass software Eric Hosick (erichosick)
  • 2. Remeber ● Throughout this lecture, please remember: Agile doesn't fix problems in your company. It simply brings them to light quicker. As such: Don't be Quick to Blame Agile
  • 4. Question... Agile Manifesto: [Favor] working software over comprehensive documentation. We need requirements. They describe the features/behavior of the program being developed. If we need requirements, then why not write requirements in a way that they can be verified similar to source code?
  • 5. Behavior Driven Development What is it? The name gives it all away... ● Behavior/Feature ○ What your software will do described through requirements (mocking,stories,begging). ● Driven ○ To cause or guide the movement of something. ● Development ○ The creation of software through engineering and coding. ● Behavior Driven Development ○ The development of software guided directly by described behavior and features (and mocking).
  • 6. Given, When, Then ● Given Eric is authorized ● When he visits the "About Me" Page ● Then he should still be authorized ● And the name "Eric" is shown
  • 7. Discovering Behavior ● Mockup the system using mocking software (Balsamiq for example). ○ Create user stories from mockup and or ○ Create mockup from user stories ○ Hack away on Research and Development but keep that code out of production. ● Discover ALL behavior and features of the mockup and write Scenarios with Gherkin ● Only then should you write code being pushed to production. GUI centric software
  • 8. Example Mockup http://balsamiq.wpengine.netdna-cdn.com/images/samples/mytunez.png
  • 9. Why It is So Cool ● Aligns With Agile Manifesto: ○ Favor code over documentation ● Forces Product Owner To Focus ○ Mock-out and verify what stakeholders want (Lean Development) before writing a line of code. ● Forces Developer To Focus ○ Developer codes exactly what is needed. ● Requirements and code Are "Verified" ○ Continuous integration of requirements ○ Continuous integration of code
  • 10. Why It is So Cool - Part 2 ● Describes Your System Twice ○ The behavior of your system is written in a programming language. ○ The behavior of your system is written in a DSL. ○ Makes your software more robust. ● Same Scenarios In Different Languages ○ Ruby (Cucumber), C# (SpecFlow), PHP (Behat), Java (???) ● Iterative Development ○ Implement scenarios and push to production as fast as possible.
  • 11. Why It is So Cool - Part 3 ● 100% Coverage of the Behavior of Your Software ○ Easy to refactor ○ Any bugs caused by changes are found out: if you changed the behavior of your program you will find out! ○ See Describes your system twice. YOU CAN'T BREAK YOUR PROGRAM!
  • 12. Arguments Against BDD ● Code Isn't Dry ○ BDD is too wordy. But! Depends on the language and depends on the robustness of your code. ● Product Owner Can's Use BDD ○ But - The Domain Specific Language can be written to a level appreciated by the Product Owner. ○ If they can't explain what they want to you in their own language, you need a new product owner. ● Assumes you Know the Problem ○ But - If you don't know the problem then how can you code a solution? ○ Doing R&D - Don't use BDD. Have fun and Hack. ○ Sticking that code in production? Not without BDD.
  • 13. Arguments Against BDD Part 2 ● Don't Use In Startup - No Upfront Value ○ But! BDD forces the startup to focus on their core products and work closely with customers. ○ Remove code before it is even written! ● Product Owner Can's Use BDD ○ But - The Domain Specific Language can be written to a level appreciated by the Product Owner. ○ If they can't explain what they want to you in their own language, you need a new product owner. ● Assumes You Know the Problem ○ But - If you don't know the problem then how can you code a solution? ○ Doing R&D? - Don't use BDD. Have fun and Hack. ○ Sticking code in production? Not without BDD.
  • 14. Arguments Against BDD Part 3 ● Have to Change the BDD A Lot ○ If you are changing the BDD a lot does that mean BDD is broken? OR ○ Does that mean the Product Owner had you write something they really didn't want?
  • 15. Questions? source: http://www.flickr.com/photos/katemonkey/122489910/