Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration / Edition 4
  • Alternative view 1 of Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration / Edition 4
  • Alternative view 2 of Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration / Edition 4
  • Alternative view 3 of Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration / Edition 4
<Previous >Next

Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration / Edition 4

5.0 2
by Ken Pugh

ISBN-10: 0321714083

ISBN-13: 9780321714084

Pub. Date: 01/25/2011

Publisher: Addison-Wesley

Praise for Lean-Agile Acceptance Test-Driven Development

Lean-Agile Acceptance Test-Driven Development tells a tale about three fictive project stakeholders as they use agile techniques to plan and execute their project. The format works well for the book; this book is easy to read, easy to understand,

…  See more details below


Praise for Lean-Agile Acceptance Test-Driven Development

Lean-Agile Acceptance Test-Driven Development tells a tale about three fictive project stakeholders as they use agile techniques to plan and execute their project. The format works well for the book; this book is easy to read, easy to understand, and easy to apply.”

—Johannes Brodwall, Chief Scientist, Steria Norway

“Agile development, some say, is all about pairing, and, yes, I’m a believer in the power of pairing. After reading this book, however, I became a fan of the ‘triad’—the customer or business analyst + the developer + the tester, who work collaboratively on acceptance tests to drive software development. I’ve written some patterns for customer interaction and some patterns for testing and I like what Ken Pugh has chosen to share with his readers in this down-to-earth, easy-to-read book. It’s a book full of stories, real case studies, and his own good experience. Wisdom worth reading!”

—Linda Rising, Coauthor of Fearless Change: Patterns for Introducing New Ideas

“The Agile Manifesto, Extreme Programming, User Stories, and Test-Driven Development have enabled tremendous gains in software development; however, they’re not enough. The question now becomes ‘How can I ensure clear requirements, correct implementation, complete test coverage, and more importantly, customer satisfaction and acceptance?’ The missing link is acceptance as defined by the customer in their own domain language. Lean-Agile Acceptance Test-Driven Development is the answer.”

—Bob Bogetti, Lead Systems Designer, Baxter Healthcare

“Ken Pugh’s Lean-Agile Acceptance Test-Driven Development shows you how to integrate essential requirements thinking, user acceptance tests and sounds, and lean-agile practices, so you can deliver product requirements correctly and efficiently. Ken’s book shows you how table-driven specification, intertwined with requirements modeling, drives out acceptance criteria. Lean-Agile Acceptance Test-Driven Development is an essential guide for lean-agile team members to define clear, unambiguous requirements while also validating needs with acceptance tests.”

—Ellen Gottesdiener, EBG Consulting, www.ebgconsulting.com, Author of Requirements by Collaboration and The Software Requirements Memory Jogger

“If you are serious about giving Agile Testing a chance and only have time to read one book, read this one.”

—David Vydra, http://testdriven.com

“This book provides clear, straightforward guidance on how to use business-facing tests to drive software development. I’m excited about the excellent information in this book. It’s a great combination of the author’s experiences, references to other experts and research, and an example project that covers

many angles of ATDD. A wide range of readers will learn a lot that they can put to use, whether they work on projects that call themselves lean or agile or simply want to deliver the best possible software product.”

—Lisa Crispin, Agile Tester, ePlan Services, Inc., Author of Agile Testing

Within the framework of Acceptance Test-Driven-Development (ATDD), customers, developers, and testers collaborate to create acceptance tests that thoroughly describe how software should work from the customer’s viewpoint. By tightening the links between customers and agile teams, ATDD can significantly improve both software quality and developer productivity.

This is the first start-to-finish, real-world guide to ATDD for every agile project participant. Leading agile consultant Ken Pugh begins with a dialogue among a customer, developer, and tester, explaining the “what, why, where, when, and how” of ATDD and illuminating the experience of participating in it.

Next, Pugh presents a practical, complete reference to each facet of ATDD, from creating simple tests to evaluating their results. He concludes with five diverse case studies, each identifying a realistic set of problems and challenges with proven solutions.

Coverage includes

• How to develop software with fully testable requirements

• How to simplify and componentize tests and use them to identify missing logic

• How to test user interfaces, service implementations, and other tricky elements of a software system

• How to identify requirements that are best handled outside software

• How to present test results, evaluate them, and use them to assess a project’s overall progress

• How to build acceptance tests that are mutually beneficial for development organizations and customers

• How to scale ATDD to large projects

Read More

Product Details

Publication date:
Net Objectives Lean-Agile Series
Sales rank:
Product dimensions:
6.80(w) x 9.10(h) x 1.00(d)

Table of Contents

Introduction 1

Part I: The Tale

Chapter 1: Prologue 9

Ways to Develop Software 9

One Way 9

Another Way 9

The Difference 10

The Importance of Acceptance Tests 10

System and Team Introduction 12

The System 12

The People 13

Summary 14

