Index

Acceptance test-driven development (ATDD)

collaboration in, 51

in friendly test automation, 16266

gaps in, 149

successful, 18385

support codes and, 4950, 5960, 70

vs. TDD, 118

test automation and, 16266

Acceptance test suite, 11112, 147

Adzic, Gojko, 121, 148, 15455, 163, 187

Agile-friendly automation, 156, 161, 163, 177, 178, 193

Agile Software Development — Patterns, Principles, and Practices (Martin), 124

Agile Testing (Crispin and Gregory), 150

Airport Parking Lot test cases. See also individual headings

Automating Remaining Parking Lots test case, 4146

Parking Cost Calculator Workshop test case, 315

Valet Parking Automation test case, 1739

Alice’s Adventures in Wonderland (Carroll), 147

Alpha tests, 150, 151

Appelo, Jurgen, 150

Arrange-Act-Assert format, 136

ArrayFixture, 135

Automating Remaining Parking Lots test case, 4146

durationMap for, 4344

economy parking lot, 4445

economy parking lot examples, 4445

short-term parking lot, 4144

short-term parking lot examples, 4142

step definitions after generalizing, 42

summary, 46

Automation, 16168

collaboration on, 16466

domain discovery, 16667

domain-specific test language in, 162

keyword-driven, 13739

summary, 16768

test, developing, 17072

user-friendly, 16264

Behavior-driven development (BDD), 131, 13233, 187

Beta tests, 150, 151

Boundary conditions, 14243

Boundary values, 14445

Business-facing tests, 150, 152

CalculateFixture, 134

Camel-casing, 137, 139, 191, 194, 199

Carroll, Lewis, 147

Clean Code (Martin), 170

Clojure, 163

Code. See also individual codes

library, 199

production, 12122

refactoring, 176

supporting, 5960

Code in Light States test case, developing, 6670

deciding which one to return based on previous state, 69

final test table for car states, 69

first example passes, 68

first flow after implementing light configurations, 70

first support code class, 66

FitNesse result after creating class, 67

FitNesse test turns from yellow to red, 67

folder layout in, 66

hard-coded return value of nextState method, 68

second test expressing state transition from red and yellow to green, 69

support code class with empty method bodies, 67

Cohn, Mike, 158

Collaboration, 5052, 15359

in ATDD, 51

on automation, 16466

Power of Three, 15355

summary, 159

trawl requirements, 15859

workshops, 15557

ColumnFixture, 134

Command/Query-Separation, 98

Concordion Framework, 163

Continuous integration (CI)

in domain discovery, 121

plug-ins for, 184

in software delivery, 51

test automation code and, 139

test failure in, 147

in Value Parking Automation test case, 18

Controller, driving. See Driving controller in First Crossing test case

Controller specifications in First Crossing test case, 9394

happy path scenario for controller state transitions, 94

state transitions to consider, 94

Copeland, Lee, 143

Crispin, Lisa, 147, 150, 155

Cucumber, 163, 18789

feature files, 18788

production code, 189

Ruby and, 17, 163, 187, 188

step definitions, 18889

Decision tables, 13435, 192

FitNess SLiM, example of, 192

function of, 58

query tables combined with, 136, 193

in refactoring, 104

setup table preparing three different accounts, 134

support code for, 194

in test cases, 61, 65, 94, 98, 104

valet parking tests expressed as, in SLiM, 58, 134

De Florinier, Annette, 163, 187

De Florinier, David, 163, 187

Domain, discover, 12021

Domain discovery, 16667

Domain partitioning, 143

Domain-specific test language, 162

Domain testing, 14344

Driving controller, 94118

Driving controller in First Crossing test case, 94118

body for controller glue code class that switches state, 9697

first empty body for controller glue code class, 9596

first invalid configuration, 99

first LightState changed in execute method, 99

first test for, 94

happy path tests for controller that

switches first light only, 96

