SlideShare a Scribd company logo
Behaviour Driven Development
with Drupal
Bridging the gap between business and technology
Marcin Pajdzik
Twitter: @Marcin_Pajdzik
Dublin, May 2015
How BDD works?
Write scenarios that describe behaviours
Execute the scenarios against your application.
▼
How BDD works?
Write each step of your scenario
in plain English.
Write each step definition in PHP.
▼
NHS - National Health Service
Project started in 2002.
Project terminated in 2010
Cost: €14 400 000 000
(billion)
NHS - National Health Service
€14.4bn would pay a salary of:
60000 nurses for 10 years in the UK
240000 nurses for 10 years in Poland.
NHS - National Health Service
Result: IT system was not FIT for the NHS
Why projects fail?
3. Unrealistic deadlines.
2. Insufficient resource planning.
1. Poor communication.
Source: Computing Technology Industry Association, 2007
Source: Project Management Institute, 2013
What is software development all about?
Delivering BUSINESS VALUE
How do we find out WHAT REALLY MATTERS to
the business?
Through effective communication!
What is the problem with communication?
Two people =
misunderstandings
Technical and Business = different language
Typical large project = large team, working in
a fast-evolving digital domain that no one fully
understands
The main idea behind BDD
Preventing communication gaps
What is BDD?
● Agile methodology based on Test Driven Development
● promotes communication, conversation and close collaboration
between everybody in the team
● focuses on writing specification of the system behaviour
Benefits of BDD
3. Business and behaviour first - prioritisation
1. Collaboration / Communication - same language for all
2. Quality – functional / integration / regression tests
4. Documentation
BDD stories
Title (one line describing the story)
Narrative:
As a [role]
I want [feature]
So that [benefit]
Acceptance Criteria: (presented as Scenarios)
Scenario 1: Title
Given [context]
When [event]
Then [outcome]
Scenario 2: ...
BDD stories
As a user
I want to login
So that I can access my account
As a [X]
I want [Y]
so that [Z]
Scenarios
Given some initial context
When an event occurs,
Then ensure some outcomes.
Given I am on the login page
When I login as “jsmith” with password “secret”
Then I should see my account page
Scenarios
●It’s a specification that everybody understands
●It’s a documentation that everybody can refer to
●It’s an automated test that can be run any time
BDD solves TDD shortcomings
Developers want to know:
● where to start
● what to test and what not to test
● how much to test in one go
● what to call their tests
● how to understand why a test fails
Declarative Scenario vs Imperative Scenario
Given I am on the login page
When I login as “john” with password “secret”
Then I should see my account page
When I go to "user/login"
And I enter "john" into the field "username"
And I enter "secret" into the field "password"
And I click on the button "login"
Drawbacks
Increases the cost of maintenance
Before doing BDD make sure that there is
enough return on investment to justify it.
BDD with Drupal
Behat - allows you to write tests in a human-readable language
called Gherkin and parses it into executable test-cases
Mink - web acceptance tests, provides MinkContext with step
definitions for interactions with a browser
Drupal Extension - provides Drupal specific functionality
Drupal Extension Drivers
Blackbox Driver
Drupal API Driver
Drush Driver
System Requirements
PHP 5.3.5 or higher with curl, mbstring and xml
Java required for Selenium
Installation
{
"require": {
"behat/behat": "2.4.*@stable"
},
"minimum-stability": "dev",
"config": {
"bin-dir": "bin/"
}
}
$ curl http://getcomposer.org/installer | php
$ php composer.phar install
$ bin/behat
$ mkdir ls_project
$ cd ls_project
$ behat --init
Installation
default:
paths:
features: 'features'
extensions:
BehatMinkExtensionExtension:
goutte: ~
selenium2: ~
base_url: http://seven.l
DrupalDrupalExtensionExtension:
blackbox: ~
Make your
FeatureContext.php
aware of both the
Drupal Extension and
the Mink Extension
How to make the scenarios available
to everybody?
Behat Jira Extension
Behat Jira Extension
{code:none}Feature: Jira integration
In order to facilitate the authoring of Behat features by non-developers
As a developer
I want to write an extension to load features from Jira issues.
Scenario: Load Me!
Given I am a Jira issue
And I contain a Behat feature
When I am loaded by JiraExtension
Then I should parsed by Gherkin
{code}
Behat Jira Extension
bin/behat jira:BDD-1
bin/behat http://jira.example.com:8080/browse/BDD-1
BDD in business
“After the decision to move our websites onto
Drupal, adopting Behavior Driven Development
has been one of the best decisions we’ve made
for our organization in years.”
Paul Lomax - CTO, Dennis Publishing
References
Dan North & Associates - http://dannorth.net/
Mink - http://mink.behat.org/
Behat - http://behat.org/
DSpeak - http://dspeak.com/drupalextension/intro.html
Marcin Pajdzik
LinkedIn: uk.linkedin.com/in/marcinpajdzik/
Twitter: @Marcin_Pajdzik
Owner / Consultant @ Codewriters Ltd
Thank You

