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

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

  • 1.
    Behaviour Driven Development withDrupal Bridging the gap between business and technology Marcin Pajdzik Twitter: @Marcin_Pajdzik Dublin, May 2015
  • 2.
    How BDD works? Writescenarios that describe behaviours Execute the scenarios against your application. ▼
  • 3.
    How BDD works? Writeeach step of your scenario in plain English. Write each step definition in PHP. ▼
  • 4.
    NHS - NationalHealth Service Project started in 2002. Project terminated in 2010 Cost: €14 400 000 000 (billion)
  • 5.
    NHS - NationalHealth 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 - NationalHealth 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.
  • 9.
    What is softwaredevelopment all about? Delivering BUSINESS VALUE How do we find out WHAT REALLY MATTERS to the business? Through effective communication!
  • 10.
    What is theproblem 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 ideabehind 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 (oneline 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 auser I want to login So that I can access my account As a [X] I want [Y] so that [Z]
  • 16.
    Scenarios Given some initialcontext 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 specificationthat 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 TDDshortcomings 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 vsImperative 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 costof 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 BlackboxDriver Drupal API Driver Drush Driver
  • 23.
    System Requirements PHP 5.3.5or 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 makethe 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/behatjira:BDD-1 bin/behat http://jira.example.com:8080/browse/BDD-1
  • 29.
    BDD in business “Afterthe 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