Documente Academic
Documente Profesional
Documente Cultură
BDD
your clients happy
using
who
AM i
http://www.flickr.com/photos/officialgdc/4421337520
= clients
happiness ?
clients
happiness = valuable
product
awesome
languages
valuable
product
awesome
languages
valuable
frameworks product
awesome
languages
valuable
frameworks product
developers
awesome
valuable
valuable
product =
=
popular
valuable
product
=
popular
valuable
product useful
=
popular
valuable
product useful
profitable
BUT
?
How
to bring
value
into
client
product
especially,
when client
doesnt know that
he needs it
By asking
http://www.flickr.com/photos/brendio/71252025
Client wants
internationalization?
http://www.flickr.com/photos/editor/6698208975
Client wants
authorization?
http://www.flickr.com/photos/quinnanya/3588989219
Client wants
this new shiny
awesome feature?
Well, you got it....
CAT I O NS
MMU N I
CO
photo by joshfassbind.com
How does it helps?
Correct answers to
WHY?
helps you to bring
higher priority on
things, that really
matter
How does the correct
WHY?
answer looks like?
Correct WHY? answer
should point out:
Correct WHY? answer
should point out:
In order to [X]
As a [Y]
Its strength is that it forces you to
identify the value of delivering a
story when you first define it.
1
In order to get latest news
As a visitor
I need to be able to see last 3 articles on homepage
3
In order to spend my money
As a user
I need to be able to buy rating on site
In order to [X]
As a [Y]
I need [Z]
Hey, it looks like a
user story!
UserStory:
In order to [X]
As a [Y]
I need [Z]
it IS
UserStory:
In order to [X]
As a [Y]
I need [Z]
Scenario 1:
Given some initial context (the givens),
When an event occurs,
Then ensure some outcomes.
Scenario 2:
Given some initial context (the givens),
When an event occurs,
Then ensure some outcomes.
A storys behaviour
is simply its
acceptance criteria!
- if the system fulfills all the acceptance
criteria, its behaving correctly; if it
doesnt, it isnt.
Acceptance criteria
could be automated!
Feature: Feature description
In order to ...
As a ...
I need ...
Background:
Given a site have everzet user with qwerty password
Background:
Given a site have users:
| username | password |
| everzet | qwerty |
Background:
Given a site have users:
| username | password |
| everzet | qwerty |
Background:
Given a site have users:
| username | password |
| everzet | qwerty |
Examples:
Feature: User logins
In order to have extended abilities
As a site user
I need to be able to login
Background:
Given a site have users:
| username | password |
| everzet | qwerty |
Examples:
| username | password | message |
| everzet | qwerty | Welcome, everzet |
| someone | pa$$word | Login or password is incorrect |
In-browser testing and
frameworks support
Sahi
Goutte
Selenium
sfBrowser
Symfony2 Client
Sahi
Goutte
Selenium
sfBrowser
Symfony2 Client
Background:
Given a site have users:
| username | password |
| everzet | qwerty |
Examples:
| username | password | message |
| everzet | qwerty | Welcome, everzet |
| someone | pa$$word | Login or password is incorrect |
Feature: User logins
In order to have extended abilities
As a site user
I need to be able to login
Background:
Given a site have users:
| username | password |
| everzet | qwerty |
@javascript
Scenario Outline: Only existing users can login
Given I am on the /login page
When I fill in username with <username>
And I fill in password with <password>
And I press login in login form
Then I should see <message>
Examples:
| username | password | message |
| everzet | qwerty | Welcome, everzet |
| someone | pa$$word | Login or password is incorrect |
Questions?