More Related Content

What's hot

Php melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddyPhp melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddy
Douglas Reith
 
Web Design & Development - Session 7
Web Design & Development - Session 7Web Design & Development - Session 7
Web Design & Development - Session 7
Shahrzad Peyman
 
Detangling Your JavaScript
Detangling Your JavaScriptDetangling Your JavaScript
Detangling Your JavaScript
Chris Powers
 
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
Pankaj Nakhat
 
Bdd agile requirements
Bdd agile requirementsBdd agile requirements
Bdd agile requirements
Agile Vietnam
 
What's DSL and what isn't
What's DSL and what isn'tWhat's DSL and what isn't
What's DSL and what isn't
Leandro Parazito
 

What's hot (6)

Php melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddyPhp melb cqrs-ddd-predaddy
Php melb cqrs-ddd-predaddy
 
Web Design & Development - Session 7
Web Design & Development - Session 7Web Design & Development - Session 7
Web Design & Development - Session 7
 
Detangling Your JavaScript
Detangling Your JavaScriptDetangling Your JavaScript
Detangling Your JavaScript
 
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
 
Bdd agile requirements
Bdd agile requirementsBdd agile requirements
Bdd agile requirements
 
What's DSL and what isn't
What's DSL and what isn'tWhat's DSL and what isn't
What's DSL and what isn't
 

Similar to Bridging the gap between business and technology - Behaviour Driven Development with Drupal - Dublin, Ireland, May 2015

Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1
willmation
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
Nicolò Pignatelli
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
Ivo Jansch
 
So What Do Cucumbers Have To Do With Testing
So What Do Cucumbers Have To Do With TestingSo What Do Cucumbers Have To Do With Testing
So What Do Cucumbers Have To Do With Testing
sjmarsh
 
DC
DCDC
Topic tdd-and-bdd b4usolution
Topic tdd-and-bdd b4usolutionTopic tdd-and-bdd b4usolution
Topic tdd-and-bdd b4usolution
Hoa Le
 
Moving away from legacy code with BDD
Moving away from legacy code with BDDMoving away from legacy code with BDD
Moving away from legacy code with BDD
Konstantin Kudryashov
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
Positive Hack Days
 
ChetanResume
ChetanResumeChetanResume
ChetanResume
chetan sharma
 
Strategies for Context Data Persistence
Strategies for Context Data PersistenceStrategies for Context Data Persistence
Strategies for Context Data Persistence
FIWARE
 
Open event presentation.3 2
Open event presentation.3 2Open event presentation.3 2
Open event presentation.3 2
Jorge López-Lago
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
Vlad Fedosov
 
CV_AmalMandal
CV_AmalMandalCV_AmalMandal
My cv bangla
My cv banglaMy cv bangla
My cv bangla
rajibhossain65
 
Noman Khan Internship Report 2.pptx
Noman Khan Internship Report 2.pptxNoman Khan Internship Report 2.pptx
Noman Khan Internship Report 2.pptx
NomanKhan869872
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
Nalin Goonawardana
 
