Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 1 (more)

Acceptance Test Driven Development

From nashjain, 3 months ago

Acceptance test driven development tutorial. This tutorial explain more

3113 views  |  1 comment  |  1 favorite  |  119 downloads  |  1 embed (Stats)
 

Groups/Events

Not added to any group/event

 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 3113
on Slideshare: 3107
from embeds: 6* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Acceptance Test Driven Development Naresh Jain naresh@agilefaqs.com Licensed Under Creative Commons by Naresh Jain 1

Slide 2: Tutorial Schedule Brainstorming Overview about Acceptance Criteria and Tests Demo Some more exercises Overview of Tools Details look at Fit, FitNesse and FitLibrary Hands on Session Patterns and Anti Patterns Questions welcomed all the time Licensed Under Creative Commons by Naresh Jain 2

Slide 3: Welcome Licensed Under Creative Commons by Naresh Jain 3

Slide 4: Welcome Continuum Licensed Under Creative Commons by Naresh Jain 3

Slide 5: Welcome Continuum Hopes and Concerns Licensed Under Creative Commons by Naresh Jain 3

Slide 6: Warmup Scenarios Licensed Under Creative Commons by Naresh Jain 4

Slide 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? Licensed Under Creative Commons by Naresh Jain 4

Slide 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) Licensed Under Creative Commons by Naresh Jain 4

Slide 9: 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 4

Slide 10: 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 4

Slide 11: 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 4

Slide 12: 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 4

Slide 13: Acceptance Criteria and Tests: Definition Licensed Under Creative Commons by Naresh Jain 5

Slide 14: Acceptance Criteria & Tests: Definition Acceptance Criteria Are a set of conditions that the Story must meet for it to be accepted as complete Are typically provided by the customer or product owner. Are not a replacement for conversation. Are one of the results of the conversation Acceptance Criteria are NOT tests Licensed Under Creative Commons by Naresh Jain 6

Slide 15: 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] Licensed Under Creative Commons by Naresh Jain 7

Slide 16: Acceptance Criteria & Tests: Definition Acceptance Tests Licensed Under Creative Commons by Naresh Jain 8

Slide 17: Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria Licensed Under Creative Commons by Naresh Jain 8

Slide 18: Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria + Licensed Under Creative Commons by Naresh Jain 8

Slide 19: Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria + Examples (data + scenarios) Licensed Under Creative Commons by Naresh Jain 8

Slide 20: Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria + Examples (data + scenarios) Acceptance Tests Licensed Under Creative Commons by Naresh Jain 8

Slide 21: Demo Roman Numerals to Decimal Conversion Example Licensed Under Creative Commons by Naresh Jain 9

Slide 22: Acceptance Criteria and Tests: A Critical Piece of Agile Licensed Under Creative Commons by Naresh Jain 10

Slide 23: 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 11

Slide 24: Key Questions Business Facing Are we building the right product? Are we building the product right? Technology Facing Licensed Under Creative Commons by Naresh Jain 12

Slide 25: Brian Marick’s Test Categorization Business Facing Supports Programming Critique product Technology Facing Licensed Under Creative Commons by Naresh Jain 13

Slide 26: Brian Marick’s Test Categorization Business Facing Supports Programming Acceptance Testing Exploratory Testing Critique product Low-fi prototypes UI and Usability Testing Unit Testing Performance Testing Technology Facing Licensed Under Creative Commons by Naresh Jain 14

Slide 27: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach May 1 Jul 1 Sep 1 Nov 1 Analysis Test Implementation Design Licensed Under Creative Commons by Naresh Jain 15

Slide 28: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Licensed Under Creative Commons by Naresh Jain 16

Slide 29: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Acceptance Criteria Licensed Under Creative Commons by Naresh Jain 16

Slide 30: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Acceptance Criteria Licensed Under Creative Commons by Naresh Jain 16

Slide 31: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Iteration Acceptance Criteria Licensed Under Creative Commons by Naresh Jain 16

Slide 32: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Iteration Automated Acceptance Acceptance Criteria Tests Licensed Under Creative Commons by Naresh Jain 16

Slide 33: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Iteration Automated Acceptance Acceptance Criteria Tests Licensed Under Creative Commons by Naresh Jain 16