permutated invalid configurations put into table, 102

second light state stored in field, 9798

setting of warning configuration extracted from if body, 101

UNKNOWN light stats supported, 103

validation method extracted from if clause, 100101

validation step added to controller before switching light states, 100

Equivalence classes, 14346

Evans, Eric, 48, 142

Examples, 12952

cutting, 14648

format of, 13042

gaps, 14951

refining, 14246

summary, 15152

Exploratory tests, 136, 149, 150, 151, 152

Extract Superclass, 176

Feature, 17

Feature files in Cucumber, 18788

First Crossing test case, 93118

controller specifications, 9394

driving controller, 94118

refactoring, 10318

summary, 118

Fishnet scenario, 158

FitLibrary, 134, 135, 137, 163

CalculateFixture in, 134

FitNesse and, 163

FitNesse, 19194

architecture, 192

in First Crossing test case, 93118

FIT and, 163, 191, 192

introduction to, 55, 5859

in Light States test case, 6191

link added to front page, 63

shell output from starting for first time, 62

SLiM tables and, 5859, 163, 19193

support code, 19394

welcome screen when starting for first time, 62

wiki structure, 58, 19192

Folder layout

in Light States test case, 66

in Valet Parking Automation test case, 21

Format, 13042

behavior-driven development, 131, 13233

glue code and support code, 13940

Internet search, basic, 132

keywords or data-driven tests, 131, 13739

right, 14042

tabulated formats, 131, 13337

Framework for Integrated Tests (FIT), 58, 133

ActionFixture in, 137

ColumnFixture in, 134

FitLibrary and, 134, 135, 137, 163

FitNesse and, 163, 191, 192

GPLv2 model and, 58, 191

RowFixture in, 135

Freeman, Steve, 176

Gaps, 14951

Getting Started test case

FitNesse, 5859

refactoring of traffic lights, 56, 57

summary, 60

supporting code, 5960

traffic lights, 5556

unit test in Java, example of, 59

Valet Parking tests expressed as decision table in SLiM, 5859

Given-When-Then format

alternative to, 136

in BDD, 131, 132

in Cucumber, 163, 187

script tables and, 140, 193

Glue code

in First Crossing test case, 95118

format, 131, 13940

implementing for test automation, 95118

in refactoring, 10718

signature of EJB2 service executor for Needle Eye pattern, 124

summary, 126

test, 12224

in Valet Parking Automation test case, 1718, 20, 21

value, 12425

GPLv2 model, 58, 191

Green Pepper Framework, 163

Gregory, Janet, 150, 155

Groovy, 163

Growing Object-oriented Software Guided by Tests (Freeman and Pryce), 176

Happy path scenario, 47, 9394, 96, 103

Headless Selenium server, 18

Initializers in Valet Parking Automation test case, 2631

duration map in, 2627

extracted method for filling in parking durations, 2830

final version of ParkCalcPage for

initialization steps, 3031

leaving date and time, 2829

leaving date and time filled into form fields, 2829

selecting right parking lot entry from dropdowns, 26

starting date and time filled into form fields, 27

Integrated development environments (IDEs)

in domain discovery, 121

Java, 66

in keyword-driven automation, 139

packages in, 71

in refactoring glue code, 109, 111

refactoring support and, 139, 17678

setting up and configuring, 66

Intent-revealing tests, 123, 141

Intermodule integration tests, 150

Java, 193

in Cucumber, 163

FitNesse in, 163

in Robot Framework, 195

unit test in, example of, 59

for writing support code for SLiM tables, 19394

JBehave Framework, 163

JUnit, 5960, 7274, 79, 112

Just-in-time requirements trawling, 159

Jython, 195

Kaner, Cem, 143

Kerievsky, Joshua, 170

Keywords

in automation, 13739

extracting, 17980

format, 131, 13739

in integrated development environments, 139

in Robot Framework, to define test cases, 193, 196

