SlideShare a Scribd company logo
A L I N P A N D I C H I -
BEHAVIOR DRIVEN
DEVELOPMENT
A RECAP
SOFTWARE DEVELOPER, TRAINER AND
COACH @ MOZAICWORKS
BDD HAS GOT A BIT
CONFLATED WITH
ACCEPTANCE TESTING IN
THE PHP COMMUNITY
BECAUSE OF TOOLS LIKE
BEHAT AND
CODECEPTION.
A R E D D I T U S E R
BDD IS MORE
ABOUT WORKFLOW
AND MINDSET
RATHER THAN
TOOLING.
A N O T H E R R E D D I T U S E R
OVER TIME, BDD HAS
GROWN TO ENCOMPASS
THE WIDER PICTURE OF
AGILE ANALYSIS AND
AUTOMATED
ACCEPTANCE TESTING.
D A N N O R T H
WE MUST GO
BACK TO TDD
T O U N D E R S T A N D B D D . . .
HTTP://BLOG.THEFIREHOSEPROJECT.COM/POSTS/TEST-DRIVEN-DEVELOPMENT-RSPEC-VS-TEST-UNIT/
TYPICAL DEV PROBLEMS IN TDD:
- W H E R E T O S T A R T
- W H A T T O T E S T
- W H A T N O T T O T E S T
- H O W M U C H T O T E S T
- W H A T T O C A L L T H E I R T E S T S
- H O W T O U N D E R S T A N D W H Y
A T E S T F A I L S
S T E P S T O W A R D S B D D
TEST METHOD NAMES SHOULD BE SENTENCES
01
S T E P S T O W A R D S B D D
TEST METHOD NAMES SHOULD BE SENTENCES
01
public class CustomerLookupTest extends TestCase {
   testFindsCustomerById() {
   }
   testFailsForDuplicateCustomers() {
   }
}
S T E P S T O W A R D S B D D
THE CONVENTION OF STARTING TEST METHOD NAMES
WITH THE WORD “SHOULD”
02
S T E P S T O W A R D S B D D
REMOVED ANY REFERENCE TO TESTING AND REPLACED
IT WITH A VOCABULARY BUILT AROUND VERIFYING
BEHAVIOUR
03
S T E P S T O W A R D S B D D
03
public class CustomerLookupTest extends TestCase {
   testFindsCustomerById() {
   }
   testFailsForDuplicateCustomers() {
   }
}
CustomerLookup
- should find customer by id
- should fail for duplicate customers
- ...
S T E P S T O W A R D S B D D
DISCOVERED THE CONCEPT OF BUSINESS VALUE
04
I HAD ALWAYS BEEN AWARE
THAT I WROTE SOFTWARE FOR
A REASON,
BUT I HAD NEVER REALLY
THOUGHT ABOUT THE VALUE
OF THE CODE I WAS WRITING
RIGHT NOW.
D A N N O R T H
S T E P S T O W A R D S B D D
WHAT’S THE NEXT MOST IMPORTANT THING
THE SYSTEM DOESN’T DO?
05
BUT THAT’S JUST LIKE
ANALYSIS.
Y O U , R I G H T N O W
S T E P S T O W A R D S B D D
APPLY ALL OF THIS BEHAVIOUR-DRIVEN THINKING
TO DEFINING REQUIREMENTS
S T E P S T O W A R D S B D D
DEVELOP A CONSISTENT VOCABULARY FOR ANALYSTS,
TESTERS, DEVELOPERS, AND THE BUSINESS ...
S T E P S T O W A R D S B D D
...ELIMINATING SOME OF THE AMBIGUITY AND
MISCOMMUNICATION THAT OCCUR WHEN TECHNICAL
PEOPLE TALK TO BUSINESS PEOPLE.
A S T A R T I N G P O I N T .
USER STORY TEMPLATES
As a [X]
I want [Y]
so that [Z]
A S T A R T I N G P O I N T .
USER STORY TEMPLATES
As a [X]
I want [Y]
so that [Z]
I want [some feature]
So that... [I just do, ok?]
A S T A R T I N G P O I N T .
USER STORY TEMPLATES
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
IT SAYS NOTHING ABOUT THE BE BEHAVIOUR OF
THE ELEVATOR
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
A STORY’S BEHAVIOUR IS SIMPLY ITS
ACCEPTANCE CRITERIA
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
DESCRIBE THE ACCEPTANCE CRITERIA IN TERMS
OF SCENARIOS
As an Endava employee
I want to ride an elevator to my
office
So that I don't sweat climbing 10
floors using the stairs.
DESCRIBE THE ACCEPTANCE CRITERIA IN TERMS
OF SCENARIOS
Given some initial context,
When an event occurs,
then ensure some outcomes.
ACCEPTANCE CRITERIA IN TERMS OF SCENARIOS
Scenario:
Given I am on the 0 floor
And the elevator is on the 0 floor
And a call for 3 floor is registered
And a call for -1 floor is registered
When I call elevator
And the elevator operates
Then the elevator opens door on -1 level
Then the elevator opens door on 0 level
Then the elevator opens door on 3 level
F I N A L L Y . . .
ACCEPTANCE CRITERIA COULD BE EXECUTABLE
THE VISION IS TO HAVE A
ROUND-TRIP EDITOR SO THAT
BA`S AND TESTERS CAN
CAPTURE STORIES IN A
REGULAR TEXT EDITOR THAT
CAN GENERATE STUBS FOR
THE BEHAVIOUR CLASSES, ALL
IN THE LANGUAGE OF THE
BUSINESS DOMAIN.
D A N N O R T H
BDD PRACTITIONERS
EXPLORE, DISCOVER, DEFINE,
THEN DRIVE OUT THE DESIRED
BEHAVIOUR OF SOFTWARE
USING CONVERSATIONS,
CONCRETE EXAMPLES AND
AUTOMATED TESTS.
M A T T W Y N N E
HTTPS://TWITTER.COM/ANTONYMARCANO/STATUS/894822480141066240
A GROUP OF PEOPLE
SPECIFYING HOW
SOFTWARE SHOULD
BEHAVE BEFORE
IMPLEMENTING IT.
D A N N O R T H
N O T T H I S !
HTTPS://TWITTER.COM/SEBROSE/STATUS/913080462444253184
C E R T A I N L Y N O T T H I S !
HTTP://LABS.IG.COM/CODE-COVERAGE-100-PERCENT-TRAGEDY
R E A D M O R E :
HTTPS://DANNORTH.NET/INTRODUCING-BDD/
HTTP://LABS.IG.COM/CODE-COVERAGE-100-
PERCENT-TRAGEDY
HTTPS://WWW.YOUTUBE.COM
/WATCH?V=L95DSKM5FBY
HTTPS://GITHUB.COM/MSEKNIBILEL/ELEVATOR-
BDD-KATA
T H A N K
Y O U !
A L I N P A N D I C H I
@ALINPANDICHI
ALIN.PANDICHI@MOZAICWORKS.COM

More Related Content

Similar to Behavior driven development - a recap (@ Symfony Bucharest Meetup)

Inception Phases - Handling Complexity
Inception Phases - Handling ComplexityInception Phases - Handling Complexity
Inception Phases - Handling Complexity
Equal Experts
 
Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber Implementation
TechWell
 
Expo qa from user stories to automated acceptance tests with bdd
Expo qa   from user stories to automated acceptance tests with bddExpo qa   from user stories to automated acceptance tests with bdd
Expo qa from user stories to automated acceptance tests with bdd
Eduardo Riol
 
Metwally - BIM Portfolio
Metwally - BIM PortfolioMetwally - BIM Portfolio
Metwally - BIM Portfolio
Mohammed Salah
 
Metwally - BIM ShowroomV1.0
Metwally - BIM ShowroomV1.0Metwally - BIM ShowroomV1.0
Metwally - BIM ShowroomV1.0
Mohammed Salah
 
Keynote - AWS Summit Milano 2018
Keynote - AWS Summit Milano 2018Keynote - AWS Summit Milano 2018
Keynote - AWS Summit Milano 2018
Amazon Web Services
 
Metwally - BIM Showroom
Metwally - BIM ShowroomMetwally - BIM Showroom
Metwally - BIM Showroom
Mohammed Salah
 
Metwally - BIM ShowroomV1.1
Metwally - BIM ShowroomV1.1Metwally - BIM ShowroomV1.1
Metwally - BIM ShowroomV1.1
Mohammed Salah
 
Enabling New Voice Experiences with Amazon Alexa and AWS Lambda
Enabling New Voice Experiences with Amazon Alexa and AWS LambdaEnabling New Voice Experiences with Amazon Alexa and AWS Lambda
Enabling New Voice Experiences with Amazon Alexa and AWS Lambda
Amazon Web Services
 
How to focus - design your new app in 60 minutes!
How to focus - design your new app in 60 minutes!How to focus - design your new app in 60 minutes!
How to focus - design your new app in 60 minutes!
Zach Pousman
 
Chris Girolamo It's the Product not the Project 19 Mar 14
Chris Girolamo It's the Product not the Project 19 Mar 14Chris Girolamo It's the Product not the Project 19 Mar 14
Chris Girolamo It's the Product not the Project 19 Mar 14
LianaEliz222
 
Beyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through RequirementsBeyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through Requirements
Gail Murphy
 
DevOps Is Not What You Have Been Told It Is
DevOps Is Not What You Have Been Told It IsDevOps Is Not What You Have Been Told It Is
DevOps Is Not What You Have Been Told It Is
Christian Melendez
 
UX? No thanks it just costs more money
UX? No thanks it just costs more moneyUX? No thanks it just costs more money
UX? No thanks it just costs more money
IIBA UK Chapter
 
Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?
cornelia davis
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
VictorSzoltysek
 
UX for startups
UX for startupsUX for startups
UX for startups
Noemie PRIN
 
Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1
willmation
 
C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2
Hammad Rajjoub
 
C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2
Hammad Rajjoub
 

Similar to Behavior driven development - a recap (@ Symfony Bucharest Meetup) (20)

Inception Phases - Handling Complexity
Inception Phases - Handling ComplexityInception Phases - Handling Complexity
Inception Phases - Handling Complexity
 
Specification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber ImplementationSpecification-by-Example: A Cucumber Implementation
Specification-by-Example: A Cucumber Implementation
 
Expo qa from user stories to automated acceptance tests with bdd
Expo qa   from user stories to automated acceptance tests with bddExpo qa   from user stories to automated acceptance tests with bdd
Expo qa from user stories to automated acceptance tests with bdd
 
Metwally - BIM Portfolio
Metwally - BIM PortfolioMetwally - BIM Portfolio
Metwally - BIM Portfolio
 
Metwally - BIM ShowroomV1.0
Metwally - BIM ShowroomV1.0Metwally - BIM ShowroomV1.0
Metwally - BIM ShowroomV1.0
 
Keynote - AWS Summit Milano 2018
Keynote - AWS Summit Milano 2018Keynote - AWS Summit Milano 2018
Keynote - AWS Summit Milano 2018
 
Metwally - BIM Showroom
Metwally - BIM ShowroomMetwally - BIM Showroom
Metwally - BIM Showroom
 
Metwally - BIM ShowroomV1.1
Metwally - BIM ShowroomV1.1Metwally - BIM ShowroomV1.1
Metwally - BIM ShowroomV1.1
 
Enabling New Voice Experiences with Amazon Alexa and AWS Lambda
Enabling New Voice Experiences with Amazon Alexa and AWS LambdaEnabling New Voice Experiences with Amazon Alexa and AWS Lambda
Enabling New Voice Experiences with Amazon Alexa and AWS Lambda
 
How to focus - design your new app in 60 minutes!
How to focus - design your new app in 60 minutes!How to focus - design your new app in 60 minutes!
How to focus - design your new app in 60 minutes!
 
Chris Girolamo It's the Product not the Project 19 Mar 14
Chris Girolamo It's the Product not the Project 19 Mar 14Chris Girolamo It's the Product not the Project 19 Mar 14
Chris Girolamo It's the Product not the Project 19 Mar 14
 
Beyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through RequirementsBeyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through Requirements
 
DevOps Is Not What You Have Been Told It Is
DevOps Is Not What You Have Been Told It IsDevOps Is Not What You Have Been Told It Is
DevOps Is Not What You Have Been Told It Is
 
UX? No thanks it just costs more money
UX? No thanks it just costs more moneyUX? No thanks it just costs more money
UX? No thanks it just costs more money
 
Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?Velocity NY 2016 - Devops: Who Does What?
Velocity NY 2016 - Devops: Who Does What?
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
UX for startups
UX for startupsUX for startups
UX for startups
 
Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1
 
C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2
 
C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2C:\Fakepath\Combating Software Entropy 2
C:\Fakepath\Combating Software Entropy 2
 

More from Alin Pandichi

[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend code[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend code
Alin Pandichi
 
Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)
Alin Pandichi
 
Coding Dojo - The learning remote control
Coding Dojo - The learning remote controlCoding Dojo - The learning remote control
Coding Dojo - The learning remote control
Alin Pandichi
 
The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator] The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator]
Alin Pandichi
 
The sorry state of frontend code
The sorry state of frontend codeThe sorry state of frontend code
The sorry state of frontend code
Alin Pandichi
 
How to unit test your React/Redux app
How to unit test your React/Redux appHow to unit test your React/Redux app
How to unit test your React/Redux app
Alin Pandichi
 
Covariance and contravariance. Say what?! (Agile Talks #22)
Covariance and contravariance. Say what?! (Agile Talks #22)Covariance and contravariance. Say what?! (Agile Talks #22)
Covariance and contravariance. Say what?! (Agile Talks #22)
Alin Pandichi
 
Coding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDCoding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDD
Alin Pandichi
 
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Alin Pandichi
 
Coding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataCoding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis Kata
Alin Pandichi
 
Avatar.js
Avatar.jsAvatar.js
Avatar.js
Alin Pandichi
 
Software development - the java perspective
Software development - the java perspectiveSoftware development - the java perspective
Software development - the java perspective
Alin Pandichi
 
Java 8 - Lambdas and much more
Java 8 - Lambdas and much moreJava 8 - Lambdas and much more
Java 8 - Lambdas and much more
Alin Pandichi
 

More from Alin Pandichi (13)

[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend code[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend code
 
Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)
 
Coding Dojo - The learning remote control
Coding Dojo - The learning remote controlCoding Dojo - The learning remote control
Coding Dojo - The learning remote control
 
The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator] The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator]
 
The sorry state of frontend code
The sorry state of frontend codeThe sorry state of frontend code
The sorry state of frontend code
 
How to unit test your React/Redux app
How to unit test your React/Redux appHow to unit test your React/Redux app
How to unit test your React/Redux app
 
Covariance and contravariance. Say what?! (Agile Talks #22)
Covariance and contravariance. Say what?! (Agile Talks #22)Covariance and contravariance. Say what?! (Agile Talks #22)
Covariance and contravariance. Say what?! (Agile Talks #22)
 
Coding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDCoding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDD
 
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
 
Coding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataCoding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis Kata
 
Avatar.js
Avatar.jsAvatar.js
Avatar.js
 
Software development - the java perspective
Software development - the java perspectiveSoftware development - the java perspective
Software development - the java perspective
 
Java 8 - Lambdas and much more
Java 8 - Lambdas and much moreJava 8 - Lambdas and much more
Java 8 - Lambdas and much more
 

Recently uploaded

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 

Recently uploaded (20)

Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 

Behavior driven development - a recap (@ Symfony Bucharest Meetup)

  • 1. A L I N P A N D I C H I - BEHAVIOR DRIVEN DEVELOPMENT A RECAP SOFTWARE DEVELOPER, TRAINER AND COACH @ MOZAICWORKS
  • 2. BDD HAS GOT A BIT CONFLATED WITH ACCEPTANCE TESTING IN THE PHP COMMUNITY BECAUSE OF TOOLS LIKE BEHAT AND CODECEPTION. A R E D D I T U S E R
  • 3. BDD IS MORE ABOUT WORKFLOW AND MINDSET RATHER THAN TOOLING. A N O T H E R R E D D I T U S E R
  • 4. OVER TIME, BDD HAS GROWN TO ENCOMPASS THE WIDER PICTURE OF AGILE ANALYSIS AND AUTOMATED ACCEPTANCE TESTING. D A N N O R T H
  • 5. WE MUST GO BACK TO TDD T O U N D E R S T A N D B D D . . .
  • 7. TYPICAL DEV PROBLEMS IN TDD: - W H E R E T O S T A R T - W H A T T O T E S T - W H A T N O T T O T E S T - H O W M U C H T O T E S T - W H A T T O C A L L T H E I R T E S T S - H O W T O U N D E R S T A N D W H Y A T E S T F A I L S
  • 8. S T E P S T O W A R D S B D D TEST METHOD NAMES SHOULD BE SENTENCES 01
  • 9. S T E P S T O W A R D S B D D TEST METHOD NAMES SHOULD BE SENTENCES 01 public class CustomerLookupTest extends TestCase {    testFindsCustomerById() {    }    testFailsForDuplicateCustomers() {    } }
  • 10. S T E P S T O W A R D S B D D THE CONVENTION OF STARTING TEST METHOD NAMES WITH THE WORD “SHOULD” 02
  • 11. S T E P S T O W A R D S B D D REMOVED ANY REFERENCE TO TESTING AND REPLACED IT WITH A VOCABULARY BUILT AROUND VERIFYING BEHAVIOUR 03
  • 12. S T E P S T O W A R D S B D D 03 public class CustomerLookupTest extends TestCase {    testFindsCustomerById() {    }    testFailsForDuplicateCustomers() {    } } CustomerLookup - should find customer by id - should fail for duplicate customers - ...
  • 13. S T E P S T O W A R D S B D D DISCOVERED THE CONCEPT OF BUSINESS VALUE 04
  • 14. I HAD ALWAYS BEEN AWARE THAT I WROTE SOFTWARE FOR A REASON, BUT I HAD NEVER REALLY THOUGHT ABOUT THE VALUE OF THE CODE I WAS WRITING RIGHT NOW. D A N N O R T H
  • 15. S T E P S T O W A R D S B D D WHAT’S THE NEXT MOST IMPORTANT THING THE SYSTEM DOESN’T DO? 05
  • 16. BUT THAT’S JUST LIKE ANALYSIS. Y O U , R I G H T N O W
  • 17. S T E P S T O W A R D S B D D APPLY ALL OF THIS BEHAVIOUR-DRIVEN THINKING TO DEFINING REQUIREMENTS
  • 18. S T E P S T O W A R D S B D D DEVELOP A CONSISTENT VOCABULARY FOR ANALYSTS, TESTERS, DEVELOPERS, AND THE BUSINESS ...
  • 19. S T E P S T O W A R D S B D D ...ELIMINATING SOME OF THE AMBIGUITY AND MISCOMMUNICATION THAT OCCUR WHEN TECHNICAL PEOPLE TALK TO BUSINESS PEOPLE.
  • 20. A S T A R T I N G P O I N T . USER STORY TEMPLATES As a [X] I want [Y] so that [Z]
  • 21. A S T A R T I N G P O I N T . USER STORY TEMPLATES As a [X] I want [Y] so that [Z] I want [some feature] So that... [I just do, ok?]
  • 22. A S T A R T I N G P O I N T . USER STORY TEMPLATES As an Endava employee I want to ride an elevator to my office So that I don't sweat climbing 10 floors using the stairs.
  • 23. IT SAYS NOTHING ABOUT THE BE BEHAVIOUR OF THE ELEVATOR As an Endava employee I want to ride an elevator to my office So that I don't sweat climbing 10 floors using the stairs.
  • 24. A STORY’S BEHAVIOUR IS SIMPLY ITS ACCEPTANCE CRITERIA As an Endava employee I want to ride an elevator to my office So that I don't sweat climbing 10 floors using the stairs.
  • 25. DESCRIBE THE ACCEPTANCE CRITERIA IN TERMS OF SCENARIOS As an Endava employee I want to ride an elevator to my office So that I don't sweat climbing 10 floors using the stairs.
  • 26. DESCRIBE THE ACCEPTANCE CRITERIA IN TERMS OF SCENARIOS Given some initial context, When an event occurs, then ensure some outcomes.
  • 27. ACCEPTANCE CRITERIA IN TERMS OF SCENARIOS Scenario: Given I am on the 0 floor And the elevator is on the 0 floor And a call for 3 floor is registered And a call for -1 floor is registered When I call elevator And the elevator operates Then the elevator opens door on -1 level Then the elevator opens door on 0 level Then the elevator opens door on 3 level
  • 28. F I N A L L Y . . . ACCEPTANCE CRITERIA COULD BE EXECUTABLE
  • 29. THE VISION IS TO HAVE A ROUND-TRIP EDITOR SO THAT BA`S AND TESTERS CAN CAPTURE STORIES IN A REGULAR TEXT EDITOR THAT CAN GENERATE STUBS FOR THE BEHAVIOUR CLASSES, ALL IN THE LANGUAGE OF THE BUSINESS DOMAIN. D A N N O R T H
  • 30. BDD PRACTITIONERS EXPLORE, DISCOVER, DEFINE, THEN DRIVE OUT THE DESIRED BEHAVIOUR OF SOFTWARE USING CONVERSATIONS, CONCRETE EXAMPLES AND AUTOMATED TESTS. M A T T W Y N N E
  • 32. A GROUP OF PEOPLE SPECIFYING HOW SOFTWARE SHOULD BEHAVE BEFORE IMPLEMENTING IT. D A N N O R T H
  • 33. N O T T H I S ! HTTPS://TWITTER.COM/SEBROSE/STATUS/913080462444253184
  • 34. C E R T A I N L Y N O T T H I S ! HTTP://LABS.IG.COM/CODE-COVERAGE-100-PERCENT-TRAGEDY
  • 35. R E A D M O R E : HTTPS://DANNORTH.NET/INTRODUCING-BDD/ HTTP://LABS.IG.COM/CODE-COVERAGE-100- PERCENT-TRAGEDY HTTPS://WWW.YOUTUBE.COM /WATCH?V=L95DSKM5FBY HTTPS://GITHUB.COM/MSEKNIBILEL/ELEVATOR- BDD-KATA
  • 36. T H A N K Y O U ! A L I N P A N D I C H I @ALINPANDICHI ALIN.PANDICHI@MOZAICWORKS.COM