acceptance criteria 12
defined, 12
explained, 95
feature acceptance criteria, 45–46
story acceptance criteria, 52
acceptance tests 20–21
acceptance criteria 12 See acceptance criteria
agile principles, 20–21
anti-missile acceptance test, 276
automated acceptance tests, 35–36, 89–90
Bad Customer ID test, 90
blocks 213
change issues, 213
explained, 212
monads, 212
risks, 214
unavailable customers, 213
breaking up stories with, 95–96
as bug reports, 201–202
production bugs, 202
regression testing, 202
root cause analysis, 201–202
business capabilities, 172–178
business rules 96 See business rules
Card Processor Charges Matches Rental Charges test, 105
case studies 263 See case studies
CD Already Rented test, 84
CD Limit Reached and Late Rental test, 88
CD Limit Reached test, 85–86
Charge Submitted During Check-In test, 108
Charges Agree with Transfer test, 104
Check-In CD test 100
business rules, 100
creating, 101
Cucumber framework, 297
Fit framework, 286–287
relationships, 165
Robot framework, 295–296
Slim—Cucumber Style framework, 291
Slim—Table Style framework, 288–290
story map of activities, 113–114
Check-Out CD test 296–297
Cucumber framework, 296–297
Fit framework, 284–285
Robot framework, 295
Slim—Cucumber Style framework, 291
Slim—Table Style framework, 288–289
context 70 See context
control and observation points, 27
creating, 69–70
Current Late Rental When Renting test, 86
customer examples 275
acceptance test detail, 275
explained, 274
fuzzy acceptance tests, 274
data conversion projects, 170
database conversion projects, 170
decoupling user interface 131–133
explained, 131–133
separating user interface from service, 157–158
simplifying testing by, 136
developer acceptance tests 145–147
field display tests, 145–147
tabular display tests, 147–151
development review, 115–116
from charter to deliverable, 120–121
deployment plans, 120
quality attribute tests, 117–119
separating state from display, 116–117
usability testing, 116
workflow tests, 119–120
device testing, 254–255
events, 137–139
external interfaces 107–111
component tests, 107–111
creating acceptance tests for, 107
explained, 100–108
system context, 112–113
test doubles and mocks, 111–112
feedback, 18
importance of, 10–11
internal design from tests, 252–254
Invalid Card Response Is Charge Declined test, 110
lack of, 170–173
large systems, triads for, 167–169
lean principles, 20–21
legacy systems, 172
manual testing, 172
multi-level tests, 90–93
objectives, checking, 93–94
origin and development, 5–6
positive and negative testing, 26–27
post-implementation tests, 17–18
power of three, 277
preimplementation tests, 19–20
process, 210
project charters, 39–42
relationships 167
alternative representations, 167
entities and, 161–163
explained, 161
multiple relationships, 163–165
requirements 275
constraints, 275
decoupling, 276
defined, 275
documenting, 275–276
explained, 27–28
high-level requirements, 42–46
separation of issues, 276–277
user interfaces as part of requirements process, 255
risks, 214
role in overall development process, 209–212
scenarios, 57
conceptual flow, 65
scenario handling, 178–179
story maps, 63–64
separation of issues 194 See separation of issues
service provider tests 155–156
comparing implementations, 155–156
explained, 151
interface, 151–154
quality attribute tests, 155
states 142–144
internal states, 142–144
state tables, 139–142
state transitions, 139–142
transient or persistent states, 144
stories 52
acceptance criteria, 52
breaking down features into stories, 48
cross-story issues, 88
customer terms, 54
developing, 51
explained, 47–48
INVEST criteria, 55–56
persona, 50–51
role attributes, 49–50
roles, 49
size of, 53–54
story estimates, 52
use cases, 57–63
success stories, 324–332
tables with, 298–300
test evaluation 193
confirming environment, 193
fragility, 192–194
idempotence, 192
implementation issues, 197
points to remember, 197–198
separation of concerns, 194–195
spell checking, 192
test failure, 195
test redundancy, 196–197
test sequence, 193–194
understandability to customers, 191–192
test exercises 310–313
calculator test exercise, 310–313
Sam’s CD Rental exercise, 314
triangle exercise, 314
test frameworks 296
Cucumber, 296
explained, 283
Fit, 284
Robot, 295
Slim—Cucumber Style framework, 291
Slim—Table Style, 286–284
websites, 298
test platforms, 251–252
test presentation 187
complex data, 187
custom table forms, 188
customer understood tables, 183–185
specifying multiple actions, 185–187
tables versus text, 185
test scripts, 31–33
test setup 259–260
ameliorating potential problems, 259–260
common setup, 257–259
persistent storage issues, 260–261
test order, 260
test structure 75–76
action tables, 75–76
calculation tables, 73–74
data tables, 74–75
explained, 71–73
testing layers, 210–211
testing matrix, 23–24
testing process, 37
testing systems with random events, 277
types of tests, 23–25
tests for business rules, 86
tests for exception scenarios, 83–87
tests with example values, 76–78
tests with values in text, 78
user interface tests, 33–34, 93
uses of 200
breaking down stories, 200
degree of doneness, 199
developer stories, 200
estimation aid, 200
workflows, improving, 178–181
xUnit tests, 34–35
action tables, 75–76
activities, story map of, 113–114
Acuminous Ltd., 326
Adzic, Gojko, 6
“The Agile Manifesto,” 20
agile principles, 20–21
agileartisans.com, 327
airline industry 252
conversion to SHARES reservation system, 252
ubiquitous language, 207
Allowed to Reserve business rule, 126
separation of issues, 126–127
simplified rule, 128
allowedToReserve() method, 253–254
ameliorating potential problems, 259–260
Angelou, Maya, 83
anti-missile acceptance test, 276
applications, determining applications to run on server, 244–248
assigning business value, 280–281
Atwood, Margaret, 1
auto mileage displays, 18
automated acceptance tests, 35–36, 89–90
Bad Customer ID test, 90
Bain, Scott, 27
BDD (behavior-driven development), 5
behavior-driven development (BDD), 5
benefits to acceptance testing, 2, 214–215
Berra, Yogi, 29
big picture test, 227–228
black box testing, 255–256
blocks to acceptance testing 213
change issues, 213
explained, 212
monads, 212
risks, 214
unavailable customers, 213
boundary value analysis, 255
breaking down tests, 264–269
disallowed domain tests, 268–269
domain breakdown tests, 266–268
local-part validation, 265–266
tests to ensure connection, 269
verification tests, 269
breaking up stories with acceptance tests, 95–96, 200
Browning, Elizabeth Barrett, 23
Buffett, Warren, 172
bug reports 201–202
acceptance tests as, 201–202
production bugs, 202
regression testing, 202
root cause analysis, 201–202
Burger King, off-menu ordering, 178–179
business capabilities, 172–178
business rules 96–100
business rule tests, 96–100
Check-In CD test, 100
example of, 29–31
exposing, 178
reusable business rules, 158–159
separation of issues, 125–128
tests for, 86
business value 281
business value charts, 281
developer stories, 281–282
estimating, 280–281
explained, 279–280
sources of, 279
tracking, 223
calculation tables, 73–74
calculator test exercise, 310–313
Cann, Richard, 229
Cannan, Dawn, 324
Card Processor Charges Matches Rental Charges test, 105
Carroll, Lewis, 6
case studies 263–264
e-mail addresses case study, 263–264
breaking down tests, 264–269
disallowed domain tests, 268–269
domain tests, 266–268
local-part validation, 265–266
tests to ensure connection, 269
verification tests, 269
highly available platform 243
context for switching servers, 243
test for switching servers, 244
test for technical rule, 246–248
library print server case study 235–236
context, 235–236
workflow test, 236–241
retirement contributions case study 227–228
big picture test, 227–228
business value tracking, 223
context, 219–220
event table, 228
exception: discrepancies less than a dollar, 223–224
exception: missing participant, 225
main course test, 220–222
state transitions, 228–230
two simultaneous exceptions, 225–227
signal processing case study 229
context, 229
developer tests, 233
sound levels, 229–232
case tests, 255
category-based rental fees 296
Cucumber framework, 296–297
Fit framework, 287
Robot framework, 295–296
Slim—Cucumber Style framework, 291
Slim—Table Style framework, 287–291
CD Already Rented test, 84
CD Limit Reached and Late Rental test, 88
CD Limit Reached test, 85–86
CD rental example 75
action tables, 75–76
Allowed to Reserve business rule, 126
separation of issues, 126–127
simplified rule, 128
allowedToReserve() method, 253–254
Bad Customer ID test, 90
calculation tables, 73–74
Card Processor Charges Matches Rental Charges test, 105
CD Already Rented test, 84
CD Limit Reached and Late Rental test, 88
CD Limit Reached test, 85–86
CD rental limit reached, 185–187
Charge Submitted During Check-In test, 108
Charges Agree with Transfer test, 104
Check-In CD test 100
business rules, 100
creating, 101
Cucumber framework, 297
Fit framework, 286–287
relationships, 165
Robot framework, 295–296
Slim—Cucumber Style framework, 291
story map of activities, 113–114
Check-Out CD test 76–78
creating, 76–78
Cucumber framework, 296–297
Fit framework, 284–285
Robot framework, 295
Slim—Cucumber Style framework, 291
Slim—Table Style framework, 288–289
Check-Out screen, 93
Current Late Rental When Renting test, 86
customer terms, 54
customer understood tables, 183–185
data tables, 74–75
development review, 115–116
from charter to deliverable, 120–121
deployment plans, 120
quality attribute tests, 117–119
separating state from display, 116–117
usability testing, 116
discount calculation 35–36
automated acceptance tests, 35–36
content diagram, 34
explained, 29–31
overall test, 36–37
test script, 35–36
xUnit test, 34–35
display for reservation allowed, 132–134
events, 137–139
exercises, 314
feature acceptance criteria, 45
features list, 44
field display tests, 145–147
Invalid Card Response Is Charge Declined test, 110
people, 13
persona, 51
post-implementation tests, 17–18
preimplementation tests, 19–20
relationships 167
alternative representations, 167
entities and, 161–163
explained, 161
multiple relationships, 163–165
rental counts, computing, 130
rental fees. 96–100 See rental fees
rental history, 128–130
rental sequence, 113
role attributes, 50
roles, 49
service provider tests 155–156
comparing implementations, 155–156
explained, 153
interface, 153–154
quality attribute tests, 155
states 142–144
internal states, 142–144
state tables, 139–142
state transitions, 139–142
transient or persistent states, 144
stories, 51
story acceptance criteria, 52
Submit Charge story, 100–108
system, 11–13
tabular display tests, 147–151
use cases from user stories, 57–63
ZIP code lookup, 151–156
change issues, 213
Charge Rentals story, 95
Charge Submitted During Check-In test, 108
Charges Agree with Transfer test, 104
charters, 39–42
charts, business value charts, 281
Check-In CD test 100
business rules, 100
creating, 101
Cucumber framework, 297
Fit framework, 286–287
relationships, 165
Robot framework, 295–296
Slim—Cucumber Style framework, 291
Slim—Table Style framework, 288–290
story map of activities, 113–114
checking 93–94
objectives, 93–94
spelling, 192
Check-Out CD test 76–78
creating, 76–78
Cucumber framework, 296–297
Fit framework, 284–285
Robot framework, 295
Slim—Cucumber Style framework, 291
Slim—Table Style framework, 288–289
Check-Out screen, 93
Cicero, 131
Codebetter.com, 330
Cohen, Leonard, 183
Cohn, Mike, 200
common test setup, 257–259
comparing implementations, 155–156
complex data, 187
component tests 25
for external interfaces, 107–111
conceptual flow, 65
confirming environment, 193
connections, tests to ensure connection, 269
Constantine, Larry, 276
context 70
context diagrams, 70
e-mail addresses case study, 263–264
highly available platform, 243
library print server case study, 235–236
retirement contributions case study, 219–220
signal processing case study, 229
system context, 112–113
continuity, 207
control points, 27
conversion projects 307–310
currency conversion example 307–310
acceptance test approach, 307–310
test-driven approach, 306–307
unit tests, 306–307
data conversion, 170
database conversion, 170
Cooper, Ian, 330
Coplien, Jim, 6
copying files, 314
Cresswell, Stephen, 326
cross-story issues, 88
Cucumber framework, 296
currency conversion example 305
context, 305
test-driven approach, 306–307
unit tests, 306–307
Current Late Rental When Renting test, 86
custom table forms, 188
customers 275
customer examples 275
acceptance test detail, 275
explained, 274
fuzzy acceptance tests, 274
customer terms, 54
customer understood tables, 183–185
customer understood tests, 191–192, 211
customer unit, 16
data tables, 187
unavailable customers, 213
data conversion projects, 170
database conversion projects, 170
DDD (domain-driven design), 5
overlapping domains, 207
ubiquitous language, 205–207
decision table testing, 256
decoupling user interface 276
decoupling requirements, 276
explained, 131
separating user interface from service, 157–158
simplifying testing by, 136
degree of doneness, 199
delta, 260
deployment plans, 120
determining applications to run on server, 244–248
developer acceptance tests 145–147
field display tests, 145–147
signal processing case study, 233
tabular display tests, 147–151
developer stories, 200, 281–282
developer unit, 16
development of acceptance testing, 5–6
development process 9–10
explained, 9–10
role of acceptance tests in, 209–212
development review, 115–116
from charter to deliverable, 120–121
deployment plans, 120
quality attribute tests, 117–119
separating state from display, 116–117
usability testing, 116
workflow tests, 119–120
device testing, 254–255
Dijkstra, Edsger, 191
disallowed domain tests, 268–269
discount business rules, 299–301
discount calculation 35–36
automated acceptance tests, 35–36
content diagram, 34
explained, 29–31
overall test, 36–37
test script, 31–33
xUnit test, 34–35
discrepancies, handling in retirement contributions case study, 223–224
documenting 201–202
bugs with acceptance tests, 201–202
requirements, 275–276
with use cases, 63
documents, printing to print queue (workflow), 237–238
domain tests 268–269
disallowed domain tests, 268–269
domain breakdown tests, 266–268
domain-driven design 5 See DDD (domain-driven design)
domains, overlapping, 207
doneness, degree of, 199
DRY (Don’t Repeat Yourself) principle, 259
Dyer, Wayne, 100
EATDD (executable acceptance test-driven development), 5
EDD (example-driven development), 5
e-mail addresses case study 264–269
breaking down tests, 264–269
context, 263–264
disallowed domain tests, 268–269
domain tests, 266–268
local-part validation, 265–266
tests to ensure connection, 269
verification tests, 269
embedded technical projects, 283
ensuring connections, 269
entities and relationships, 161–163
environment, confirming, 193
EnvisionWare, 235
equivalence partitioning, 255
estimating business value, 280–281
estimation aid, 200
evaluating tests 193 See test evaluation
Evans, Eric, 5
events 137–139
explained, 137–139
retirement contributions case study, 220, 228
example-driven development (EDD), 5
example values, tests with, 76–78
exceptions 223–224
retirement contributions case study 223–224
discrepancies less than a dollar, 223–224
missing participant, 225
two simultaneous exceptions, 225–227
scenario handling, 178–179
tests for exception scenarios, 83–87
executable acceptance test-driven development (EATDD), 5
exercises 311–313
calculator test exercise, 311–313
file copying exercise, 314
Sam’s CD Rental exercise, 314
triangle exercise, 314
expected output, 220
exploratory tests, 24
exposing business rules for testing, 178
external constraints, 275
external interfaces, 100–108
component tests, 108–111
creating acceptance tests for, 107
system context, 112–113
test doubles and mocks, 111–112
failure of tests, 195
Feather, Michael, 172
feature acceptance criteria, 45–46
features list 48
breaking down into stories, 48
explained, 42–44
feedback, 18
field display tests, 145–147
file copying exercise, 314
Fit framework 287
category-based rental fees, 287
Check-In CD, 286–287
Check-Out CD, 284–285
explained, 284
setup, 284
FitNesse, 276
forms, custom table forms, 188
fragility of tests, 192–194
frameworks 296 See test frameworks
fuzzy acceptance tests, 274
Gaye, Marvin, 299
Grozier Technical Systems, 229
headers for Slim—Table Style framework, 288
high-level requirements 42–46
explained, 42–46
feature acceptance criteria, 45–46
features list, 42–44
highly available platform 243
context for switching servers, 243
test for switching servers, 244
send alert to administrator, 245–246
server goes down, 245
test for technical rule, 244–248
Honda Insight charter objectives, 41
Hunter, Ivy, 299
idempotence, 192
identity, 206
implementation issues 155–156
comparing implementations, 155–156
retirement contributions case study, 222
and test evaluation, 197
importance of acceptance testing, 10–11
improving workflows, 178–181
independence of stories, 55
internal constraints, 275
internal design from tests, 252–254
internal states, 142–144
Invalid Card Response Is Charge Declined test, 110
INVEST criteria, 55–56
issues, separation of, 194–195, 276–277
Johnson, Samuel, 95
Kennedy, Robert, 209
Kerievsky, Joshua, 5
King, Carole, 243
Knuth, Donald, 263
Koskela, Lasse, 6
lack of acceptance tests, 170–173
language, ubiquitous, 205–207
large systems, triads for, 167–169
Le Van, Gabriel, 325
lean principles, 20–21
legacy systems, 172
Leq (equivalent continuous sound level), 229–232
library print server case study 235–236
context, 235–236
workflow test, 236–241
workflow for printing jobs from print queue, 239–241
workflow of printing two documents to print queue, 237–238
local-part validation, 265–266
Lovasik, Lawrence G., 199
main course test (retirement contributions case study) 220
events, 220
expected output, 220
implementation issues, 222
separation of concerns, 222
setup, 220–221
manifestations, 275
manual testing, 172
Marcos, Gary, 332
Marick, Brian, 5
Martin, Micah, 276
Martin, Robert, 276
Maslow, Abraham, 299
McDonald’s, off-menu ordering, 179
McNelly, Greg, 331
measurability of objectives, 43
methods, allowedToReserve(), 253–254
mileage displays in autos, 18
missing participants, handling in retirement contributions case study, 225
mocks, 111–112
Model-View-Controller pattern, 253
module tests, 211
monads, 212
money 307–310
currency conversion example 307–310
acceptance test approach, 307–310
context, 305
test-driven approach, 306–307
problems with, 305
multi-level tests, 90–93
multiple actions, specifying, 185–187
multiple relationships, 163–165
Murray, Bill, 14
negative testing, 26–27
negotiability of stories, 55
Newbury, Mickey, 137
North, Dan, 5
objectives 93–94
checking, 93–94
of project charters, 40–42
observation points, 27
Once and Only Once Principle, 259
order of tests, 260
overlapping domains, 207
partitions, equivalence partitioning, 255
passionatetester.com, 324
Patanjali, 39
patterns, Model-View-Controller, 253
persistent states, 144
persistent storage issues, 260–261
persona, 50–51
platforms (test), 251–252
Poppendieck, Mary, 20
Poppendieck, Tom, 20
positive testing, 26–27
post-implementation tests, 17–18
preimplementation tests, 19–20
print queue 239–241
printing jobs from (workflow), 239–241
printing multiple documents to (workflow), 237–238
process, 210
production bugs, 202
Progressive Insurance, 330–331
project charters, 39–42
quality attribute requirements, 303–304
quality attribute tests, 117–119, 155
random events, testing systems with, 277
redundancy of tests, 196–197
regression testing, 202
Reinertsen, Don, 11
relationships 167
alternative representations, 167
entities and, 161–163
explained, 161
multiple relationships, 163–165
relative results, 260
relative story placement, 280
relative story values, 280
rental counts, computing, 129–130
rental fees 96–100
business rule tests, 96–100
category-based 296 See category-based rental fees
rental rates table, 304
table of, 97–99
tables versus text, 185
rental history, 128–130
rental sequence, 113
requirements 275
constraints, 275
decoupling, 276
defined, 275
documenting, 275–276
explained, 27–28
high-level requirements, 42–46
feature acceptance criteria, 45–46
features list, 42–44
quality attribute requirements, 303–304
requirements tables, 300–303
separation of issues, 276–277
user interfaces as part of requirements process, 255
results, relative, 260
retirement contributions case study 227–228
big picture test, 227–228
business value tracking, 223
context, 219–220
event table, 228
exception: discrepancies less than a dollar, 223–224
exception: missing participant, 225
main course test 220
events, 220
expected output, 220
implementation issues, 222
separation of concerns, 222
setup, 220–221
state transitions, 228–230
two simultaneous exceptions, 225–227
reusable business rules, 158–159
Richardson, Jared, 327
risks, 214
Robot framework, 295
category-based rental fees, 296
Check-In CD test, 296
Check-Out CD test, 295
setup, 295
roles 49
explained, 49
role attributes, 49–50
root cause analysis, 201–202
rules 96 See business rules
Sabre reservation system, 252
Sam’s CD Rental 75 See CD rental example
Satir, Virginia, 213
scenarios, 57
conceptual flow, 65
Slim—Cucumber Style framework scenario library, 291–294
story maps, 63–64
tests for exception scenarios, 83–87
use cases from user stories, 57–63
SDD (story test-driven development), 5
separation of issues, 194–195, 276–277
Allowed to Reserve business rule example, 125–128
rental history example, 128–130
retirement contributions case study, 222
separating user interface from service, 157–158
sequence of tests, 193–194
servers, switching 243
context, 243
determining applications to run on server, 244–248
test for, 244
send alert to administrator, 246–244
server goes down, 245
service provider tests 155–156
comparing implementations, 155–156
explained, 151
interface, 151–154
quality attribute tests, 155
services, separating user interface from, 157–158
setup 284
Fit framework, 284
retirement contributions case study, 220–221
Robot framework, 295
Slim—Cucumber Style framework, 291–292
Slim—Table Style framework, 287–291
Shalloway’s Law, 259
SHARES reservation system, 252
Shaw, George Bernard, 205
Shore, Jim, 42
signal processing case study 229
context, 229
developer tests, 233
sound levels, 229–232
simultaneous exceptions, 225–227
size of stories, 53–56
Slim—Cucumber Style framework, 291
category-based rental fees, 291
Check-In CD test, 291
Check-Out CD test, 291
scenario library, 291–294
setup, 291
Slim—Table Style framework, 287–291
category-based rental fees, 291
Check-In CD test, 288–290
Check-Out CD test, 288–289
header, 288
setup, 288
SMART, 40
software development, 9–10
sound levels, signal processing case study, 229–232
specifying multiple actions, 185–187
speed of feedback, 18
spell checking, 192
states 142–144
internal states, 142–144
separating state from display, 116–117
state tables, 139–142
state transitions, 139–142
retirement contributions case study, 228–230
state transition testing, 255
transient or persistent states, 144
Stevenson, William, 299
stories 52
acceptance criteria, 52
breaking down features into stories, 48
breaking up with acceptance tests, 95–96, 200
business rules 96 See business rules
business value 281 See business value
cross-story issues, 88
customer terms, 54
developer stories, 200, 281–282
developing, 51
explained, 47–48
INVEST criteria, 55–56
persona, 50–51
relative story placement, 280
relative story values, 280
roles 49
explained, 49
role attributes, 49–50
size of, 53–54
story estimates, 52
use cases, 57–63
story test-driven development (SDD), 5
Submit Charge story, 100–108
success stories, 324–332
switching servers 243
context, 243
determining applications to run on server, 244–248
test for, 244
send alert to administrator, 245–246
server goes down, 245
tables 75–76
action tables, 75–76
calculation tables, 73–74
customer understood tables, 183–185
event tables, 137–139
quality attribute requirements, 303–304
requirements tables, 300–303
state tables, 139–142
tabular display tests, 147–151
user interface tests with, 299–300
tabular display tests, 147–151
TDD (test-driven development), 6
technical projects, 283
technical rules, test for, 244–248
test doubles, 111–112
test-driven approach, 306–307
Test-Driven Development by Example (Beck), 305
test-driven development (TDD), 6
test evaluation 193
confirming environment, 193
fragility, 192–194
idempotence, 192
implementation issues, 197
points to remember, 197–198
separation of concerns, 194–195
spell checking, 192
test failure, 195
test redundancy, 196–197
test sequence, 193–194
understandability to customers, 191–192
test failure, 195
test frameworks 296
Cucumber, 296
explained, 283
Fit, 284
category-based rental fees, 287
Check-In CD, 286–287
Check-Out CD, 284–285
setup, 284
Robot, 295
category-based rental fees, 296
Check-In CD test, 296
Check-Out CD test, 295
setup, 295
Slim—Cucumber Style framework, 291
category-based rental fees, 291
Check-In CD test, 291
Check-Out CD test, 291
scenario library, 291–294
setup, 291
Slim—Table Style, 287–291
Check-In CD test, 288–290
Check-Out CD test, 288–289
header, 288
setup, 288
Slim—Table Style framework, 287–291
websites, 298
test platforms, 248–252
test presentation 187
complex data, 187
custom table forms, 188
customer understood tables, 183–185
specifying multiple actions, 185–187
tables versus text, 185
test redundancy, 196–197
test scripts, 31–33
test sequence, 193–194
test setup 259–260
ameliorating potential problems, 259–260
common setup, 257–259
persistent storage issues, 260–261
test order, 260
testability of stories, 57
testing layers, 210–211
testing matrix, 23–24
testing systems with random events, 277
testing unit, 16
tests 255–256
acceptance tests 20 See acceptance tests
black box testing, 255–256
manual testing, 172
modules tests, 211
post-implementation tests, 17–18
preimplementation tests, 19–20
quality attribute tests, 117–119
regression testing, 202
unit tests 25
limitations, 88
workflow tests, 119–120
xUnit tests, 34–35
time periods, calculating, 99
tracking business value, 223
transient states, 144
triads 15–16
explained, 15–16
triads for large systems, 167–169
triangle exercise, 314
types of tests, 23–25
ubiquitous language, 205–207
unavailable customers, 213
unit tests 25
limitations, 88
use cases from user stories, 57–63
user interfaces 107
decoupling 276 See decoupling user interface
external interfaces 107
creating acceptance tests for, 107
explained, 100–108
system context, 112–113
as part of requirements process, 255
user interface tests, 33–34, 93
uses of acceptance tests 200
breaking down stories, 200
degree of doneness, 199
developer stories, 200
estimation aid, 200
validation, local-part, 265–266
value of stories, 55
verification tests, 269
Visual Hospital Touchscreen Solution, 325
Wake, Bill, 55
Walsh, Rob, 235
websites, test framework websites, 298
Weinberg, Jerry, 277
West, Mae, 257
Wilde, Oscar, 161
workflows 178–181
improving, 178–181
workflow tests, 119–120
library print server case study, 236–241
test sequence, 193–194
xUnit tests, 34–35
ZIP code lookup, 151–156
3.12.166.131