Your SlideShare is downloading. ×
  • Like
More Than Automation - How Good Acceptance Tests Can Make Your Team Happier
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

More Than Automation - How Good Acceptance Tests Can Make Your Team Happier

  • 1,796 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,796
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
48
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. More than automation How good acceptance tests can make your team happier @mattwynne Freelance Programmer & CoachWednesday, 18 April 12
  • 2. Refuctoring your Cucumber tests Protecting your job with Mortgage Driven Development @mattwynne Freelance Programmer & CoachWednesday, 18 April 12
  • 3. What is MDD?Wednesday, 18 April 12
  • 4. MDD Core Principles Maintainable code offers no job security Programming should be a solitary activityWednesday, 18 April 12
  • 5. Wednesday, 18 April 12
  • 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 possibleWednesday, 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 firedWednesday, 18 April 12
  • 10. Cucumber is a threatWednesday, 18 April 12
  • 11. Cucumber Could lead to YOUR house being repossessedWednesday, 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 teamWednesday, 18 April 12
  • 13. MDD Core Practice uc to ri ng R efWednesday, 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.htmlWednesday, 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 profileWednesday, 18 April 12
  • 16. Step 1: Remove Spurious DocumentationWednesday, 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 profileWednesday, 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 profileWednesday, 18 April 12
  • 19. Step 2: Conflate ScenariosWednesday, 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 profileWednesday, 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 profileWednesday, 18 April 12
  • 22. Step 3: Insert Incidental DetailWednesday, 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 profileWednesday, 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 profileWednesday, 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 profileWednesday, 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 profileWednesday, 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 profileWednesday, 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 profileWednesday, 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 profileWednesday, 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
  • 31. Incidental Conflated Detail Scenarios Brittle Reader Reader Tests Confusion Boredom Job SecurityWednesday, 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 tooWednesday, 18 April 12
  • 33. Now that I have your attentionWednesday, 18 April 12
  • 34. Wednesday, 18 April 12
  • 35. Think about it • Why are you writing these features?Wednesday, 18 April 12
  • 36. What you think you need All you actually needWednesday, 18 April 12
  • 37. What you think you need All you actually What would give need you some value, right nowWednesday, 18 April 12
  • 38. Think about it • Who are you writing these features for?Wednesday, 18 April 12
  • 39. Ideas Features CodeWednesday, 18 April 12
  • 40. Are you writing tests or documentation?Wednesday, 18 April 12
  • 41. Mea culpaWednesday, 18 April 12
  • 42. IMPORTANT: This file isgenerated by cucumber-rails -edit at your own peril. It isrecommended to regeneratethis file in the future when youupgrade to a newer version ofcucumber-rails. Consideradding your own code to a newfile instead of editing this one.Wednesday, 18 April 12
  • 43. Wednesday, 18 April 12
  • 44. Levels of AbstractionWednesday, 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, perfectlyWednesday, 18 April 12
  • 47. Whose domain is it anyway?Wednesday, 18 April 12
  • 48. Solutions • Feedback • Feedback • FeedbackWednesday, 18 April 12
  • 49. Wednesday, 18 April 12
  • 50. Relish Features • Private projects, organisations • Full text search • Editorial • Markdown pages • Navigation / ToC ordering • Push from a gemWednesday, 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
  • 52. ThanksWednesday, 18 April 12
  • 53. Further Reading • http://dhemery.com/pdf/writing_maintainable_automated_acceptance_tests.pdf • http://benmabey.com/2008/05/19/imperative-vs-declarative-scenarios-in-user-stories.html • http://dannorth.net/2011/01/31/whose-domain-is-it-anyway • http://elabs.se/blog/15-you-re-cuking-it-wrong • http://github.com/mattwynne/cucumber-usual_suspects • http://github.com/riverGlide/CukeSalad/ • http://relishapp.com • http://blog.mattwynne.netWednesday, 18 April 12