Slide 34: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Iteration Automated Acceptance Acceptance Criteria Tests Automated Acceptance Tests Licensed Under Creative Commons by Naresh Jain 16

Slide 35: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Iteration Automated Acceptance Acceptance Criteria Tests Automated Acceptance Tests Licensed Under Creative Commons by Naresh Jain 16

Slide 36: Acceptance Criteria & Tests: A Critical Piece of Agile The Agile Approach Iteration Automated Acceptance Acceptance Criteria Tests Automated Acceptance Acceptance Criteria Tests Licensed Under Creative Commons by Naresh Jain 16

Slide 37: Test Driven Development TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 17

Slide 38: Test Driven Development Add a Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 17

Slide 39: Test Driven Development Add a Test Run the Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 17

Slide 40: Test Driven Development Add a Test Pass Run the Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 17

Slide 41: Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 17

Slide 42: 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 17

Slide 43: 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 17

Slide 44: 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 17

Slide 45: 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 17

Slide 46: 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 17

Slide 47: 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 17

Slide 48: 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 17

Slide 49: 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 17

Slide 50: Mike Cohn’s Testing Pyramid Licensed Under Creative Commons by Naresh Jain 18

Slide 51: Mike Cohn’s Testing Pyramid GUI Tests Licensed Under Creative Commons by Naresh Jain 18

Slide 52: Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests Licensed Under Creative Commons by Naresh Jain 18

Slide 53: 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 18

Slide 54: 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 18

Slide 55: 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 18

Slide 56: 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 18

Slide 57: 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 19

Slide 58: Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 20

Slide 59: Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 20

Slide 60: Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 20

Slide 61: Why Acceptance Tests? Criteria for Completion Great Collaboration tool Source of Feedback Real data to measure progress Licensed Under Creative Commons by Naresh Jain 21

Slide 62: 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 22

Slide 63: Acceptance Tests Are Automated Licensed Under Creative Commons by Naresh Jain 23

Slide 64: 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 24

Slide 65: Licensed Under Creative Commons by Naresh Jain 25

Slide 66: Criteria for DONE Licensed Under Creative Commons by Naresh Jain 25

Slide 67: Criteria for DONE + Licensed Under Creative Commons by Naresh Jain 25

Slide 68: Criteria for DONE + Automated Licensed Under Creative Commons by Naresh Jain 25

Slide 69: Criteria for DONE + Automated Executable Specification Licensed Under Creative Commons by Naresh Jain 25

Slide 70: 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 26

Slide 71: Who Writes Acceptance Tests? Licensed Under Creative Commons by Naresh Jain 27

Slide 72: 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 28

Slide 73: 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 29

Slide 74: 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 30

Slide 75: Exercise #1 Licensed Under Creative Commons by Naresh Jain 31

Slide 76: 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 32

Slide 77: Writing Good Acceptance Tests Licensed Under Creative Commons by Naresh Jain 33

Slide 78: Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 34

Slide 79: Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 34

Slide 80: 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 34

Slide 81: 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 34

Slide 82: 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 34

Slide 83: Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 35

Slide 84: Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 35

Slide 85: 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 35

Slide 86: 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 35

Slide 87: 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 35

Slide 88: Writing Good Acceptance Tests Tests are Examples Use concrete examples Specify concrete behavior No ambiguity allowed Licensed Under Creative Commons by Naresh Jain 36

Slide 89: Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 37

Slide 90: Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 37

Slide 91: 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 37

Slide 92: 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 37

Slide 93: 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 37

Slide 94: Good Acceptable Criteria and Tests Licensed Under Creative Commons by Naresh Jain 38

Slide 95: Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite Licensed Under Creative Commons by Naresh Jain 38

Slide 96: 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 38

Slide 97: 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 38

Slide 98: 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 38

Slide 99: 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 38

Slide 100: Writing Good Acceptance Tests Avoid Implementation Details Tests UI System Database Licensed Under Creative Commons by Naresh Jain 39

Slide 101: 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 40

Slide 102: Tools Licensed Under Creative Commons by Naresh Jain 41

Slide 103: 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 42

Slide 104: Tools Open Source Options FIT Sahi Frankenstein FitNesse Watir SharpRobo Selenium Abbot RSpec/JBehave Among the few tools that support Test Driven Development Licensed Under Creative Commons by Naresh Jain 43