scenario tables as, 13738, 184

in test automation code, 138

Then, 19, 187

When, 19, 187

Library code, 199

Light States test case, 6191. See also individual headings

code, developing, 6670

FitNesse in, 6191

refactoring, 7090

state specifications, 6162

summary, 9091

Light States test case, first test in, 6266

expressing state transition from red to red and yellow, 65

FitNesse result from, 66

FitNesse welcome screen when starting, 62

root suite of traffic light examples, 64

shell output from starting FitNesse, 62

TrafficLightStates suite, contents of, 65

Listening to test, 17276

economy parking lot automated examples, 174

setup table preparing account hierarchies with hidden tariffs and products, 175

verbose example for parking lot calculator, 17374

Marick, Brian, 150

Martin, Robert C.

Agile Software Development — Patterns, Principles, and Practices, 124

Clean Code, 170

Simple List Invocation Method (SLiM), 133, 191

Meszaros, Gerard, 170

Nonfunctional requirements, 155

North, Dan, 132

.NET, 163, 193

Page objects, 184, 189

Pairing, 2535

checking results, 3135

initializers, 2631

Pairwise testing, 14546

Parallel component, 70

Parameterized tests, 59, 7374, 112, 116

Parking Cost Calculator Workshop test case, 315

economy parking, 68

economy parking examples, 7, 11

essential examples, 912

long-term parking, 68

long-term parking examples, 8, 910, 11

short-term parking, 5

short-term parking examples, 5, 12

summary, 1215

valet parking, 34

valet parking examples, 4, 13

Parking lot calculator. See also Parking Cost Calculator Workshop test case

business rules for, 3

extended durationMap, 38, 43

final version for first test, 3435

final version for initialization steps, 3031

library for, 22

mockup of, 25

page, 28, 38, 151

Robot Framework and, 19698

support code for, 18

test executed by, 32

verbose example for, 17374

PHP, 163, 193

Power of Three, 15355

business perspective, 153

introduction to, 15355

mediation between perspectives, 153, 154

technical perspective, 153

Practitioner’s Guide to Software Test Design, A (Copeland), 143, 152

Production code, 12122

collaboration in, 51

in Cucumber, 189

developing, 189

in domain discovery, 12021

driving, 12122

TDD used for, 71

value in, vs. glue code, 124

Production code, drive, 12122

Pryce, Nat, 176

Python, 163, 193, 195, 199

Quadrants, testing, 15051

Query tables, 13536, 193

checking existence of previously set up data, 13536

FitNesse SLiM, example of, 193

script tables used to combined with decision tables, 136, 193

Refactoring, 10318. See also Refactor tests

code, 176

in editing LightStates, 7890

in LightState enum, 7178

in Light States test case, 7090

packages, 71

support code in, 7090

traffic light calling for, 56, 57

Refactoring in First Crossing test case

adapted validation function, 116

corrected validation function, 11415

examples, 103

final unit tests for validator, 117

function refactoring into own class, 107

glue, 10718

new empty validator class, 108

redundant information eliminated from invalid combinations, 1045

retrofitted unit tests for validator class, 11213

scenario table references transparent operation, 1067

scenario table results in collapsible section, 105

scenario table to remove redundant information from invalid combinations, 103

second validation added after light was switched, 114

tests up to failing configuration point, 115

validation function after adding check for blinking second light, 116

validation function after introducing two parameters, 108

validator after moving validation function, 10910

validator makes parameter to validation function to move method, 109

validator method after rename, 111

validator turned into field within controller class, 11011

Refactoring in Light States test case, 7090

all light states covered, 7578

changed implementation of editor class, 87

code for getAsText method in LightStateEditor, 86

code for LightState enumeration after implementing first method on editor, 8586

conditional to rescue for red and yellow state, 80

duplication indicates the refactoring potential, 81

editing LightStates, 7890

