Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Good Metrics for TDD
Next
Download to read offline and view in fullscreen.

Share

ATDD - Acceptance Test Driven Development

Download to read offline

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.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

ATDD - Acceptance Test Driven Development

  1. 1. Acceptance Test Driven 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 Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Licensed Under Creative Commons by Naresh Jain 2
  4. 4. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Going out for Movie (THX sound and Digital projection) Licensed Under Creative Commons by Naresh Jain 2
  5. 5. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? 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 Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? 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 Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? 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 Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? 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 Example Title: Keen Reader subscribes to a blog As a keen reader of your blog I want to subscribe to your blog So that I can stay up-to-date with the new posts 4
  11. 11. Another Story Example Title: Social Networking Enthusiast uploads profile picture As a Social Networking Enthusiast I want to upload my profile picture So 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: Independent Negotiable 6
  16. 16. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable 6
  17. 17. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable Estimate-able 6
  18. 18. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable Estimate-able Small 6
  19. 19. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable Estimate-able Small Testable 6
  20. 20. Stories are fundamental unit of activity 7
  21. 21. Stories are fundamental unit of activity Business Goals 7
  22. 22. Stories are fundamental unit of activity Business Goals Inception 7
  23. 23. Stories are fundamental unit of activity Business 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 activity Business 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 activity Business 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 activity Business 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 activity Business 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 Criteria Is a set of conditions that the Story must meet for it to be accepted as complete Is 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 Criteria Acceptance Criteria should contain: ACTOR VERB – DESCRIBING A BEHAVIOR OBSERVABLE RESULT To accommodate pre-conditions Acceptance Criteria can be expressed as Given [Precondition] When [Actor + Action] Then [Observable Result] 9
  30. 30. Example Social Networking Enthusiast uploads profile picture 10
  31. 31. Example Social Networking Enthusiast uploads profile picture Given 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 picture Given 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 picture Given 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 facebook's 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 Tests Acceptance 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. Tasks Team 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. Demo Roman Numerals to Decimal Conversion Example Licensed Under Creative Commons by Naresh Jain 13
  46. 46. Demo Real 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 Tables Only Tables Execute Ignored Executed Licensed Under Creative Commons by Naresh Jain 16
  49. 49. Thinking in Tables Foundational Table Structure Name of Fixture Interaction with Application Table structure depends on type of Fixture Licensed Under Creative Commons by Naresh Jain 17
  50. 50. Thinking in Tables 3 Foundation Fixtures Column Fixture Row Fixture Action Fixture Licensed Under Creative Commons by Naresh Jain 18
  51. 51. Thinking in Tables Column Fixture Licensed Under Creative Commons by Naresh Jain 19
  52. 52. Thinking in Tables Row Fixture Analogous to comparing against rows in a database table Licensed 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. FitLibrary Extension to FIT Written by Rick Mugridge Adds some handy Fixtures Licensed Under Creative Commons by Naresh Jain 22
  55. 55. FitLibrary FitLibrary Fixtures ArrayFixture for ordered lists SetFixture for unordered lists SetUpFixture Supports Graphics Tree structures Nested Tables Licensed Under Creative Commons by Naresh Jain 23
  56. 56. FitLibrary DoFixture • Broken tables • Highly readable • Flexibility Licensed Under Creative Commons by Naresh Jain 24
  57. 57. Tools FIT Framework for Integrated Tests Created by Ward Cunningham Open Source The most accepted solution for agile acceptance testing Licensed Under Creative Commons by Naresh Jain 25
  58. 58. Tools FitNesse Environment build around FIT Makes everything easier Created 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 tests system - Supports test refactoring - Supplies foundational Fixtures - Written in Java - Implementations ported to many - Supports FIT implementations in any languages 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 Approach 1 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 Facing Are 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 Facing Supports 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 Facing Drives 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 Facing Drives 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 Testing Drives 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 Testing Drives 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 Testing Drives 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 Facing Drives Development Critique product Inside Out Outside In Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 33
  70. 70. Test Driven Development TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  71. 71. Test Driven Development Add a Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  72. 72. Test Driven Development Add a Test Run the Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  73. 73. Test Driven Development Add a Test Pass Run the Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  74. 74. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  75. 75. Test Driven Development Add a Test Pass Run the Test Fail TDD 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 Fail TDD 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 Fail TDD 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 Fail TDD 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 Fail TDD 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 Fail TDD 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 Fail TDD 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 Fail TDD 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 Development Story Licensed Under Creative Commons by Naresh Jain 35
  85. 85. Acceptance Test Driven Development Acceptance Criteria Story Licensed Under Creative Commons by Naresh Jain 35
  86. 86. Acceptance Test Driven Development Iteration Acceptance Criteria Story Licensed Under Creative Commons by Naresh Jain 35
  87. 87. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Licensed Under Creative Commons by Naresh Jain 35
  88. 88. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Automated Unit Test Licensed Under Creative Commons by Naresh Jain 35
  89. 89. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story 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 Tests Story 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 Tests Story 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 Tests Story 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 R Story 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 DONE Every story must have at least one Acceptance Test A 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 Agile Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  103. 103. Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  104. 104. Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  105. 105. Why Acceptance Tests? Criteria for Completion Great Collaboration tool Source of Feedback Real data to measure progress Licensed Under Creative Commons by Naresh Jain 39
  106. 106. Data From Acceptance Tests Total ATs Failing ATs Passing ATs 90 72 54 36 18 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 Button How often would you press it? 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 DONE Licensed 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 + Automated Executable Specification Licensed Under Creative Commons by Naresh Jain 43
  114. 114. Acceptance Tests: A Critical Piece of Agile Executable Specification A new paradigm for testing Puts quality first Removes ambiguity from requirements Licensed Under Creative Commons by Naresh Jain 44
  115. 115. Who Writes Acceptance Tests? Licensed Under Creative Commons by Naresh Jain 45
  116. 116. Who Writes Acceptance Tests? The Customer The 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 Technical The “Customer” may need technical help to write tests Developers and QAs are technical Pair test authoring Licensed Under Creative Commons by Naresh Jain 47
  118. 118. Who Writes Acceptance Tests? Business Rules Get Fuzzy Sometimes developers need help understanding tests Customers know business rules Pair test implementation Licensed Under Creative Commons by Naresh Jain 48
  119. 119. Exercise #1 Licensed Under Creative Commons by Naresh Jain 49
  120. 120. Exercise #1 The Login Test Write a test plan, in plain text, for the business rules of logging in. Web application User credentials are stored in relational database Successful login redirects to “Welcome” page Licensed Under Creative Commons by Naresh Jain 50
  121. 121. Writing Good Acceptance Tests Licensed Under Creative Commons by Naresh Jain 51
  122. 122. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 52
  123. 123. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 52
  124. 124. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page 1. Enter the username ‘wallace’ Licensed Under Creative Commons by Naresh Jain 52
  125. 125. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page 1. Enter the username ‘wallace’ Licensed Under Creative Commons by Naresh Jain 52
  126. 126. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page 1. 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 Possibilities 1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 53
  128. 128. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 53
  129. 129. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system 3. Enter a value into the username field Licensed Under Creative Commons by Naresh Jain 53
  130. 130. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system 3. Enter a value into the username field Licensed Under Creative Commons by Naresh Jain 53
  131. 131. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system 3. 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 Examples Use concrete examples Specify concrete behavior No ambiguity allowed Licensed Under Creative Commons by Naresh Jain 54
  133. 133. Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 55
  134. 134. Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 55
  135. 135. Writing Good Acceptance Tests Login Test Possibilities 1. 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 Possibilities 1. 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 Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) 2. Open a browser to the URL http:// localhost/myapp Avoid 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 Tests Avoid 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 Solution Add user to system: (’wallace’, ‘ilikecheeze’) Process login with username ‘wallace’ and password ‘blah’ Check login failed Process login with username ‘wallace’ and password ‘ilikecheeze’ Check login succeeded Licensed Under Creative Commons by Naresh Jain 58
  146. 146. Tools Licensed Under Creative Commons by Naresh Jain 59
  147. 147. Tools Commercial Tools WinRunner TestPartner EggPlant Silk QTP TestComplete RFT Squish WindowTester Are 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/JBehave Among the few tools that support Test Driven Development Licensed Under Creative Commons by Naresh Jain 61
  149. 149. Wiki Licensed Under Creative Commons by Naresh Jain 62
  150. 150. Wiki What is it? A collaborative web site Editable by any Created by Ward Cunningham Every project should have one http://c2.com/wiki http://en.wikipedia.com Licensed Under Creative Commons by Naresh Jain 63
  151. 151. Wiki Creating Tests Use Wiki syntax to create a page with test tables Label the page as a Test Page Use a page name of the form Test… Turn on the Test property Make sure your Fixtures are in the classpath Use !path widget Mechanics !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 Suites Set 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 execution Use 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 Session Conference Proposal Submission Portal Some 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 author's name Licensed Under Creative Commons by Naresh Jain 66
  154. 154. Break Licensed Under Creative Commons by Naresh Jain 67
  155. 155. Patterns Licensed Under Creative Commons by Naresh Jain 68
  156. 156. Patterns Organizing Tests Allowing customers to add new tests without breaking the build Licensed Under Creative Commons by Naresh Jain 69
  157. 157. Patterns Version Control Keeping the acceptance test in version control with the code. Licensed Under Creative Commons by Naresh Jain 70
  158. 158. Patterns Cross-Functional Pairing Using FitNesse based acceptance tests for collaboration between cross- functional team members. Licensed Under Creative Commons by Naresh Jain 71
  159. 159. Patterns ATDD Acceptance Test Driven Development Licensed Under Creative Commons by Naresh Jain 72
  160. 160. Patterns CSTT Cleanup, Setup, Test, Teardown Licensed Under Creative Commons by Naresh Jain 73
  161. 161. Patterns Independent Tests Tests 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 Stubbing Avoiding complications of external systems. Licensed Under Creative Commons by Naresh Jain 75
  163. 163. Patterns Non-Production Setup/Teardown Using 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 Levels Creating different levels of suites depending on the depth/level of feedback desired. Smoke, Current Iteration/Sprint, Regression Licensed Under Creative Commons by Naresh Jain 77
  165. 165. Patterns DRY Using !include to avoid repeating yourself. Licensed Under Creative Commons by Naresh Jain 78
  166. 166. Patterns Make it Real Write ATs as close as possible to the real environment. Licensed Under Creative Commons by Naresh Jain 79
  167. 167. Patterns Fixture Evolution Allow 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/Story Every story should have at least one acceptance test Avoid long/multipurpose tests. Licensed Under Creative Commons by Naresh Jain 81
  169. 169. Anti-Patterns Licensed Under Creative Commons by Naresh Jain 82
  170. 170. Anti-Patterns Developer ATs Developers writing acceptance tests by themselves, for themselves. Licensed Under Creative Commons by Naresh Jain 83
  171. 171. Anti-Patterns Unit Testing Don’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 Tool Hard to write tests up front. Perhaps only on large projects. Licensed Under Creative Commons by Naresh Jain 85
  173. 173. Anti-Patterns Silver Bullet Trying 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 After Writing tests after the code is already written. Licensed Under Creative Commons by Naresh Jain 87
  175. 175. Anti-Patterns Hidden Test Data Hiding test data in the fixtures. Licensed Under Creative Commons by Naresh Jain 88
  176. 176. Anti-Patterns Implementation Dependent ATs Making test pages (tables) dependent on implementation details and data structures. Licensed Under Creative Commons by Naresh Jain 89
  177. 177. Anti-Patterns Logging in Your Fixtures Putting log statements or print statements in the fixture code. Fixtures are probably too complicated. Licensed Under Creative Commons by Naresh Jain 90
  178. 178. Reference Portions of this presentation is adopted from Micah Martin’s Introduction to Automated Acceptance Tests Presentation Kent Beck, Test Driven Development By Example. "Agile Testing Directions" - Brian Marick http://www.opensourcetesting.org/ Licensed Under Creative Commons by Naresh Jain 91
  179. 179. The End Questions? naresh@agilefaqs.com http://blogs.agilefaqs.com Licensed Under Creative Commons by Naresh Jain 92
  • RamyaDevatha

    Oct. 19, 2020
  • MominAbrar2

    Sep. 14, 2020
  • jungjin4

    May. 23, 2020
  • YuhangZhao5

    Sep. 5, 2019
  • HaoChen13

    Apr. 21, 2019
  • ruben_pena

    Mar. 14, 2019
  • DuhnoOleksandr

    Aug. 5, 2018
  • HoaTruongHuu

    Jul. 3, 2018
  • TaehoonKim116

    Jun. 10, 2018
  • xiaoliang34

    Aug. 5, 2017
  • GSD123

    Jul. 20, 2017
  • rrangans

    May. 16, 2017
  • up1

    Feb. 15, 2017
  • ColinAdams7

    Nov. 26, 2016
  • PraweenaSriprayoonsakul

    Nov. 23, 2016
  • HerlinaMaria1

    Nov. 22, 2016
  • SrgioMarcelodaSilvaG

    Nov. 7, 2016
  • awebspyder

    May. 24, 2016
  • AmelBenazza

    Mar. 29, 2016
  • YuvarajMohitePMP

    Nov. 13, 2015

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.

Views

Total views

94,012

On Slideshare

0

From embeds

0

Number of embeds

7,013

Actions

Downloads

3,673

Shares

0

Comments

0

Likes

101

×