6. MD D
F AI L
http://www.flickr.com/photos/downtree/1666035170/
Wednesday, 18 April 12
7. N ✔
W I
D D
M
http://www.flickr.com/photos/chokingsun/3535556349/
Wednesday, 18 April 12
8. Maintainable code offers no
job security
therefore
As a mortgage-driven developer,
I try to make my code seem as
weird and mysterious as possible
Wednesday, 18 April 12
9. Programming should be a
solitary activity
therefore
As a mortgage-driven developer,
I make the experience of collaborating
with me as awkward and
unpleasant as I can*
* without actually getting fired
Wednesday, 18 April 12
11. Cucumber
Could lead to
YOUR house
being
repossessed
Wednesday, 18 April 12
12. Cucumber is a threat
• Promotes collaboration between
stakeholders and developers
• Transparency of how the system
actually behaves
• Aims to develop a shared
understanding or ubiquitous
language within the team
Wednesday, 18 April 12
14. What is Refuctoring?
"Refuctoring is the process of taking a
well-designed piece of code and, through
a series of small, reversible changes,
making it completely unmaintainable by
anybody except yourself."
http://www.waterfall2006.com/gorman.html
Wednesday, 18 April 12
15. Feature: Sign Up
Sign up works in three stages:
1. Apply for an account via a form on the website. Applicant gets an email.
2. Follow the confirmation in the email to activate the account.
3. Fill out profile information. By this stage the user has an account but
we try to collect more information about them.
Scenario: Apply for an account
Given I do not have an account
When I follow the sign up link from the homepage
And I fill out the form with valid details and submit it
Then I should see a confirmation message telling me to check my email
Scenario: Confirm account
Given I have applied for an account
And I have confirmed my application
When I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
Scenario: Fill out account profile
Given I have logged in to a brand new account
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
16. Step 1:
Remove Spurious
Documentation
Wednesday, 18 April 12
17. Feature: Sign Up
Sign up works in three stages:
1. Apply for an account via a form on the website. Applicant gets an email.
2. Follow the confirmation in the email to activate the account.
3. Fill out profile information. By this stage the user has an account but
we try to collect more information about them.
Scenario: Apply for an account
Given I do not have an account
When I follow the sign up link from the homepage
And I fill out the form with valid details and submit it
Then I should see a confirmation message telling me to check my email
Scenario: Confirm account
Given I have applied for an account
And I have confirmed my application
When I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
Scenario: Fill out account profile
Given I have logged in to a brand new account
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
18. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
When I follow the sign up link from the homepage
And I fill out the form with valid details and submit it
Then I should see a confirmation message telling me to check my email
Scenario: Confirm account
Given I have applied for an account
And I have confirmed my application
When I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
Scenario: Fill out account profile
Given I have logged in to a brand new account
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
19. Step 2:
Conflate Scenarios
Wednesday, 18 April 12
20. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
When I follow the sign up link from the homepage
And I fill out the form with valid details and submit it
Then I should see a confirmation message telling me to check my email
Scenario: Confirm account
Given I have applied for an account
And I have confirmed my application
When I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
Scenario: Fill out account profile
Given I have logged in to a brand new account
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
21. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
When I follow the sign up link from the homepage
And I fill out the form with valid details and submit it
Then I should see a confirmation message telling me to check my email
When I have confirmed my application
And I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
22. Step 3:
Insert Incidental Detail
Wednesday, 18 April 12
23. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
When I follow the sign up link from the homepage
And I fill out the form with valid details and submit it
Then I should see a confirmation message telling me to check my email
And I have confirmed my application
When I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
24. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
And I am on the home page
And I follow "Join"
Then I should see "we need some information from you."
And I should see "Home / Join"
And I fill out the form with valid details and submit it
Then I should see a confirmation message telling me to check my email
And I have confirmed my application
When I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
25. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
And I am on the home page
And I follow "Join"
Then I should see "we need some information from you."
And I should see "Home / Join"
When I fill in "user_email" with "dave123@hotmail.com"
And I fill in "user_password" with "passw0rd"
And I fill in "user_password_confirmation" with "passw0rd"
And I fill in "user_title" with "Mr"
And I fill in "user_firstname" with "Dave"
And I fill in "user_surname" with "Smith"
And I fill in "user_display_name" with "Dave Smith"
And I fill in "user_organisation_name" with "Big Corp"
And I fill in "user_city" with "London"
And I select "United Kingdom" from "user_country_id"
And I fill in "user_phone_number" with "1234 5678"
And I press "Sign up"
Then I should see a confirmation message telling me to check my email
And I have confirmed my application
When I log in
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
26. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
And I am on the home page
And I follow "Join"
Then I should see "we need some information from you."
And I should see "Home / Join"
When I fill in "user_email" with "dave123@hotmail.com"
And I fill in "user_password" with "passw0rd"
And I fill in "user_password_confirmation" with "passw0rd"
And I fill in "user_title" with "Mr"
And I fill in "user_firstname" with "Dave"
And I fill in "user_surname" with "Smith"
And I fill in "user_display_name" with "Dave Smith"
And I fill in "user_organisation_name" with "Big Corp"
And I fill in "user_city" with "London"
And I select "United Kingdom" from "user_country_id"
And I fill in "user_phone_number" with "1234 5678"
And I press "Sign up"
Then I should see "You have signed up successfully"
Given I have confirmed my signup for "dave123@hotmail.com"
And I login as "dave123@hotmail.com"
Then I should not see a message telling me to confirm my account
But I should see a welcome message
And I should see a form asking me to fill out my account profile
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
27. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
And I am on the home page
And I follow "Join"
Then I should see "we need some information from you."
And I should see "Home / Join"
When I fill in "user_email" with "dave123@hotmail.com"
And I fill in "user_password" with "passw0rd"
And I fill in "user_password_confirmation" with "passw0rd"
And I fill in "user_title" with "Mr"
And I fill in "user_firstname" with "Dave"
And I fill in "user_surname" with "Smith"
And I fill in "user_display_name" with "Dave Smith"
And I fill in "user_organisation_name" with "Big Corp"
And I fill in "user_city" with "London"
And I select "United Kingdom" from "user_country_id"
And I fill in "user_phone_number" with "1234 5678"
And I press "Sign up"
Then I should see "You have signed up successfully"
Given I have confirmed my signup for "dave123@hotmail.com"
And I login as "dave123@hotmail.com"
And I should not see "You have to confirm your account before continuing"
And I should see "Thank you for signing up for the portal"
And I should see "Home / New Demographic"
And I should see a form asking me to fill out my account profile
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
28. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
And I am on the home page
And I follow "Join"
Then I should see "we need some information from you."
And I should see "Home / Join"
When I fill in "user_email" with "dave123@hotmail.com"
And I fill in "user_password" with "passw0rd"
And I fill in "user_password_confirmation" with "passw0rd"
And I fill in "user_title" with "Mr"
And I fill in "user_firstname" with "Dave"
And I fill in "user_surname" with "Smith"
And I fill in "user_display_name" with "Dave Smith"
And I fill in "user_organisation_name" with "Big Corp"
And I fill in "user_city" with "London"
And I select "United Kingdom" from "user_country_id"
And I fill in "user_phone_number" with "1234 5678"
And I press "Sign up"
Then I should see "You have signed up successfully"
Given I have confirmed my signup for "dave123@hotmail.com"
And I login as "dave123@hotmail.com"
And I should not see "You have to confirm your account before continuing"
And I should see "Thank you for signing up for the portal"
And I should see "Home / New Demographic"
And I should see "I am a:"
And I should see "My Main Work Area is:"
And I should see "I work with:"
And I should see "About your organisation"
And I should see "The primary area is:"
And I should see "The secondary area is:"
And I should see "Your Reasons for joining this community"
When I fill out my profile details
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
29. Feature: Sign Up
Scenario: Apply for an account
Given I do not have an account
And I am on the home page
And I follow "Join"
Then I should see "we need some information from you."
And I should see "Home / Join"
When I fill in "user_email" with "dave123@hotmail.com"
And I fill in "user_password" with "passw0rd"
And I fill in "user_password_confirmation" with "passw0rd"
And I fill in "user_title" with "Mr"
And I fill in "user_firstname" with "Dave"
And I fill in "user_surname" with "Smith"
And I fill in "user_display_name" with "Dave Smith"
And I fill in "user_organisation_name" with "Big Corp"
And I fill in "user_city" with "London"
And I select "United Kingdom" from "user_country_id"
And I fill in "user_phone_number" with "1234 5678"
And I press "Sign up"
Then I should see "You have signed up successfully"
Given I have confirmed my signup for "dave123@hotmail.com"
And I login as "dave123@hotmail.com"
And I should not see "You have to confirm your account before continuing"
And I should see "Thank you for signing up for the portal"
And I should see "Home / New Demographic"
And I should see "I am a:"
And I should see "My Main Work Area is:"
And I should see "I work with:"
And I should see "About your organisation"
And I should see "The primary area is:"
And I should see "The secondary area is:"
And I should see "Your Reasons for joining this community"
And I should see "Demographic was successfully created"
And I should see "I am a: Researcher"
And I should see "My Main Work Area is: Heart Disease"
And I should see "My Organisations primary area is: Equipment Manufacturer"
And I log out and log in again
Then I should not see the form asking me to fill out my account profile
Wednesday, 18 April 12
30. Feature: Sign up
Scenario: Apply for an Account
Given I have setup the base data
And I am on the home page
And I follow "Join"
Then I should see "we need some information from you."
And I should see "Home / Join"
When I fill in "user_email" with "dave123@hotmail.com"
And I fill in "user_password" with "passw0rd"
d
And I fill in "user_password_confirmation" with "passw0rd"
e
And I fill in "user_title" with "Mr"
And I fill in "user_firstname" with "Dave"
r
And I fill in "user_surname" with "Smith"
o
And I fill in "user_display_name" with "Dave Smith"
t
And I fill in "user_organisation_name" with "Big Corp"
c
And I fill in "user_city" with "London"
u
And I select "United Kingdom" from "user_country_id"
f
And I fill in "user_phone_number" with "1234 5678"
e
And I press "Sign up"
R
Then I should see "You have signed up successfully"
Given I have confirmed my signup for "dave123@hotmail.com"
And I login as "dave123@hotmail.com"
And I should not see "You have to confirm your account before continuing"
!
And I should see "Thank you for signing up for the portal"
And I should see "Home / New Demographic"
And I should see "I am a:"
And I should see "My Main Work Area is:"
And I should see "I work with:"
And I should see "About your organisation"
And I should see "The primary area is:"
And I should see "The secondary area is:"
And I should see "Your Reasons for joining this community"
Then I select "Researcher" from "I am a:"
Then I select "Heart Disease" from "My Main Work Area is:"
Then I select "Equipment Manufacturer" from "The primary area is:"
Then I press "Save Demographic Information"
And I should see "Demographic was successfully created"
And I should see "I am a: Researcher"
And I should see "My Main Work Area is: Heart Disease"
And I should see "My Organisations primary area is: Equipment Manufacturer"
Then I am signed out
And I login as "dave123@hotmail.com"
And I should not see "Home / New Demographic"
Wednesday, 18 April 12
32. MDD Best Practices
• Include as much irrelevant detail in your
features as possible
• keeps them hard / boring to read
• and nice and brittle
• Try to sprinkle technical details like CSS or
HTML in there too
Wednesday, 18 April 12
33. Now that I have your
attention
Wednesday, 18 April 12
42. IMPORTANT: This file is
generated by cucumber-rails -
edit at your own peril. It is
recommended to regenerate
this file in the future when you
upgrade to a newer version of
cucumber-rails. Consider
adding your own code to a new
file instead of editing this one.
Wednesday, 18 April 12
45. When I
fill o
ut the
Declarative form w
ith va
lid de
tails
When I
fill in
And I f "user_e
ill in mail" w
And I f "user_p ith "da
ill in assword ve123@h
"user_p " with otmail.
And I f assword "passw0
ill in _confir rd"
And I f "user_t mation"
ill in itle" w with "p
And I f "user_f ith "Mr a
ill in irstnam "
"user_s e" with
urname" "Dave"
Imperative with "S
mith"
Wednesday, 18 April 12
46. Feature: The System
Scenario: Everything Works
Given the system exists
When I use it
Then it should work, perfectly
Wednesday, 18 April 12
50. Relish Features
• Private projects, organisations
• Full text search
• Editorial
• Markdown pages
• Navigation / ToC ordering
• Push from a gem
Wednesday, 18 April 12
51. Other Tips
• Strive for documentation, not tests
• Write scenarios with domain experts
• Pair up with programmers to write step
definitions
• Banish incidental details!
Wednesday, 18 April 12