extracted body from LightStateEditor as valueFor on LightState class, 87

final example page after, 71

final TrafficLights implementation making use of domain concept of LightState, 90

first and second unit test expressed as data-driven test using JUnit Parameterized runner, 7274

first code base for new traffic light enum, 7273

first implementation for LightState transition from red to red and yellow, 73

first implementation of LightStateEditor, 79

first unit test driving domain concept of LightState, 72

iterating over all values in LightState checking for matching description, 82

LightStateEditor code after driving implementation for setAsText, 85

in LightState enum, 7178

LightState takes String parameter for description in constructor, 81

new unit test class for valueFor method, 8889

packages, 71

property editor in shortest form, 83

red state makes use of description field, 83

second transition captured, 75

second unit test using data driven format, 7980

unit test for editor with defaulting behavior unit test removed, 88

unit test for getAsText function in LightStateEditor, 86

unit test for setting value to red, 79

unit tests for editor after finishing implementation for setAsText, 84

Refactoring to Patterns (Kerievsky), 170

Refactor tests, 17680

extract keyword, 17980

extract variable, 17879

Refining examples, 14246

boundary values, 14445

domain testing, 14344

pairwise testing, 14546

Regression test suite, 147, 148

Robot Framework, 163, 19599

formats, 140

keywords section used for parking lot calculator, 19798

keywords used to define test cases, 193, 196

library code, 199

sections, 19599

Selenium library in, 173

settings used for parking lot calculator, 196

test case section used for parking lot calculator, 19697

test libraries in, 137

test using keyword template for data-driven tests, 199

Variables section used for parking lot calculator, 198

RowFixture, 135

RSpec book, The (Chelimsky et al.), 187

Ruby, 17, 163, 187, 188

Rule of Three Interpretations, 155, 167. See also Power of Three

Scala, 163

Scenario tables

function of, 59

Given-When-Then-format and, 193

as keyword, 13738, 184

in refactoring, 1036

in test cases, 5859, 1036

used with script tables, 104, 193

Script tables, 13637

decision tables combined with query tables, 136, 193

in FIT and FitLibrary, 137

Given-When-Then format and, 140, 193

scenario tables used with, 104, 193

support code and, 194

with whole flow through system, 136

Secret Ninja Cucumber Scrolls, The (de Florinier, Adzic, and de Florinier), 163, 187

Selenium, 1822, 17374, 197

headless, 18

library, 22, 173

SetFixture, 135

Setup table, 134, 175, 193

Shell output

from starting FitNesse for the first time, 62

from Valet Parking Automation test case, 1920, 32, 36

Simple List Invocation Method (SLiM). See also individual tables

decision tables in, 13435

FitNesse and, 5859, 163, 191, 192

introduction of, 133

query tables in, 13536

script tables in, 13637

support code for tables in, 19394

Software specifications, 15359

Power of Three, 15355

summary, 159

trawl requirements, 15859

workshops, 15557

Specification by Example (Adzic), 15455

Specifications, 9394

Specification workshops, 4849

Stable Dependencies Principle, 124

State pattern, 72, 119, 120

State Pattern, 72

State specifications in Light States test case, 6162

all light states for cars, 62

valid light states for cars, 61

Step definitions

in BDD, 133

Cucumber, 18889

Short-Term Parking lot test case, 42

in Valet Parking Automation test case, 1739

SubsetFixture, 135

Successful ATDD, 18385

Support code

collaboration in, 51

developing, 6690

for FitNesse SLiM tables, 19394

format, 13940

in Light States test case, 6690

refactoring, 7090

for setting up Selenium client, 22

in Valet Parking Automation test case, 1718, 20, 2122

SWT applications, 152, 183

SWTBot, 152, 183

Tab-ordering, 149

Tabulated formats, 131, 13337

decision tables, 13435

query tables, 13536

script tables, 13637

script tables with whole flow through system, 136

