Top Banner
© Ibuildings 2014/2015 - All rights reserved #DrupalDaysEU Bridging the gap between business and technology Behavior Driven Developement with Drupal by Marcin Pajdzik
36

Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

Jul 16, 2015

Download

Internet

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

© Ibuildings 2014/2015 - All rights reserved

#DrupalDaysEU

Bridging the gap between business and technology

Behavior Driven Developement with Drupalby Marcin Pajdzik

Page 2: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Gold Sponsors

Page 3: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Media Sponsors

Silver Sponsors

Page 4: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

© Ibuildings 2014/2015 - All rights reserved

#DrupalDaysEU

Bridging the gap between business and technology

Behavior Driven Developemnt with Drupal

Page 5: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

How BDD works?

Write scenarios that describe behaviours

Execute the scenarios against your application

Page 6: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

How BDD works?

Write each step of your scenario in plain English

Write each step definition in PHP

Page 7: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

NHS - National Health Service

Project started in 2002

Project terminated in 2010

Cost: €14 400 000 000 (billion)

Page 8: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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

Page 9: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

NHS - National Health Service

Result:

IT system was not FIT for the NHS

Page 10: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Why projects fail?

3. Unrealistic deadlines.

2. Insufficient resource planning.

1. Poor communication.

Source: Computing Technology Industry Association, 2007

Page 11: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Source: Project Management Institute, 2013

Page 12: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Software development is about delivering BUSINESS VALUE

Business value is WHAT REALLY MATTERS to the business

We find out WHAT REALLY MATTERS to the business...

… through effective communication!

Page 13: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Why communication is difficult?

Two people - misunderstandings

Technical and Business people - different type of language

Typical large IT project - large team, working in a fast-evolving digital domain that no one fully understands

Page 14: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

The main idea behind BDD

Preventing communication gaps

Page 15: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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

Page 16: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Benefits of BDD

3. Business and behaviour first - prioritisation

1. Collaboration / Communication - same language for all

2. Quality – functional / integration / regression tests

4. Documentation

Page 17: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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: TitleGiven [context]When [event]Then [outcome] Scenario 2: ...

Page 18: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

BDD stories

As a userI want to loginSo that I can access my account

As a [X]I want [Y]so that [Z]

Page 19: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Scenarios

Given some initial contextWhen an event occurs,Then ensure some outcomes.

Given I am on the login pageWhen I login as “jsmith” with password “secret”Then I should see my account page

Page 20: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Scenarios

● It is a specification that everybody understands

● It is a documentation that everybody can refer to

● It is an automated test that can be run any time

Page 21: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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

Page 22: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Declarative Scenario vs Imperative Scenario

Given I am on the login pageWhen 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"

Page 23: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Drawbacks

Increases the cost of maintenance

Before doing BDD make sure that there is enough return on investment to justify it.

Page 24: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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

Page 25: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Drupal Extension Drivers

Blackbox Driver

Drupal API Driver

Drush Driver

Page 26: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Drupal Extension Drivers

Blackbox Driver

Drupal API Driver

Drush Driver

Page 27: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

System Requirements

PHP 5.3.5 or higher with curl, mbstring and xmlJava required for Selenium

Page 28: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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

Page 29: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Installation

default: paths: features: 'features' extensions: Behat\MinkExtension\Extension: goutte: ~ selenium2: ~ base_url: http://seven.l Drupal\DrupalExtension\Extension: blackbox: ~

Make your FeatureContext.php aware of both the Drupal Extension and the Mink Extension

Page 30: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

How to make the scenarios available to everybody?

Behat Jira Extension

Page 31: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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}

Page 32: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

Behat Jira Extension

bin/behat jira:BDD-1

bin/behat http://jira.example.com:8080/browse/BDD-1

Page 33: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

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

Page 34: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

#DrupalDaysEU

© Ibuildings 2014/2015 - All rights reserved

References

Dan North & Associates - http://dannorth.net/

Mink - http://mink.behat.org/

Behat - http://behat.org/

DSpeak - http://dspeak.com/drupalextension/intro.html

Page 35: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

© Ibuildings 2014/2015 - All rights reserved

Speaker InfoMarcin PajdzikWeb Technology Consultant

[email protected]_pajdzik

Page 36: Bridging the gap between business and technology - Behaviour Driven Development with Drupal (European Drupal days 2015)

© Ibuildings 2014/2015 - All rights reserved

Bridging the gap between business and technologyBehaviour Driven Developement with Drupal