devsmeetup freiburg: behavior driven development with behat/mink

28
BDD - Behavior Driven Development with Behat/Mink Developers MeetUp Freiburg 06/2013 Developers MeetUp Freiburg

Upload: steffen-mueller

Post on 08-May-2015

1.368 views

Category:

Technology


1 download

DESCRIPTION

Slides of my Introduction to Behavior Driven Development with Behat/Mink at DevsMeetUp Freiburg 06/2013

TRANSCRIPT

Page 1: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

BDD - Behavior Driven Development

with Behat/Mink

Developers MeetUp Freiburg 06/2013

Developers MeetUp Freiburg

Page 2: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Steffen Müller

/gebrüderheitz GmbHPHP Software Architect + Developer

@t3node // www.t3node.com

Page 3: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Case Study

Page 4: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

“Simple” order form

Page 5: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Related functional tests (Selenium)

Page 6: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

How the complexity felt like

Image by Kyle Lease CC BY-SA 2.0 http://www.flickr.com/photos/kl75214/

Page 7: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Focus on requirements

instead of high coverage

Page 8: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Behavior Driven

Development

Page 9: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Behavior What?

Page 10: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Analyze

Concept

Test

Coding

Linear progress

Sketch inspired by J. B. Rainsberger:http://www.jbrains.ca/permalink/how-test-driven-development-works-and-more

Page 11: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Analyze Concept

Test Coding

Continuous Iteration

Shortcycles

Sketch inspired by J. B. Rainsberger:http://www.jbrains.ca/permalink/how-test-driven-development-works-and-more

Page 12: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

BDD

Building the

right things

TDD

Building the

things right

TDD or BDD?

Page 13: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Communication

Images by Alberto Sanchis (MisteryCat)http://misterycat.deviantart.com/

Stakeholder

Developer

Page 14: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Ubiquitous Language

User

Customer

Unregistereduser

New customer

Images by Alberto Sanchis (MisteryCat)http://misterycat.deviantart.com/

Page 15: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Feature Description

Page 16: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

“As a [role]

I want [feature]

so that [benefit]”

Feature Description

Page 17: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

“As a [role]

I want [feature]

so that [benefit]”User Story

Feature Description

Page 18: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

“As a customer

I need a shopping cart

to check my selected products”

Example Feature Description

Page 19: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Scenarios / Use cases

Page 20: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Scenario: [Use Case]

Given... [Context]

When... [Event]

Then... [Result]

Scenario

Page 21: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Scenario: See selected products in the

shopping cart

Given I visit the FooBar shop

And I add a “dishwasher” to my cart

When I go to the shopping cart

Then I should see a “dishwasher”

Example Scenario

Page 22: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Scenario: Find a product in the shopping basket

Given I visit the FooBar shop

And I select a “dishwasher”

When I go to the shopping basket

Then I should see a “dishwasher”gherkinExample Scenario

Page 23: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

gherkin

Clearly structured language

Easy to understand

Easy to rephrase

Straightforward syntax

Executable steps

Developers MeetUp Freiburg

Page 24: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

BehatA php framework for testingbusiness expectations

Page 25: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

MinkAcceptance test frameworkfor web applications, written in PHP

BehatA php framework for testingbusiness expectations

Page 26: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Live Demo

Page 27: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Resources

BDD Introduction:http://dannorth.net/introducing-bdd/

Behat/Mink:http://behat.org/

bInit: kickstarter package for Behat:https://github.com/t3node/binit

Wynne + Hellesøy (2012):“The Cucumber Book”

Developers MeetUp Freiburg

Page 28: DevsMeetUp Freiburg: Behavior Driven Development with Behat/Mink

Developers MeetUp Freiburg

Thank You!

If you need BDD + Behat/Mink support, send me a mail:

Steffen Müller <[email protected]>