Tabulated tests in Valet Parking Automation test case, 3638

examples from workshop filled into table, 37

first test converted to tabulated format, 36

ParkCalcPage class with extended durationMap for Valet Parking tests, 38

shell output with first test in tabulated format, 3637

Technical Debt, 150

Technical tests, 150

Test, 16981. See also Test suite

automation, developing, 17072

code (See Code)

failing, 11517

gaps, 15051

intent-revealing, 123, 141

intermodule integration, 150

keyword, extracting, 17980

language, 12425, 131, 162

libraries in Robot Framework, 137

listening to, 17276

parameterized, 59, 7374, 112, 116

quadrants, 15052

refactor, 17680

retrofitted, 91, 11213, 122, 173, 183

smell, 135

summary, 18081

tabulated, 3638

test automation, 17072

unit, 150, 172

variable, extracting, 17879

Test automation. See also Test automation code; Test automation tools

architecture, 17

ATDD approach to, 4748

collaboration in, 47, 16466

developing, 17072

listening to tests and, 17276

pairing on, 164

refactoring in, 17678

in Valet Parking Automation test case, 1739

Test automation code. See also Glue code; Support code

flexibility of, 171

format, 131

keywords in, 138

support code and, 70, 13940

TDD used to implement, 119, 140, 176

testing, 170

Test automation tools

Agile-friendly, 156, 161, 163, 177, 178, 193

ATDD-friendly, 16266

Cucumber, 18789

Robot Framework, 193

Test-driven development (TDD). See also Test automation code

vs. ATDD, 118

collaboration in, 51

in domain discovery, 12021

enum class implemented using, 7178

Testing Computer Software (Kaner), 143

Test suite

acceptance test, 11112, 147

benefits of, 122

cutting examples, 14648

defined, 62

maintenance of, 136

regression, 147, 148

36-hour, 148

Then-keyword, 19, 187

36-hour test suite, 148

Titanic Effect, 150

Traffic Light Software System test cases. See also individual headings

First Crossing test case, 93118

Getting Started test case, 5560

Light States test case, 6191

refactoring, 56, 57

supporting code, 5960

traffic lights, 5557

Trawl requirements, 15859

Twist Framework, 163

Unit test, 150, 172

in Java, example of, 59

retrofitted, 91, 11213, 122, 173, 183

Unknown-Unknowns Fallacy, 150

Usability tests, 150, 151, 152

User acceptance tests, 150, 151

Valet Parking Automation test case, 1739. See also Parking lot calculator

initializers, 2631

mockup for airline parking lot calculator, 25

pairing for first test, 25

summary, 39

tabulated tests, 3638

Valet Parking Automation test case, first example, 1825

duration map in, 2627

empty implementation of parking cost calculation step, 25

empty implementations added to ParkCalcPage class, 24

first Valet Parking test, 18

folder layout, 21

initial ParkCalc class, 22

initial step definitions for, 20

initial wishful implementation of first keyword, 23, 24

shell output from first Valet Parking test, 1920

shell output from first Valet Parking test with step definitions, 21

support code for setting up Selenium client, 22

Valet Parking Automation test case results, checking, 3135

check after factoring out two functions for individual steps, 33

final version of ParkCalcPage class for first test, 3435

final version of steps for first test, 34

final version of Valet Parking steps for first test, 34

initial version of check, 32

shell output from first Valet Parking test, 32

Variables

extracting, 17879

for parking lot calculator in Robot Framework, 198

Warning configuration, 101

Weinberg, Jerry

Rule of Three interpretations, 167

Titanic Effect, 150

When-keyword, 19, 187

Wiki pages, 58, 66, 19192

Wiki server, 58, 62

Wiki structure, 19192

Wiki system, 58

Wishful thinking, 4950

Workshops, 15557

frequency and duration, 157

goals of, 15657

participants, 156

XUnit Test Patterns (Meszaros), 170

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.166.149