Chapter 2: Lean and Agile 15

The Triad and Its Units 15

Post-Implementation Tests 17

Quick Feedback Better Than Slow Feedback 18

Preimplementation Tests 19

Lean and Agile Principles 20

Summary 21

Chapter 3: Testing Strategy 23

Types of Tests 23

Where Tests Run 25

Test Facets 26

Control and Observation Points 27

New Test Is a New Requirement 27

Summary 28

Chapter 4: An Introductory Acceptance Test 29

A Sample Business Rule 29

Implementing the Acceptance Tests 31

Test Script 32

Test User Interface 33

xUnit Test 34

Automated Acceptance Test 35

An Overall Test 36

Testing Process 37

Summary 37

Chapter 5: The Example Project 39

The Charter 39

Objectives 40

Project Acceptance Tests 41

High-Level Requirements 43

Features 43

Feature Acceptance Criteria 45

Summary 46

Chapter 6: The User Story Technique 47

Stories 47

Features into Stories 48

Roles 49

Role Attributes 49

Persona 50

Stories for Roles 51

Story Acceptance Criteria 52

Acceptance Tests Determine Size 53

Customer Terms 54

INVEST Criteria 55

Summary 56

Chapter 7: Collaborating on Scenarios 57

Use Cases from User Stories 57

Simple Use Case 59

Exceptions and Alternatives 60

Acceptance Tests 63

Documentation 63

Story Map 63

Conceptual Flow 65

Communication 66

Summary 68

Chapter 8: Test Anatomy 69

Triad Creates Tests 69

Test Context 70

Test Structure 71

Calculation Table 73

Data Table 74

Action Table 75

Tests with Example Values 76

Requirements Revised 77

Acceptance Test Revised 78

Test with Values in Text 79

When and Where Tests Are Run 80

Summary 81

Chapter 9: Scenario Tests 83

Tests for Exception Scenarios 83

Tests for Business Rules 87

Cross-Story Issues 88

Don’t Automate Everything 89

Multi-Level Tests 90

User Interface Tests 93

Check the Objectives 93

Summary 94

Chapter 10: User Story Breakup 95

Acceptance Tests Help Break Up Stories 95

Business Rule Tests 96

A Story with a Business Rule 100

Summary 101

Chapter 11: System Boundary 103

External Interfaces 103

More Details 107

External Interface Tests 108

Component Tests 108

Test Doubles and Mocks 111

What Is Real? 112

Story Map of Activities 113

Summary 114

Chapter 12: Development Review 115

The Rest of the Story 115

Usability Testing 116

Separating State from Display 116

Quality Attribute Tests 118

Workflow Tests 119

Deployment Plans 120

From Charter to Deliverable 120

Summary 121

Part II: Details

Chapter 13: Simplification by Separation 125

Complex Business Rules 125

Simplify by Separating 126

The Simplified Rule 128

Rental History 128

Summary 130

Chapter 14: Separate View from Model 131

Decouple the User Interface 131

Decoupling Simplifies Testing 136

Summary 136

Chapter 15: Events, Responses, and States 137

Events and an Event Table 137

States and State Transitions 139

Internal State or External Response 142

Transient or Persistent States 144

A Zen Question 144

Summary 144

Chapter 16: Developer Acceptance Tests 145

Component Acceptance Tests 145

Field Display Tests 145

Tabular Display Tests 147

Summary 151

Chapter 17: Decouple with Interfaces 153

Tests for a Service Provider 153

The Interface 153

Quality Attribute Tests 155

Comparing Implementations 155

Separating User Interface from Service 157

Separation of Concerns 158

Reusable Business Rules 158

Summary 159

Chapter 18: Entities and Relationships 161

Relationships 161

Entities and Relationships 161

Multiple Relationships 163

Alternative Representations 166

Summary 166

Chapter 19: Triads for Large Systems 167

Large Systems 167

When a Customer Test May Not Be Required 169

Data Conversion 170

Database Conversions 170

What If There Are No Tests? 170

Legacy Systems 172

Summary 173

Part III : General Issues

Chapter 20: Business Capabilities, Rules, and Value 177

Business Capabilities 177

Scenario Handling 178

Business Rules Exposed 179

A Different Business Value 179

Summary 181

Chapter 21: Test Presentation 183

Customer Understood Tables 183

Table Versus Text 185

Specifying Multiple Actions 185

Complex Data 187

Custom Table Forms 188

Summary 189

Chapter 22: Test Evaluation 191

Test Facets 191

Understandable to Customers 191

Spell Checked 192

Idempotent 192

Not Fragile 192

Test Sequence 193

Workflow Tests 193

Test Conditions 194

Separation of Concerns 194

Test Failure 195

Test Redundancy 196

No Implementation Issues 197

Points to Remember 197

Summary 198

Chapter 23: Using Tests for Other Things 199