Yatin kalaria
Yatin kalariaYatin kalaria
Yatin kalaria
Yatin Kalaria
 
Drupal 7 ci and testing
Drupal 7 ci and testingDrupal 7 ci and testing
Drupal 7 ci and testing
Claudio Beatrice
 
PhpStorm: Symfony2 Plugin
PhpStorm: Symfony2 PluginPhpStorm: Symfony2 Plugin
PhpStorm: Symfony2 Plugin
Haehnchen
 
IT for HR professionals
IT for HR professionalsIT for HR professionals
IT for HR professionals
Miguel Pinto
 

Similar to Bridging the gap between business and technology - Behaviour Driven Development with Drupal - Dublin, Ireland, May 2015 (20)

Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1Behaviour Driven Development V 0.1
Behaviour Driven Development V 0.1
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
So What Do Cucumbers Have To Do With Testing
So What Do Cucumbers Have To Do With TestingSo What Do Cucumbers Have To Do With Testing
So What Do Cucumbers Have To Do With Testing
 
DC
DCDC
DC
 
Topic tdd-and-bdd b4usolution
Topic tdd-and-bdd b4usolutionTopic tdd-and-bdd b4usolution
Topic tdd-and-bdd b4usolution
 
Moving away from legacy code with BDD
Moving away from legacy code with BDDMoving away from legacy code with BDD
Moving away from legacy code with BDD
 
Manish Chasta - Securing Android Applications
Manish Chasta - Securing Android ApplicationsManish Chasta - Securing Android Applications
Manish Chasta - Securing Android Applications
 
ChetanResume
ChetanResumeChetanResume
ChetanResume
 
Strategies for Context Data Persistence
Strategies for Context Data PersistenceStrategies for Context Data Persistence
Strategies for Context Data Persistence
 
Open event presentation.3 2
Open event presentation.3 2Open event presentation.3 2
Open event presentation.3 2
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
CV_AmalMandal
CV_AmalMandalCV_AmalMandal
CV_AmalMandal
 
My cv bangla
My cv banglaMy cv bangla
My cv bangla
 
Noman Khan Internship Report 2.pptx
Noman Khan Internship Report 2.pptxNoman Khan Internship Report 2.pptx
Noman Khan Internship Report 2.pptx
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Yatin kalaria
Yatin kalariaYatin kalaria
Yatin kalaria
 
Drupal 7 ci and testing
Drupal 7 ci and testingDrupal 7 ci and testing
Drupal 7 ci and testing
 
PhpStorm: Symfony2 Plugin
PhpStorm: Symfony2 PluginPhpStorm: Symfony2 Plugin
PhpStorm: Symfony2 Plugin
 
IT for HR professionals
IT for HR professionalsIT for HR professionals
IT for HR professionals
 

Recently uploaded

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
“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
 
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
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
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
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
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
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
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
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
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
 

Recently uploaded (20)

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
“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”
 
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
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
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...
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
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
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
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
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
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
 

