ATDD - Acceptance Test Driven Development

82,536 views
82,429 views

Published on

Acceptance test driven development tutorial. This tutorial explains how to take user stories and convert them into working software. Details about Acceptance Criteria and Acceptance tests using FitNesse and FitLibrary are described in this presentation. Also Patterns and Anti-Patterns associated with this are described in this presentation.

Published in: Technology, Spiritual
8 Comments
83 Likes
Statistics
Notes
  • In the commercial tools section, are you saying that WinRunner, Silk and RFT are suitable and the others are not or are all of them not suitable?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • wonderful presentation, thanks for sharing this.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Awesome presentation!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Não consegui realizar o download, poderia me disponibilizar por e-mail?

    thinaregina@gmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • very nice presentation about Acceptance TDD
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
82,536
On SlideShare
0
From Embeds
0
Number of Embeds
4,667
Actions
Shares
0
Downloads
3,340
Comments
8
Likes
83
Embeds 0
No embeds

No notes for slide

ATDD - Acceptance Test Driven Development

  1. 1. Acceptance TestDriven Development Naresh Jain naresh@agilefaqs.com http://blogs.agilefaqs.com Licensed Under Creative Commons by Naresh Jain 1
  2. 2. Warmup Scenarios Licensed Under Creative Commons by Naresh Jain 2
  3. 3. Warmup ScenariosPick one scenario and in relation to your scenario,what are the specific observable results that willtell you that the activity has been successfullycompleted? Licensed Under Creative Commons by Naresh Jain 2
  4. 4. Warmup ScenariosPick one scenario and in relation to your scenario,what are the specific observable results that willtell you that the activity has been successfullycompleted?Going out for Movie (THX sound and Digital projection) Licensed Under Creative Commons by Naresh Jain 2
  5. 5. Warmup ScenariosPick one scenario and in relation to your scenario,what are the specific observable results that willtell you that the activity has been successfullycompleted?Going out for Movie (THX sound and Digital projection)Going out for meal (one veg.) Licensed Under Creative Commons by Naresh Jain 2
  6. 6. Warmup ScenariosPick one scenario and in relation to your scenario,what are the specific observable results that willtell you that the activity has been successfullycompleted?Going out for Movie (THX sound and Digital projection)Going out for meal (one veg.)Going shopping ($50) Licensed Under Creative Commons by Naresh Jain 2
  7. 7. Warmup ScenariosPick one scenario and in relation to your scenario,what are the specific observable results that willtell you that the activity has been successfullycompleted?Going out for Movie (THX sound and Digital projection)Going out for meal (one veg.)Going shopping ($50) [10 Minutes] Licensed Under Creative Commons by Naresh Jain 2
  8. 8. Warmup ScenariosPick one scenario and in relation to your scenario,what are the specific observable results that willtell you that the activity has been successfullycompleted?Going out for Movie (THX sound and Digital projection)Going out for meal (one veg.)Going shopping ($50) [10 Minutes]Present back to the group your findings. [3 minutes per group] Licensed Under Creative Commons by Naresh Jain 2
  9. 9. What is a Story?Story is a smallest piece of functionality that add business value Story Title - Actor Action Context As a .. <user who requires this feature> I want .. <do something> So that... <user goal/business justification> Ron Jeffries’ 3 Cs - Card, Conversation and Confirmation 3
  10. 10. Story ExampleTitle: Keen Reader subscribes to a blogAs a keen reader of your blogI want to subscribe to your blogSo that I can stay up-to-date with the new posts 4
  11. 11. Another Story ExampleTitle: Social Networking Enthusiast uploads profile pictureAs a Social Networking EnthusiastI want to upload my profile pictureSo my friends can see how I look and recognize me 5
  12. 12. What makes a good Story? 6
  13. 13. What makes a good Story?Stories should follow the INVEST principle: 6
  14. 14. What makes a good Story?Stories should follow the INVEST principle:Independent 6
  15. 15. What makes a good Story?Stories should follow the INVEST principle:IndependentNegotiable 6
  16. 16. What makes a good Story?Stories should follow the INVEST principle:IndependentNegotiableValuable 6
  17. 17. What makes a good Story?Stories should follow the INVEST principle:IndependentNegotiableValuableEstimate-able 6
  18. 18. What makes a good Story?Stories should follow the INVEST principle:IndependentNegotiableValuableEstimate-ableSmall 6
  19. 19. What makes a good Story?Stories should follow the INVEST principle:IndependentNegotiableValuableEstimate-ableSmallTestable 6
  20. 20. Stories are fundamental unit of activity 7
  21. 21. Stories are fundamental unit of activityBusiness Goals 7
  22. 22. Stories are fundamental unit of activityBusiness Goals Inception 7
  23. 23. Stories are fundamental unit of activityBusiness Goals Product Backlog Inception As a ____, I want to be able to ____ so that ____ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable 7
  24. 24. Stories are fundamental unit of activityBusiness Goals Product Backlog Inception Release planning As a ____, I want to be able to ____ so that ____ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable 7
  25. 25. Stories are fundamental unit of activityBusiness Goals Product Backlog Release Backlog Inception Release planning As a ____, I want to As a ____, I want to be able to ____ so be able to ____ so that ____ that ____ I will know this is done when _______ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable More detailed estimate, and a specific acceptance test – low confidence stories might be “spiked” or prototyped 7
  26. 26. Stories are fundamental unit of activityBusiness Goals Product Backlog Release Backlog Inception Release planning Sprint planning As a ____, I want to As a ____, I want to be able to ____ so be able to ____ so that ____ that ____ I will know this is done when _______ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable More detailed estimate, and a specific acceptance test – low confidence stories might be “spiked” or prototyped 7
  27. 27. Stories are fundamental unit of activityBusiness Goals Product Backlog Release Backlog Sprint Backlog Inception Release planning Sprint planning As a ____, I want to As a ____, I want to As a ____, I want to be able to ____ so be able to ____ so be able to ____ so that ____ that ____ that ____ Possible automation of the acceptance test I will know this is done I will know this is done when _______ when _______ Might have an initial estimate (perhaps for both analysis and development), and an Development team expression of technical and breaks out the detail To do this I must: business confidence that this of work needed to 1) _____ is real and achievable More detailed estimate, and a pass test 2) _____ specific acceptance test – low confidence stories might be “spiked” or prototyped 7
  28. 28. Acceptance CriteriaIs a set of conditions that the Story must meet for it to beaccepted as completeIs typically provided by the customer or product owner. Is not a replacement for conversation. Is the results of the conversation Acceptance Criteria are NOT tests 8
  29. 29. Writing Acceptance CriteriaAcceptance Criteria should contain: ACTOR VERB – DESCRIBING A BEHAVIOR OBSERVABLE RESULTTo accommodate pre-conditions Acceptance Criteria can be expressed as Given [Precondition] When [Actor + Action] Then [Observable Result] 9
  30. 30. ExampleSocial Networking Enthusiast uploads profile picture 10
  31. 31. Example Social Networking Enthusiast uploads profile pictureGiven the user has a valid facebook account and a digital picture on her computer,When she uploads a picture in facebook,Then her the picture should be visible to all her friends in her network. 10
  32. 32. Example Social Networking Enthusiast uploads profile pictureGiven the user has a valid facebook account and a digital picture on her computer,When she uploads a picture in facebook,Then her the picture should be visible to all her friends in her network.Given an user is trying to find a friend on facebook,When the user searches for a person using their name,Then their profile picture should be displayed along with other details. 10
  33. 33. Example Social Networking Enthusiast uploads profile pictureGiven the user has a valid facebook account and a digital picture on her computer,When she uploads a picture in facebook,Then her the picture should be visible to all her friends in her network.Given an user is trying to find a friend on facebook,When the user searches for a person using their name,Then their profile picture should be displayed along with other details.As owner of facebook,I want users to upload authentic, personal profile picture,So facebooks reputation remains intact and facebook stays out of legal hassles. 10
  34. 34. Acceptance Criteria & Tests: Definition Acceptance Tests Licensed Under Creative Commons by Naresh Jain 11
  35. 35. Acceptance Criteria & Tests: Definition Acceptance TestsAcceptance Criteria Licensed Under Creative Commons by Naresh Jain 11
  36. 36. Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria+ Licensed Under Creative Commons by Naresh Jain 11
  37. 37. Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria+ Examples (data + scenarios) Licensed Under Creative Commons by Naresh Jain 11
  38. 38. Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria+ Examples (data + scenarios) Acceptance Tests Licensed Under Creative Commons by Naresh Jain 11
  39. 39. TasksTeam members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story. 12
  40. 40. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story.To accomplish this story: we start off with a simple upload and image display 12
  41. 41. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story.To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) 12
  42. 42. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story.To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) figure out where to store the image. (performant and fault-tolarent) 12
  43. 43. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story.To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) figure out where to store the image. (performant and fault-tolarent) scale down (size, resolution, etc.) of the image 12
  44. 44. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story.To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) figure out where to store the image. (performant and fault-tolarent) scale down (size, resolution, etc.) of the image and so on... 12
  45. 45. DemoRoman Numerals to Decimal Conversion Example Licensed Under Creative Commons by Naresh Jain 13
  46. 46. DemoReal World Domain Forwarding Server Licensed Under Creative Commons by Naresh Jain 14
  47. 47. Thinking in Tables Licensed Under Creative Commons by Naresh Jain 15
  48. 48. Thinking in TablesOnly Tables Execute Ignored Executed Licensed Under Creative Commons by Naresh Jain 16
  49. 49. Thinking in Tables Foundational Table Structure Name of FixtureInteraction with Application Table structure depends on type of Fixture Licensed Under Creative Commons by Naresh Jain 17
  50. 50. Thinking in Tables 3 Foundation FixturesColumn FixtureRow FixtureAction Fixture Licensed Under Creative Commons by Naresh Jain 18
  51. 51. Thinking in Tables Column FixtureLicensed Under Creative Commons by Naresh Jain 19
  52. 52. Thinking in Tables Row Fixture Analogous to comparing against rows in a database tableLicensed Under Creative Commons by Naresh Jain 20
  53. 53. Thinking in Tables Action Fixture Think GUI window Counter Window Counter:public class CountFixture extends Fixture { private int counter = 0; Counter: 6 public void count() { Count counter++; } public int counter() { return counter; }} Licensed Under Creative Commons by Naresh Jain 21
  54. 54. FitLibraryExtension to FITWritten by Rick MugridgeAdds some handy Fixtures Licensed Under Creative Commons by Naresh Jain 22
  55. 55. FitLibrary FitLibrary FixturesArrayFixture for ordered listsSetFixture for unordered listsSetUpFixtureSupports Graphics Tree structures Nested Tables Licensed Under Creative Commons by Naresh Jain 23
  56. 56. FitLibraryDoFixture• Broken tables• Highly readable• Flexibility Licensed Under Creative Commons by Naresh Jain 24
  57. 57. Tools FITFramework for Integrated TestsCreated by Ward CunninghamOpen SourceThe most accepted solution for agile acceptance testing Licensed Under Creative Commons by Naresh Jain 25
  58. 58. Tools FitNesseEnvironment build around FITMakes everything easierCreated by Object Mentor, Inc.Open Source Licensed Under Creative Commons by Naresh Jain 26
  59. 59. FIT FitNesse - Stand alone web server - Is a wiki- Tests written in HTML - Tests written in wiki text- Tests are executed on the command line - Tests are executed from within the wiki- Tables are executed - Translates tests into HTML- Non-table markup is ignored - Uses FIT to execute tests- Tables map to Fixtures - Supports test suites- Fixtures are code that is aware of the - Supports variables in testssystem - Supports test refactoring- Supplies foundational Fixtures - Written in Java- Implementations ported to many - Supports FIT implementations in anylanguages language Licensed Under Creative Commons by Naresh Jain 27
  60. 60. Acceptance Criteria and Tests:A Critical Piece of Agile Licensed Under Creative Commons by Naresh Jain 28
  61. 61. Acceptance Criteria & Tests: A Critical Piece of Agile Traditional Approach1 May 1 Jul 1 Sep 1 Nov Analysis Design Implementation ERD DFD DD ST Licensed Under Creative Commons by Naresh Jain 29
  62. 62. Key Questions Business FacingAre we building the right product?Are we building the product right? Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 30
  63. 63. Brian Marick’s Test Categorization Business FacingSupports Programming Critique product Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 31
  64. 64. It Helps to Think of Tests this way... Business FacingDrives Development Critique product Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  65. 65. It Helps to Think of Tests this way... Business FacingDrives Development Critique product Unit Testing Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  66. 66. It Helps to Think of Tests this way... Business Facing Acceptance TestingDrives Development Critique product Low-fi prototypes Unit Testing Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  67. 67. It Helps to Think of Tests this way... Business Facing Acceptance Testing Exploratory TestingDrives Development Critique product Low-fi prototypes UI and Usability Testing Unit Testing Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  68. 68. It Helps to Think of Tests this way... Business Facing Acceptance Testing Exploratory TestingDrives Development Critique product Low-fi prototypes UI and Usability Testing Performance Testing Unit Testing System Tests Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  69. 69. Avatars of TDD Business FacingDrives Development Critique product Inside Out Outside In Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 33
  70. 70. Test Driven DevelopmentTDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  71. 71. Test Driven Development Add a TestTDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  72. 72. Test Driven Development Add a Test Run the TestTDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  73. 73. Test Driven Development Add a Test Pass Run the TestTDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  74. 74. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  75. 75. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Licensed Under Creative Commons by Naresh Jain 34
  76. 76. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Run the Test Licensed Under Creative Commons by Naresh Jain 34
  77. 77. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Licensed Under Creative Commons by Naresh Jain 34
  78. 78. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Licensed Under Creative Commons by Naresh Jain 34
  79. 79. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  80. 80. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  81. 81. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  82. 82. Test Driven Development Add a Test Pass Run the Test FailTDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  83. 83. Acceptance Test Driven Development Licensed Under Creative Commons by Naresh Jain 35
  84. 84. Acceptance Test Driven DevelopmentStory Licensed Under Creative Commons by Naresh Jain 35
  85. 85. Acceptance Test Driven Development Acceptance CriteriaStory Licensed Under Creative Commons by Naresh Jain 35
  86. 86. Acceptance Test Driven Development Iteration Acceptance CriteriaStory Licensed Under Creative Commons by Naresh Jain 35
  87. 87. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria TestsStory Licensed Under Creative Commons by Naresh Jain 35
  88. 88. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria TestsStory Automated Unit Test Licensed Under Creative Commons by Naresh Jain 35
  89. 89. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria TestsStory Automated Unit Test Automated Acceptance Tests Licensed Under Creative Commons by Naresh Jain 35
  90. 90. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria TestsStory Automated Unit Test Automated Acceptance Tests Exploratory Testing Licensed Under Creative Commons by Naresh Jain 35
  91. 91. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria TestsStory Automated Unit Test Automated Acceptance Tests Acceptance Exploratory Criteria Testing Licensed Under Creative Commons by Naresh Jain 35
  92. 92. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria TestsStory Automated Unit Test Automated UI Tests Automated Acceptance Tests Acceptance Exploratory Criteria Testing Licensed Under Creative Commons by Naresh Jain 35
  93. 93. Acceptance Test Driven Development Iteration Automated P Acceptance E Acceptance R Criteria Tests F O Automated RStory M T Unit Test Automated E E UI Tests N S C T E S Automated Acceptance Tests Acceptance Exploratory Criteria Testing Licensed Under Creative Commons by Naresh Jain 35
  94. 94. Mike Cohn’s Testing Pyramid Licensed Under Creative Commons by Naresh Jain 36
  95. 95. Mike Cohn’s Testing Pyramid GUI Tests Licensed Under Creative Commons by Naresh Jain 36
  96. 96. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests Licensed Under Creative Commons by Naresh Jain 36
  97. 97. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests Acceptance Tests Licensed Under Creative Commons by Naresh Jain 36
  98. 98. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests At least one per story Acceptance Tools: Fit, FitNesse, RSpec, JBehave Tests Licensed Under Creative Commons by Naresh Jain 36
  99. 99. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests At least one per story Acceptance Tools: Fit, FitNesse, RSpec, JBehave Tests Unit Tests Licensed Under Creative Commons by Naresh Jain 36
  100. 100. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests At least one per story Acceptance Tools: Fit, FitNesse, RSpec, JBehave Tests At least one per class or module Unit Tests Tools: xUnit, TestNG Licensed Under Creative Commons by Naresh Jain 36
  101. 101. Acceptance Tests: A Critical Piece of Agile Criteria for DONEEvery story must have at least one Acceptance TestA story is not DONE until it passes it’s Acceptance Tests Licensed Under Creative Commons by Naresh Jain 37
  102. 102. Acceptance Tests: A Critical Piece of AgileManual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  103. 103. Acceptance Tests: A Critical Piece of AgileManual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  104. 104. Acceptance Tests: A Critical Piece of AgileManual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  105. 105. Why Acceptance Tests?Criteria for CompletionGreat Collaboration toolSource of FeedbackReal data to measure progress Licensed Under Creative Commons by Naresh Jain 39
  106. 106. Data From Acceptance Tests Total ATs Failing ATs Passing ATs9072543618 0 1 2 3 4 5 6 7 8 9 10 Licensed Under Creative Commons by Naresh Jain 40
  107. 107. Acceptance Tests Are Automated Licensed Under Creative Commons by Naresh Jain 41
  108. 108. Acceptance Tests: A Critical Piece of Agile The ButtonHow often would you pressit?When would you press it?Who would press it? Testers, Developers, Managers, Customers, Spectators, etc. Licensed Under Creative Commons by Naresh Jain 42
  109. 109. Licensed Under Creative Commons by Naresh Jain 43
  110. 110. Criteria for DONELicensed Under Creative Commons by Naresh Jain 43
  111. 111. Criteria for DONE+ Licensed Under Creative Commons by Naresh Jain 43
  112. 112. Criteria for DONE+ Automated Licensed Under Creative Commons by Naresh Jain 43
  113. 113. Criteria for DONE+ AutomatedExecutable Specification Licensed Under Creative Commons by Naresh Jain 43
  114. 114. Acceptance Tests: A Critical Piece of Agile Executable SpecificationA new paradigm for testingPuts quality firstRemoves ambiguity from requirements Licensed Under Creative Commons by Naresh Jain 44
  115. 115. Who WritesAcceptance Tests? Licensed Under Creative Commons by Naresh Jain 45
  116. 116. Who Writes Acceptance Tests? The CustomerThe Customer Role Stake holder Business Analyst Quality Assurance Product Owner Developer Licensed Under Creative Commons by Naresh Jain 46
  117. 117. Who Writes Acceptance Tests? Tests Get TechnicalThe “Customer” may need technical help to write testsDevelopers and QAs are technicalPair test authoring Licensed Under Creative Commons by Naresh Jain 47
  118. 118. Who Writes Acceptance Tests? Business Rules Get FuzzySometimes developers need help understanding testsCustomers know business rulesPair test implementation Licensed Under Creative Commons by Naresh Jain 48
  119. 119. Exercise #1Licensed Under Creative Commons by Naresh Jain 49
  120. 120. Exercise #1 The Login TestWrite a test plan, in plain text, for the businessrules of logging in.Web applicationUser credentials are stored in relationaldatabaseSuccessful login redirects to “Welcome” page Licensed Under Creative Commons by Naresh Jain 50
  121. 121. Writing GoodAcceptance Tests Licensed Under Creative Commons by Naresh Jain 51
  122. 122. Writing Good Acceptance Tests Login Test Possibilities1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 52
  123. 123. Writing Good Acceptance Tests Login Test Possibilities1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 52
  124. 124. Writing Good Acceptance Tests Login Test Possibilities1. Direct browser to URL for login page1. Enter the username ‘wallace’ Licensed Under Creative Commons by Naresh Jain 52
  125. 125. Writing Good Acceptance Tests Login Test Possibilities1. Direct browser to URL for login page1. Enter the username ‘wallace’ Licensed Under Creative Commons by Naresh Jain 52
  126. 126. Writing Good Acceptance Tests Login Test Possibilities1. Direct browser to URL for login page1. Enter the username ‘wallace’Build a Testable Environment First Licensed Under Creative Commons by Naresh Jain 52
  127. 127. Writing Good Acceptance Tests Login Test Possibilities1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 53
  128. 128. Writing Good Acceptance Tests Login Test Possibilities1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 53
  129. 129. Writing Good Acceptance Tests Login Test Possibilities1. Add some users to the system3. Enter a value into the username field Licensed Under Creative Commons by Naresh Jain 53
  130. 130. Writing Good Acceptance Tests Login Test Possibilities1. Add some users to the system3. Enter a value into the username field Licensed Under Creative Commons by Naresh Jain 53
  131. 131. Writing Good Acceptance Tests Login Test Possibilities1. Add some users to the system3. Enter a value into the username field Be Specific Licensed Under Creative Commons by Naresh Jain 53
  132. 132. Writing Good Acceptance Tests Tests are ExamplesUse concrete examplesSpecify concrete behaviorNo ambiguity allowed Licensed Under Creative Commons by Naresh Jain 54
  133. 133. Writing Good Acceptance Tests Login Test Possibilities1. Insert into User table values (’wallace’,‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 55
  134. 134. Writing Good Acceptance Tests Login Test Possibilities1. Insert into User table values (’wallace’,‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 55
  135. 135. Writing Good Acceptance Tests Login Test Possibilities1. Insert into User table values (’wallace’,‘ilikecheeze’)2. Open a browser to the URL http://localhost/myapp Licensed Under Creative Commons by Naresh Jain 55
  136. 136. Writing Good Acceptance Tests Login Test Possibilities1. Insert into User table values (’wallace’,‘ilikecheeze’)2. Open a browser to the URL http://localhost/myapp Licensed Under Creative Commons by Naresh Jain 55
  137. 137. Writing Good Acceptance Tests Login Test Possibilities1. Insert into User table values (’wallace’,‘ilikecheeze’)2. Open a browser to the URL http://localhost/myappAvoid Implementation Details Licensed Under Creative Commons by Naresh Jain 55
  138. 138. Good Acceptable Criteria and Tests Licensed Under Creative Commons by Naresh Jain 56
  139. 139. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite Licensed Under Creative Commons by Naresh Jain 56
  140. 140. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify Licensed Under Creative Commons by Naresh Jain 56
  141. 141. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify A - ACHIEVABLE - Capable of existing or taking place Licensed Under Creative Commons by Naresh Jain 56
  142. 142. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify A - ACHIEVABLE - Capable of existing or taking place R - RELEVANT - Having a connection with the story Licensed Under Creative Commons by Naresh Jain 56
  143. 143. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify A - ACHIEVABLE - Capable of existing or taking place R - RELEVANT - Having a connection with the story T - TIME-BOUND – When will the outcome be observed Licensed Under Creative Commons by Naresh Jain 56
  144. 144. Writing Good Acceptance TestsAvoid Implementation Details Acceptance Tests View UI Model and Presenter Business Tier Data Store Licensed Under Creative Commons by Naresh Jain 57
  145. 145. Writing Good Acceptance Tests Login Test: Possible SolutionAdd user to system: (’wallace’, ‘ilikecheeze’)Process login with username ‘wallace’ and password ‘blah’Check login failedProcess login with username ‘wallace’ and password ‘ilikecheeze’Check login succeeded Licensed Under Creative Commons by Naresh Jain 58
  146. 146. ToolsLicensed Under Creative Commons by Naresh Jain 59
  147. 147. Tools Commercial Tools WinRunner TestPartner EggPlant Silk QTP TestComplete RFT Squish WindowTesterAre not suitable for Acceptance Testing in an Agile environment Licensed Under Creative Commons by Naresh Jain 60
  148. 148. Tools Open Source Options FIT Sahi Frankenstein FitNesse Watir Cucumber Selenium Abbot RSpec/JBehaveAmong the few tools that support Test Driven Development Licensed Under Creative Commons by Naresh Jain 61
  149. 149. WikiLicensed Under Creative Commons by Naresh Jain 62
  150. 150. Wiki What is it?A collaborative web siteEditable by anyCreated by Ward CunninghamEvery project should have onehttp://c2.com/wikihttp://en.wikipedia.com Licensed Under Creative Commons by Naresh Jain 63
  151. 151. Wiki Creating TestsUse Wiki syntax to create a page with test tablesLabel the page as a Test Page Use a page name of the form Test… Turn on the Test propertyMake sure your Fixtures are in the classpath Use !path widgetMechanics !path values are concatenated Java command to start FitServer is executed Testable HTML is passed to FitServer FitServer runs the tests Results are passed back to FitNesse Licensed Under Creative Commons by Naresh Jain 64
  152. 152. Wiki Creating Suites There are 2 ways to make SuitesSet the Suite property Create a page with the Suite property Created test pages inside this page When the suite is executed, all child test pages will be included in the suite executionUse the !see widget !see <name of test page> All “included” tests pages will be included in the suite execution Run a Suite by clicking the Suite button Licensed Under Creative Commons by Naresh Jain 65
  153. 153. Hands-on SessionConference Proposal Submission PortalSome sample Stories Should be able to submit new proposal Should be able to list all submitted proposal Submitting proposal with same title should display appropriate error message Should be able to delete submitted proposal based on the title Should be able to delete submitted proposal based on the title Should be able to search proposals by title Should be able to search proposals by ID Should be able to find all proposal by an authors name Licensed Under Creative Commons by Naresh Jain 66
  154. 154. BreakLicensed Under Creative Commons by Naresh Jain 67
  155. 155. PatternsLicensed Under Creative Commons by Naresh Jain 68
  156. 156. Patterns Organizing TestsAllowing customers to add new tests without breaking the build Licensed Under Creative Commons by Naresh Jain 69
  157. 157. Patterns Version ControlKeeping the acceptance test in version control with the code. Licensed Under Creative Commons by Naresh Jain 70
  158. 158. Patterns Cross-Functional PairingUsing FitNesse based acceptance tests for collaboration between cross-functional team members. Licensed Under Creative Commons by Naresh Jain 71
  159. 159. Patterns ATDDAcceptance Test Driven Development Licensed Under Creative Commons by Naresh Jain 72
  160. 160. Patterns CSTTCleanup, Setup, Test, Teardown Licensed Under Creative Commons by Naresh Jain 73
  161. 161. Patterns Independent TestsTests shouldn’t depend on each other.Tests leave the system in the same state it started in. Licensed Under Creative Commons by Naresh Jain 74
  162. 162. Patterns Dynamic StubbingAvoiding complications of external systems. Licensed Under Creative Commons by Naresh Jain 75
  163. 163. Patterns Non-Production Setup/TeardownUsing non-production light weigh code for setup and teardown.Helps test only what you want to test. Licensed Under Creative Commons by Naresh Jain 76
  164. 164. Patterns Suite LevelsCreating different levels of suites depending on the depth/level offeedback desired.Smoke, Current Iteration/Sprint, Regression Licensed Under Creative Commons by Naresh Jain 77
  165. 165. Patterns DRYUsing !include to avoid repeating yourself. Licensed Under Creative Commons by Naresh Jain 78
  166. 166. Patterns Make it RealWrite ATs as close as possible to the real environment. Licensed Under Creative Commons by Naresh Jain 79
  167. 167. Patterns Fixture EvolutionAllow Fixture implementation to evolve over time.Treat fixtures as first class citizens. Licensed Under Creative Commons by Naresh Jain 80
  168. 168. Patterns At Least One Test/StoryEvery story should have at least one acceptance testAvoid long/multipurpose tests. Licensed Under Creative Commons by Naresh Jain 81
  169. 169. Anti-PatternsLicensed Under Creative Commons by Naresh Jain 82
  170. 170. Anti-Patterns Developer ATsDevelopers writing acceptance tests by themselves, for themselves. Licensed Under Creative Commons by Naresh Jain 83
  171. 171. Anti-Patterns Unit TestingDon’t write ATs at the unit testing level Unit tests are implementation specific ATs are NOT implementation specific Licensed Under Creative Commons by Naresh Jain 84
  172. 172. Anti-Patterns QA Testing ToolHard to write tests up front.Perhaps only on large projects. Licensed Under Creative Commons by Naresh Jain 85
  173. 173. Anti-Patterns Silver BulletTrying to use FitNesse for all types of Acceptance Tests UI testing XML testing Licensed Under Creative Commons by Naresh Jain 86
  174. 174. Anti-Patterns Test AfterWriting tests after the code is already written. Licensed Under Creative Commons by Naresh Jain 87
  175. 175. Anti-Patterns Hidden Test DataHiding test data in the fixtures. Licensed Under Creative Commons by Naresh Jain 88
  176. 176. Anti-Patterns Implementation Dependent ATsMaking test pages (tables) dependent on implementation details anddata structures. Licensed Under Creative Commons by Naresh Jain 89
  177. 177. Anti-Patterns Logging in Your FixturesPutting log statements or print statements in the fixture code.Fixtures are probably too complicated. Licensed Under Creative Commons by Naresh Jain 90
  178. 178. ReferencePortions of this presentation is adopted from Micah Martin’sIntroduction to Automated Acceptance Tests PresentationKent Beck, Test Driven Development By Example."Agile Testing Directions" - Brian Marickhttp://www.opensourcetesting.org/ Licensed Under Creative Commons by Naresh Jain 91
  179. 179. The End Questions? naresh@agilefaqs.com http://blogs.agilefaqs.comLicensed Under Creative Commons by Naresh Jain 92

×