uszanowanko programowanko #4 - bdd vs behat

21
tekst BDD vs Behat Paweł Skotnicki

Upload: the-software-house

Post on 08-Aug-2015

764 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Uszanowanko Programowanko #4 - BDD vs Behat

tekst

BDD vs BehatPaweł Skotnicki

Page 2: Uszanowanko Programowanko #4 - BDD vs Behat

About me

PHP developer @ The Software House

PHPers Silesia co-organizer

BDD/DDD enthusiast

Page 3: Uszanowanko Programowanko #4 - BDD vs Behat

BDD

Behaviour Driven Development

Dan North, 2003

BDD is like TDD without world „test”

Page 4: Uszanowanko Programowanko #4 - BDD vs Behat

examples in ubiquitous language

using those examples as the basis of automated tests

BDD main parts

Page 5: Uszanowanko Programowanko #4 - BDD vs Behat

Scenarios

writing down is NOT most important part

conversation

Page 6: Uszanowanko Programowanko #4 - BDD vs Behat

Behat

an open source BDD framework for PHP

Gherkin language

Given, When, Then

Page 7: Uszanowanko Programowanko #4 - BDD vs Behat

Behat !== BDD

BDD = scenarios + automation

Behat = automation tool

Page 8: Uszanowanko Programowanko #4 - BDD vs Behat

Better scenarios?

Page 9: Uszanowanko Programowanko #4 - BDD vs Behat

Imperative vs Declarative

Imperative

reusable granular steps

binds to UI

Declarative

business language

Page 10: Uszanowanko Programowanko #4 - BDD vs Behat

Mink Extension example

Page 11: Uszanowanko Programowanko #4 - BDD vs Behat
Page 12: Uszanowanko Programowanko #4 - BDD vs Behat
Page 13: Uszanowanko Programowanko #4 - BDD vs Behat

ImperativeFeature: Search In order to see a word definition As a website user I need to be able to search for a word

Scenario: Searching for a page that does exist Given I am on "/wiki/Main_Page" When I fill in "search" with "Behavior Driven Development" And I press "searchButton" Then I should see "agile software development"

Page 14: Uszanowanko Programowanko #4 - BDD vs Behat

Feature: Search In order to see a word definition As a website user I need to be able to search for a word

Scenario: Searching for a page that does exist Given there is „Behavior Driven Development” article

And there is „agile software development” article When I search for "Behavior Driven Development" Then there should be "agile software development” reference

Declarative

Page 15: Uszanowanko Programowanko #4 - BDD vs Behat

ImperativeScenario: Registering with already used e-mail Given there are following users: | username | password | email | active | | testuser1 | test1 | [email protected] | 1 |

When I am on „/register” page And I fill in „username” with „newuser” And I fill in „password” with „123456” And I fill in „email” with „[email protected]” And I press „register” Then I should see „e-mail is already used”

Page 16: Uszanowanko Programowanko #4 - BDD vs Behat

Declarative

Scenario: Registering with already used e-mail Given there is registered user with „[email protected]” e-mail When I try to register with „[email protected]” e-mail Then I should be notified that e-mail is already used

Page 17: Uszanowanko Programowanko #4 - BDD vs Behat

Scenario: Purchasing a product Given there is „Lightsaber” which costs $5 When I add „Lightsaber” to basket Then there should be „Lightsaber” in my basket When I check out my basket Then I should be charged for $5

Many activities

Page 18: Uszanowanko Programowanko #4 - BDD vs Behat

Scenario: Adding product to basket Given there is „Lightsaber” When I add „Lightsaber” to basket Then there should be „Lightsaber” in my basket

Scenario: Checking out basket Given there is „Lightsaber” which costs $5 in my basket When I check out my basket Then I should be charged for $5

One activity

Page 19: Uszanowanko Programowanko #4 - BDD vs Behat

Tips

avoid implementation details

use ubiquitous language

ask for examples

describe one activity

Page 20: Uszanowanko Programowanko #4 - BDD vs Behat

Questions?

Page 21: Uszanowanko Programowanko #4 - BDD vs Behat

Thank you