Bridging the gap between business and technology - Behaviour Driven Development with Drupal - Dublin, Ireland, May 2015

  • 1. Behaviour Driven Development with Drupal Bridging the gap between business and technology Marcin Pajdzik Twitter: @Marcin_Pajdzik Dublin, May 2015
  • 2. How BDD works? Write scenarios that describe behaviours Execute the scenarios against your application. ▼
  • 3. How BDD works? Write each step of your scenario in plain English. Write each step definition in PHP. ▼
  • 4. NHS - National Health Service Project started in 2002. Project terminated in 2010 Cost: €14 400 000 000 (billion)
  • 5. NHS - National Health Service €14.4bn would pay a salary of: 60000 nurses for 10 years in the UK 240000 nurses for 10 years in Poland.
  • 6. NHS - National Health Service Result: IT system was not FIT for the NHS
  • 7. Why projects fail? 3. Unrealistic deadlines. 2. Insufficient resource planning. 1. Poor communication. Source: Computing Technology Industry Association, 2007
  • 8. Source: Project Management Institute, 2013
  • 9. What is software development all about? Delivering BUSINESS VALUE How do we find out WHAT REALLY MATTERS to the business? Through effective communication!
  • 10. What is the problem with communication? Two people = misunderstandings Technical and Business = different language Typical large project = large team, working in a fast-evolving digital domain that no one fully understands
  • 11. The main idea behind BDD Preventing communication gaps
  • 12. What is BDD? ● Agile methodology based on Test Driven Development ● promotes communication, conversation and close collaboration between everybody in the team ● focuses on writing specification of the system behaviour
  • 13. Benefits of BDD 3. Business and behaviour first - prioritisation 1. Collaboration / Communication - same language for all 2. Quality – functional / integration / regression tests 4. Documentation
  • 14. BDD stories Title (one line describing the story) Narrative: As a [role] I want [feature] So that [benefit] Acceptance Criteria: (presented as Scenarios) Scenario 1: Title Given [context] When [event] Then [outcome] Scenario 2: ...
  • 15. BDD stories As a user I want to login So that I can access my account As a [X] I want [Y] so that [Z]
  • 16. Scenarios Given some initial context When an event occurs, Then ensure some outcomes. Given I am on the login page When I login as “jsmith” with password “secret” Then I should see my account page
  • 17. Scenarios ●It’s a specification that everybody understands ●It’s a documentation that everybody can refer to ●It’s an automated test that can be run any time
  • 18. BDD solves TDD shortcomings Developers want to know: ● where to start ● what to test and what not to test ● how much to test in one go ● what to call their tests ● how to understand why a test fails
  • 19. Declarative Scenario vs Imperative Scenario Given I am on the login page When I login as “john” with password “secret” Then I should see my account page When I go to "user/login" And I enter "john" into the field "username" And I enter "secret" into the field "password" And I click on the button "login"
  • 20. Drawbacks Increases the cost of maintenance Before doing BDD make sure that there is enough return on investment to justify it.
  • 21. BDD with Drupal Behat - allows you to write tests in a human-readable language called Gherkin and parses it into executable test-cases Mink - web acceptance tests, provides MinkContext with step definitions for interactions with a browser Drupal Extension - provides Drupal specific functionality
  • 22. Drupal Extension Drivers Blackbox Driver Drupal API Driver Drush Driver
  • 23. System Requirements PHP 5.3.5 or higher with curl, mbstring and xml Java required for Selenium
  • 24. Installation { "require": { "behat/behat": "2.4.*@stable" }, "minimum-stability": "dev", "config": { "bin-dir": "bin/" } } $ curl http://getcomposer.org/installer | php $ php composer.phar install $ bin/behat $ mkdir ls_project $ cd ls_project $ behat --init
  • 25. Installation default: paths: features: 'features' extensions: BehatMinkExtensionExtension: goutte: ~ selenium2: ~ base_url: http://seven.l DrupalDrupalExtensionExtension: blackbox: ~ Make your FeatureContext.php aware of both the Drupal Extension and the Mink Extension
  • 26. How to make the scenarios available to everybody? Behat Jira Extension
  • 27. Behat Jira Extension {code:none}Feature: Jira integration In order to facilitate the authoring of Behat features by non-developers As a developer I want to write an extension to load features from Jira issues. Scenario: Load Me! Given I am a Jira issue And I contain a Behat feature When I am loaded by JiraExtension Then I should parsed by Gherkin {code}
  • 28. Behat Jira Extension bin/behat jira:BDD-1 bin/behat http://jira.example.com:8080/browse/BDD-1
  • 29. BDD in business “After the decision to move our websites onto Drupal, adopting Behavior Driven Development has been one of the best decisions we’ve made for our organization in years.” Paul Lomax - CTO, Dennis Publishing
  • 30. References Dan North & Associates - http://dannorth.net/ Mink - http://mink.behat.org/ Behat - http://behat.org/ DSpeak - http://dspeak.com/drupalextension/intro.html
  • 31. Marcin Pajdzik LinkedIn: uk.linkedin.com/in/marcinpajdzik/ Twitter: @Marcin_Pajdzik Owner / Consultant @ Codewriters Ltd Thank You