Uses of Acceptance Tests 199

Degree of Doneness 199

Estimation Aid 200

Breaking Down Stories 200

Developer Stories 200

Tests as a Bug Report 201

Root Cause Analysis 201

Production Bugs 202

Regression Testing 202

Summary 202

Chapter 24: Context and Domain Language 205

Ubiquitous Language 205

Two Domains 207

Summary 208

Chapter 25: Retrospective and Perspective 209

Recap 209

The Process 210

Testing Layers 210

The Tests 211

Communication 212

What’s the Block? 212

Monad 212

Unavailable Customer 213

Change 213

Risks 214

Benefits 214

Summary 215

Part IV Case Studies

Chapter 26: Case Study: Retirement Contributions 219

Context 219

The Main Course Test 220

Setup 220

Event 221

Expected 221

Implementation Issues 222

Separation of Concerns 222

Business Value Tracking 223

One Exception 223

Event 223

Expected 224

Another Exception 225

Event 225

Expected 225

Two Simultaneous Exceptions 226

Event 226

Expected 227

The Big Picture 227

Event Table 228

State Transition Table 228

Summary 230

Chapter 27: Case Study: Signal Processing 231

It’s Too Loud 231

Sound Levels 231

Developer Tests 233

Summary 233

Chapter 28: Case Study: A Library Print Server 235

The Context 235

A Workflow Test 236

Summary 241

Chapter 29: Case Study: Highly Available Platform 243

Context for Switching Servers 243

Test for Switching Servers 244

Test for Technical Rule 246

Summary 248

Part V : Technical Topics

Chapter 30: How Does What You Do Fit with ATDD? 251

Test Platforms 251

Internal Design from Tests 252

Device Testing 254

Starting with User Interfaces 255

Black Box Testing 255

Unit Testing 256

Summary 256

Chapter 31: Test Setup 257

A Common Setup 257

Some Amelioration 259

Test Order 260

Persistent Storage Issues 260

Summary 261

Chapter 32: Case Study: E-Mail Addresses 263

Context 263

Breaking Down Tests 264

Local-Part Validation 265

Domain Tests 266

Disallowed Domain Tests 268

Test to Ensure Connection 269

Verification Test 269

Summary 270

Part VI : Appendices

Appendix A: Other Issues 273

Context 273

Customer Examples 274

Fuzzy Acceptance Tests 274

Acceptance Test Detail 275

Requirements and Acceptance Tests 275

Documenting Requirements and Tests 276

Decoupling Requirements 276

Separation of Issues 276

Testing Systems with Random Events 277

The Power of Three 277

Summary 278

Appendix B: Estimating Business Value 279

Business Value 279

Developer Stories 281

Summary 282

Appendix C: Test Framework Examples 283

The Examples 283

Fit Implementation 284

Setup 284

Check-Out CD 284

Check-In 286

Category-Based Rental Fees 287

Slim–Table Style 288

Header 288

Setup 288

Check-Out CD 288

Check-In 290

Category-Based Rental Fees 291

Slim–Cucumber Style 291

Setup 291

Check-Out CD 292

Check-In CD 292

Scenario Library 292

Category-Based Rental Fees 294

Robot 295

Setup 295

Check-Out CD 295

Check-In CD 296

Category-Based Rental Fees 296

Cucumber 296

Check-Out CD 297

Check-In CD 297

Category-Based Rental Fees 297

Test Frameworks 298

Summary 298

Appendix D: Tables Everywhere 299

User Interface Tests with Tables 299

Requirement Tables 301

Another Table 302

Quality Attribute Requirements 303

Data Tables 304

Summary 304

Appendix E: Money with ATDD 305

The Context 305

The Original Tests 306

The Acceptance Test Approach 307

Summary 310

Appendix F: Exercises 311

Calculator 311

Create Some Tests 313

More Exercises 313

Sam’s CD Rental 314

Triangle 314

File Copying Exercise 314

References 315

Epilogue 323

Index 333

Read More

Customer Reviews

Average Review:

Write a Review

and post it to your social network


Most Helpful Customer Reviews

See all customer reviews >

Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration 5 out of 5 based on 0 ratings. 2 reviews.
Anonymous More than 1 year ago
1. Yes <br> 2. Yes <br> 3. No <br> 4. Yes <br> 5. No <br> 6. Yes <br> 7. Yes <br> 8. Yes <br> 9. Sorta <br>
Anonymous More than 1 year ago
1. Yes <br> 2. Yes <br> 3. No <br> 4. Yes <br> 5. No. <br> 6. (I had trouble with this. If a cat is bitten in the neck, surely it is painful and deadly. But a cat can still acknowlege the pain, and yet fight on with what is ls left of their strength, and still acknowlege that their strength is dimishing. I have decided to go with 'Varies' if that is okay.) <br> 7. Yes <br> 8. Omfg yes. <br> 9. Yes