Slide 105: 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 44

Slide 106: Tools FitNesse Environment build around FIT Makes everything easier Created by Object Mentor, Inc. Open Source Licensed Under Creative Commons by Naresh Jain 45

Slide 107: 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 46

Slide 108: Thinking in Tables Licensed Under Creative Commons by Naresh Jain 47

Slide 109: Thinking in Tables Only Tables Execute Ignored Executed Licensed Under Creative Commons by Naresh Jain 48

Slide 110: 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 49

Slide 111: Thinking in Tables 3 Foundation Fixtures Column Fixture Row Fixture Action Fixture copyright (c) 2007 by Micah Martin & Naresh Jain. All rights reserved. Licensed Under Creative Commons by Naresh Jain 50

Slide 112: Thinking in Tables Column Fixture Licensed Under Creative Commons by Naresh Jain 51

Slide 113: Thinking in Tables Row Fixture Analogous to comparing against rows in a database table Licensed Under Creative Commons by Naresh Jain 52

Slide 114: 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 53

Slide 115: FitLibrary Extension to FIT Written by Rick Mugridge Adds some handy Fixtures Licensed Under Creative Commons by Naresh Jain 54

Slide 116: 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 55

Slide 117: FitLibrary DoFixture • Broken tables • Highly readable • Flexibility Licensed Under Creative Commons by Naresh Jain 56

Slide 118: Wiki Licensed Under Creative Commons by Naresh Jain 57

Slide 119: 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 58

Slide 120: 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 59

Slide 121: 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 60

Slide 122: 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 61

Slide 123: Break http://www.fitnesse.org Licensed Under Creative Commons by Naresh Jain 62

Slide 124: Patterns Licensed Under Creative Commons by Naresh Jain 63

Slide 125: Patterns Organizing Tests Allowing customers to add new tests without breaking the build Licensed Under Creative Commons by Naresh Jain 64

Slide 126: Patterns Version Control Keeping the acceptance test in version control with the code. Licensed Under Creative Commons by Naresh Jain 65

Slide 127: Patterns Cross-Functional Pairing Using FitNesse based acceptance tests for collaboration between cross- functional team members. Licensed Under Creative Commons by Naresh Jain 66

Slide 128: Patterns ATDD Acceptance Test Driven Development Licensed Under Creative Commons by Naresh Jain 67

Slide 129: Patterns CSTT Cleanup, Setup, Test, Teardown Licensed Under Creative Commons by Naresh Jain 68

Slide 130: 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 69

Slide 131: Patterns Dynamic Stubbing Avoiding complications of external systems. Licensed Under Creative Commons by Naresh Jain 70

Slide 132: 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 71

Slide 133: 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 72

Slide 134: Patterns DRY Using !include to avoid repeating yourself. Licensed Under Creative Commons by Naresh Jain 73

Slide 135: Patterns Make it Real Write ATs as close as possible to the real environment. Licensed Under Creative Commons by Naresh Jain 74

Slide 136: Patterns Fixture Evolution Allow Fixture implementation to evolve over time. Treat fixtures as first class citizens. Licensed Under Creative Commons by Naresh Jain 75

Slide 137: 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 76

Slide 138: Anti-Patterns Licensed Under Creative Commons by Naresh Jain 77

Slide 139: Anti-Patterns Developer ATs Developers writing acceptance tests by themselves, for themselves. Licensed Under Creative Commons by Naresh Jain 78

Slide 140: 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 79

Slide 141: Anti-Patterns QA Testing Tool Hard to write tests up front. Perhaps only on large projects. Licensed Under Creative Commons by Naresh Jain 80

Slide 142: 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 81

Slide 143: Anti-Patterns Test After Writing tests after the code is already written. Licensed Under Creative Commons by Naresh Jain 82

Slide 144: Anti-Patterns Hidden Test Data Hiding test data in the fixtures. Licensed Under Creative Commons by Naresh Jain 83

Slide 145: Anti-Patterns Implementation Dependent ATs Making test pages (tables) dependent on implementation details and data structures. Licensed Under Creative Commons by Naresh Jain 84

Slide 146: 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 85

Slide 147: 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 86

Slide 148: The End http://www.fitnesse.org Licensed Under Creative Commons by Naresh Jain 87