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.
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
ATDD - Acceptance Test Driven Development
1. Acceptance Test
Driven Development
Naresh Jain
naresh@agilefaqs.com
http://blogs.agilefaqs.com
Licensed Under Creative Commons by Naresh Jain
1
2. Warmup Scenarios
Licensed Under Creative Commons by Naresh Jain
2
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. 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. 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. 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. 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. 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. 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. 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. 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
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. 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. 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. 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. 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. 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. 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
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. 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. 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. Acceptance Criteria & Tests: Definition
Acceptance Tests
Licensed Under Creative Commons by Naresh Jain
11
35. Acceptance Criteria & Tests: Definition
Acceptance Tests
Acceptance Criteria
Licensed Under Creative Commons by Naresh Jain
11
36. Acceptance Criteria & Tests: Definition
Acceptance Tests
Acceptance Criteria
+
Licensed Under Creative Commons by Naresh Jain
11
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. 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. 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. 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. 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. 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. Demo
Roman Numerals to Decimal Conversion Example
Licensed Under Creative Commons by Naresh Jain
13
46. Demo
Real World Domain Forwarding Server
Licensed Under Creative Commons by Naresh Jain
14
48. Thinking in Tables
Only Tables Execute
Ignored
Executed
Licensed Under Creative Commons by Naresh Jain
16
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. Thinking in Tables
3 Foundation Fixtures
Column Fixture
Row Fixture
Action Fixture
Licensed Under Creative Commons by Naresh Jain
18
51. Thinking in Tables
Column Fixture
Licensed Under Creative Commons by Naresh Jain
19
52. Thinking in Tables
Row Fixture
Analogous to comparing
against rows in a
database table
Licensed Under Creative Commons by Naresh Jain
20
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
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. FitLibrary
DoFixture
• Broken tables
• Highly readable
• Flexibility
Licensed Under Creative Commons by Naresh Jain
24
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. 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. 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. Acceptance Criteria
and Tests:
A Critical Piece of Agile
Licensed Under Creative Commons by Naresh Jain
28
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. 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. Brian Marick’s Test Categorization
Business Facing
Supports Programming
Critique product
Technology/Implementation Facing
Licensed Under Creative Commons by Naresh Jain
31
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. 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. 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. 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. 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. Avatars of TDD
Business Facing
Drives Development
Critique product
Inside Out
Outside In
Technology/Implementation Facing
Licensed Under Creative Commons by Naresh Jain
33
71. Test Driven Development
Add a Test
TDD Rhythm - Test, Code, Refactor
Licensed Under Creative Commons by Naresh Jain
34
72. Test Driven Development
Add a Test
Run the Test
TDD Rhythm - Test, Code, Refactor
Licensed Under Creative Commons by Naresh Jain
34
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. 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. 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. 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. 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. 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. 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. 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. 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. 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
84. Acceptance Test Driven Development
Story
Licensed Under Creative Commons by Naresh Jain
35
85. Acceptance Test Driven Development
Acceptance
Criteria
Story
Licensed Under Creative Commons by Naresh Jain
35
86. Acceptance Test Driven Development
Iteration
Acceptance
Criteria
Story
Licensed Under Creative Commons by Naresh Jain
35
87. Acceptance Test Driven Development
Iteration
Automated
Acceptance Acceptance
Criteria Tests
Story
Licensed Under Creative Commons by Naresh Jain
35
88. Acceptance Test Driven Development
Iteration
Automated
Acceptance Acceptance
Criteria Tests
Story Automated
Unit Test
Licensed Under Creative Commons by Naresh Jain
35
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. 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. 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. 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. 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. Mike Cohn’s Testing Pyramid
Licensed Under Creative Commons by Naresh Jain
36
95. Mike Cohn’s Testing Pyramid
GUI
Tests
Licensed Under Creative Commons by Naresh Jain
36
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. 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. 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. 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. 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. 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. Acceptance Tests: A Critical Piece of Agile
Manual Acceptance Tests
Licensed Under Creative Commons by Naresh Jain
38
103. Acceptance Tests: A Critical Piece of Agile
Manual Acceptance Tests
Manual
Acceptance Tests
Licensed Under Creative Commons by Naresh Jain
38
104. Acceptance Tests: A Critical Piece of Agile
Manual Acceptance Tests
Manual
Acceptance Tests
Licensed Under Creative Commons by Naresh Jain
38
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. 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. Acceptance Tests Are
Automated
Licensed Under Creative Commons by Naresh Jain
41
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
112. Criteria for DONE
+ Automated
Licensed Under Creative Commons by Naresh Jain
43
113. Criteria for DONE
+ Automated
Executable Specification
Licensed Under Creative Commons by Naresh Jain
43
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
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. 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. 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
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
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. Writing Good Acceptance Tests
Login Test Possibilities
1. Direct browser to URL for login page
Licensed Under Creative Commons by Naresh Jain
52
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. 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. 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. Writing Good Acceptance Tests
Login Test Possibilities
1. Add some users to the system
Licensed Under Creative Commons by Naresh Jain
53
128. Writing Good Acceptance Tests
Login Test Possibilities
1. Add some users to the system
Licensed Under Creative Commons by Naresh Jain
53
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. 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. 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. 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. Writing Good Acceptance Tests
Login Test Possibilities
1. Insert into User table values (’wallace’,
‘ilikecheeze’)
Licensed Under Creative Commons by Naresh Jain
55
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. 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. 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. 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
139. Good Acceptable Criteria and Tests
S
- SPECIFIC - Explicitly defined and definite
Licensed Under Creative Commons by Naresh Jain
56
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. 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. 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. 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. 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. 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
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. 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
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. 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. 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. 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
156. Patterns
Organizing Tests
Allowing customers to add new tests without breaking the build
Licensed Under Creative Commons by Naresh Jain
69
157. Patterns
Version Control
Keeping the acceptance test in version control with the code.
Licensed Under Creative Commons by Naresh Jain
70
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. Patterns
ATDD
Acceptance Test Driven Development
Licensed Under Creative Commons by Naresh Jain
72
160. Patterns
CSTT
Cleanup, Setup, Test, Teardown
Licensed Under Creative Commons by Naresh Jain
73
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. Patterns
Dynamic Stubbing
Avoiding complications of external systems.
Licensed Under Creative Commons by Naresh Jain
75
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. 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. Patterns
DRY
Using !include to avoid repeating yourself.
Licensed Under Creative Commons by Naresh Jain
78
166. Patterns
Make it Real
Write ATs as close as possible to the real environment.
Licensed Under Creative Commons by Naresh Jain
79
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. 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
170. Anti-Patterns
Developer ATs
Developers writing acceptance tests by themselves, for themselves.
Licensed Under Creative Commons by Naresh Jain
83
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. 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. 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. Anti-Patterns
Test After
Writing tests after the code is already written.
Licensed Under Creative Commons by Naresh Jain
87
175. Anti-Patterns
Hidden Test Data
Hiding test data in the fixtures.
Licensed Under Creative Commons by Naresh Jain
88
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. 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. 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. The End
Questions?
naresh@agilefaqs.com
http://blogs.agilefaqs.com
Licensed Under Creative Commons by Naresh Jain
92