SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Behavior-Driven Development 
One Team’s Exploration
Behavior-Driven Development 
Or… 
● BDD 
● Acceptance Test-Driven Development 
● Specification by Example 
● ...
What is BDD? 
● Focuses on specifying behavior instead of 
writing tests 
● Defines a language for writing behaviors that 
can be executed 
o Gherkin - Given-When-Then statements
Why use BDD? 
● functional, end-to-end testing 
● communication 
o with product owner 
o with team members 
● documentation 
● building the right software
What’s wrong with TDD? 
● Nothing 
● Reading unit-tests harder for the business
What tools & processes did we use? 
We were building a REST service with Java, 
so…cucumber-jvm with groovy. 
● simplified step-definition (vs Java) 
Given(~'^an order with all details$') {-> 
@Given("^a vehicle exists$") 
public void a_vehicle_exists() throws Throwable {
What tools & processes did we use? 
● groovy - cucumber-spring integration 
o wasn’t strong, but can be worked around 
● Could’ve used unit testing directly 
Scenario: place a valid order 
Given an order with all details 
When an order is placed 
Then a "CREATED" response is returned 
And the location of the new order is returned 
And a confirmation number is returned 
And the status is "ACTIVE" 
def “place a valid order”() { 
given: “an order with all details” 
when: “an order is placed” 
then: “a CREATED response is returned” 
and: “the location of the new order is returned” 
and: “a confirmation number is returned” 
and: “the status is ACTIVE” 
}
How did it go?
Better Team Communication
Less Assumptions 
Clarified assumptions with the Given clauses
Reviews and Unit Testing 
Code review focus 
● Read tests first 
Unit test changes 
● Used the Spock given-when-then structure, often with 
comments, to explain the test similar to Cucumber.
Product Owner Involvement 
Product Owner never ended up looking at the 
tests
Story Breakdown 
Difficulty with scrum story 
breakdown and swarming 
● Starting with Cucumber 
feature left us feeling 
constrained with how the next 
steps would happen. 
● How to get more than two 
people on it and still feel 
effective?
Others 
More time consuming 
Not everyone likes it
What would I do differently? 
● Continue working on 
involving product owner 
● Create feature statements as part of story 
creation 
● Demonstrate progress through test report
Summary 
● BDD was a good thing 
● I think we should continue the practice 
o though stronger business involvement is needed for 
it to be truly effective
Questions

Weitere ähnliche Inhalte

Was ist angesagt?

Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...DicodingEvent
 
ALE15 The real value of a definition of done
ALE15  The real value of a definition of doneALE15  The real value of a definition of done
ALE15 The real value of a definition of doneChristian Vos
 
Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Tzach Zohar
 
Definition of done training
Definition of done trainingDefinition of done training
Definition of done trainingMonica Yap
 
Reactjs workshop (1)
Reactjs workshop (1)Reactjs workshop (1)
Reactjs workshop (1)Ahmed rebai
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...Steve Lange
 
Using Crowdsourced Testing to Turbocharge your Development Team
Using Crowdsourced Testing to Turbocharge your Development TeamUsing Crowdsourced Testing to Turbocharge your Development Team
Using Crowdsourced Testing to Turbocharge your Development TeamRainforest QA
 
Coderetreat @ CodersTUG
Coderetreat @ CodersTUGCoderetreat @ CodersTUG
Coderetreat @ CodersTUGMatteo Baglini
 
GG WORKSHOP GAMES & APPS IN JAVASCRIPT
GG WORKSHOP GAMES & APPS IN JAVASCRIPTGG WORKSHOP GAMES & APPS IN JAVASCRIPT
GG WORKSHOP GAMES & APPS IN JAVASCRIPTmichalbu
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
 
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...MobileMonday Estonia
 
Implementing automation in definition of done is team effort
Implementing automation in definition of done is team effortImplementing automation in definition of done is team effort
Implementing automation in definition of done is team effortAnand Narayan Shirkande
 
The art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow testThe art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow testMobileMonday Estonia
 
what's blocking our way
what's blocking our waywhat's blocking our way
what's blocking our waytanvir afzal
 
Dedicated QA person in scrum team
Dedicated QA person in scrum teamDedicated QA person in scrum team
Dedicated QA person in scrum teamNikos Raptis
 
Story Based Burn Down
Story Based Burn DownStory Based Burn Down
Story Based Burn DownEthan Huang
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystemsOutSystems
 

Was ist angesagt? (20)

Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
 
Is Agile Better
Is Agile BetterIs Agile Better
Is Agile Better
 
ALE15 The real value of a definition of done
ALE15  The real value of a definition of doneALE15  The real value of a definition of done
ALE15 The real value of a definition of done
 
Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)Continuous Delivery in Practice (extended)
Continuous Delivery in Practice (extended)
 
Definition of done training
Definition of done trainingDefinition of done training
Definition of done training
 
Reactjs workshop (1)
Reactjs workshop (1)Reactjs workshop (1)
Reactjs workshop (1)
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
 
Using Crowdsourced Testing to Turbocharge your Development Team
Using Crowdsourced Testing to Turbocharge your Development TeamUsing Crowdsourced Testing to Turbocharge your Development Team
Using Crowdsourced Testing to Turbocharge your Development Team
 
Coderetreat @ CodersTUG
Coderetreat @ CodersTUGCoderetreat @ CodersTUG
Coderetreat @ CodersTUG
 
GG WORKSHOP GAMES & APPS IN JAVASCRIPT
GG WORKSHOP GAMES & APPS IN JAVASCRIPTGG WORKSHOP GAMES & APPS IN JAVASCRIPT
GG WORKSHOP GAMES & APPS IN JAVASCRIPT
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
“Startup - it’s not just an IT project” - a random sampling of problems we’ve...
 
Implementing automation in definition of done is team effort
Implementing automation in definition of done is team effortImplementing automation in definition of done is team effort
Implementing automation in definition of done is team effort
 
The art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow testThe art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow test
 
what's blocking our way
what's blocking our waywhat's blocking our way
what's blocking our way
 
QA in Agile World
QA in Agile WorldQA in Agile World
QA in Agile World
 
Dedicated QA person in scrum team
Dedicated QA person in scrum teamDedicated QA person in scrum team
Dedicated QA person in scrum team
 
QA tester in the Scrum
QA tester in the ScrumQA tester in the Scrum
QA tester in the Scrum
 
Story Based Burn Down
Story Based Burn DownStory Based Burn Down
Story Based Burn Down
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystems
 

Andere mochten auch

Behaviour Driven Development Hands-on
Behaviour Driven Development Hands-onBehaviour Driven Development Hands-on
Behaviour Driven Development Hands-onHemmerling
 
Behaviour Driven Development - Beyond given when then
Behaviour Driven Development - Beyond given when thenBehaviour Driven Development - Beyond given when then
Behaviour Driven Development - Beyond given when thenAgileOnTheBeach
 
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
 
BDD style Unit Testing
BDD style Unit TestingBDD style Unit Testing
BDD style Unit TestingWen-Tien Chang
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot FrameworkPekka Klärck
 
Driving Design through Examples
Driving Design through ExamplesDriving Design through Examples
Driving Design through ExamplesCiaranMcNulty
 

Andere mochten auch (7)

Behaviour Driven Development Hands-on
Behaviour Driven Development Hands-onBehaviour Driven Development Hands-on
Behaviour Driven Development Hands-on
 
Behaviour Driven Development - Beyond given when then
Behaviour Driven Development - Beyond given when thenBehaviour Driven Development - Beyond given when then
Behaviour Driven Development - Beyond given when then
 
Modelling by Example Workshop - PHPNW 2016
Modelling by Example Workshop - PHPNW 2016Modelling by Example Workshop - PHPNW 2016
Modelling by Example Workshop - PHPNW 2016
 
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
 
BDD style Unit Testing
BDD style Unit TestingBDD style Unit Testing
BDD style Unit Testing
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
 
Driving Design through Examples
Driving Design through ExamplesDriving Design through Examples
Driving Design through Examples
 

Ähnlich wie Behavior-Driven Design: One Team's Exploration

BDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User StoriesBDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User StoriesSauce Labs
 
Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy Vijay Kumbhar
 
Lets cook cucumber !!
Lets cook cucumber !!Lets cook cucumber !!
Lets cook cucumber !!vodQA
 
Agile Testing Agile Ottawa April 2015
Agile Testing   Agile Ottawa April 2015Agile Testing   Agile Ottawa April 2015
Agile Testing Agile Ottawa April 2015Dag Rowe
 
Bdd. Automate your requirements
Bdd. Automate your requirementsBdd. Automate your requirements
Bdd. Automate your requirementsjugkaraganda
 
Agile testingandautomation
Agile testingandautomationAgile testingandautomation
Agile testingandautomationjeisner
 
Unit testing
Unit testingUnit testing
Unit testingPiXeL16
 
Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Mindfire Solutions
 
Design for Testability
Design for Testability Design for Testability
Design for Testability Pawel Kalbrun
 
Tdd - Test Driven Development
Tdd - Test Driven DevelopmentTdd - Test Driven Development
Tdd - Test Driven DevelopmentDavid Paluy
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is ImportaintSana Nasar
 
Introducing BDD and TDD with Cucumber
Introducing BDD and TDD with CucumberIntroducing BDD and TDD with Cucumber
Introducing BDD and TDD with CucumberKnoldus Inc.
 
Automated Testing in Angular Slides
Automated Testing in Angular SlidesAutomated Testing in Angular Slides
Automated Testing in Angular SlidesJim Lynch
 
Manual Testing real time questions .pdf
Manual Testing real time questions .pdfManual Testing real time questions .pdf
Manual Testing real time questions .pdfTiktokIndia2
 
Software Testing Basic Concepts
Software Testing Basic ConceptsSoftware Testing Basic Concepts
Software Testing Basic Conceptswesovi
 

Ähnlich wie Behavior-Driven Design: One Team's Exploration (20)

BDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User StoriesBDD Selenium for Agile Teams - User Stories
BDD Selenium for Agile Teams - User Stories
 
Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy
 
Lets cook cucumber !!
Lets cook cucumber !!Lets cook cucumber !!
Lets cook cucumber !!
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Agile Testing Agile Ottawa April 2015
Agile Testing   Agile Ottawa April 2015Agile Testing   Agile Ottawa April 2015
Agile Testing Agile Ottawa April 2015
 
Quality is a Mindset
Quality is a MindsetQuality is a Mindset
Quality is a Mindset
 
TDD
TDDTDD
TDD
 
Bdd. Automate your requirements
Bdd. Automate your requirementsBdd. Automate your requirements
Bdd. Automate your requirements
 
Agile testingandautomation
Agile testingandautomationAgile testingandautomation
Agile testingandautomation
 
Unit testing
Unit testingUnit testing
Unit testing
 
Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)Test Automation Framework using Cucumber BDD overview (part 1)
Test Automation Framework using Cucumber BDD overview (part 1)
 
Design for Testability
Design for Testability Design for Testability
Design for Testability
 
Search microservice
Search microserviceSearch microservice
Search microservice
 
Tdd - Test Driven Development
Tdd - Test Driven DevelopmentTdd - Test Driven Development
Tdd - Test Driven Development
 
Bdd in action
Bdd in actionBdd in action
Bdd in action
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is Importaint
 
Introducing BDD and TDD with Cucumber
Introducing BDD and TDD with CucumberIntroducing BDD and TDD with Cucumber
Introducing BDD and TDD with Cucumber
 
Automated Testing in Angular Slides
Automated Testing in Angular SlidesAutomated Testing in Angular Slides
Automated Testing in Angular Slides
 
Manual Testing real time questions .pdf
Manual Testing real time questions .pdfManual Testing real time questions .pdf
Manual Testing real time questions .pdf
 
Software Testing Basic Concepts
Software Testing Basic ConceptsSoftware Testing Basic Concepts
Software Testing Basic Concepts
 

Kürzlich hochgeladen

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 

Kürzlich hochgeladen (20)

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 

Behavior-Driven Design: One Team's Exploration

  • 1. Behavior-Driven Development One Team’s Exploration
  • 2. Behavior-Driven Development Or… ● BDD ● Acceptance Test-Driven Development ● Specification by Example ● ...
  • 3. What is BDD? ● Focuses on specifying behavior instead of writing tests ● Defines a language for writing behaviors that can be executed o Gherkin - Given-When-Then statements
  • 4. Why use BDD? ● functional, end-to-end testing ● communication o with product owner o with team members ● documentation ● building the right software
  • 5. What’s wrong with TDD? ● Nothing ● Reading unit-tests harder for the business
  • 6. What tools & processes did we use? We were building a REST service with Java, so…cucumber-jvm with groovy. ● simplified step-definition (vs Java) Given(~'^an order with all details$') {-> @Given("^a vehicle exists$") public void a_vehicle_exists() throws Throwable {
  • 7. What tools & processes did we use? ● groovy - cucumber-spring integration o wasn’t strong, but can be worked around ● Could’ve used unit testing directly Scenario: place a valid order Given an order with all details When an order is placed Then a "CREATED" response is returned And the location of the new order is returned And a confirmation number is returned And the status is "ACTIVE" def “place a valid order”() { given: “an order with all details” when: “an order is placed” then: “a CREATED response is returned” and: “the location of the new order is returned” and: “a confirmation number is returned” and: “the status is ACTIVE” }
  • 10. Less Assumptions Clarified assumptions with the Given clauses
  • 11. Reviews and Unit Testing Code review focus ● Read tests first Unit test changes ● Used the Spock given-when-then structure, often with comments, to explain the test similar to Cucumber.
  • 12. Product Owner Involvement Product Owner never ended up looking at the tests
  • 13. Story Breakdown Difficulty with scrum story breakdown and swarming ● Starting with Cucumber feature left us feeling constrained with how the next steps would happen. ● How to get more than two people on it and still feel effective?
  • 14. Others More time consuming Not everyone likes it
  • 15. What would I do differently? ● Continue working on involving product owner ● Create feature statements as part of story creation ● Demonstrate progress through test report
  • 16. Summary ● BDD was a good thing ● I think we should continue the practice o though stronger business involvement is needed for it to be truly effective

Hinweis der Redaktion

  1. Who has heard of BDD? Who is currently using BDD?
  2. Other reasons?
  3. Points to cover: We explored this with the Spock framework Code would be between each line Text wouldn’t read as easily
  4. What people didn’t like: Time it takes to run tests - they are functional, so they have to set up the world Time it takes to develop Developer needing to be a tester too