ubiquitous testing

59
Ubiquitous Testing Testing is too important to leave to the end Alistair McKinnell ValuableCode @amckinnell Yehoram Shenar Guidewire @yehoram

Upload: alistair-mckinnell

Post on 05-Dec-2014

450 views

Category:

Technology


1 download

DESCRIPTION

We believe that software development is most effective when testing is ubiquitous. By ubiquitous we mean that: (1) testing is everyone's responsibility; (2) testing activities happen continuously; and (3) testing happens in all software development cycles: product, release, iteration, engineering task, and development episode. Watch on InfoQ: http://www.infoq.com/presentations/Ubiquitous-Testing

TRANSCRIPT

Page 1: Ubiquitous Testing

Ubiquitous TestingTesting is too important

to leave to the end

Alistair McKinnellValuableCode@amckinnell

Yehoram ShenarGuidewire@yehoram

Page 2: Ubiquitous Testing
Page 3: Ubiquitous Testing

How to recognize agile software development?

1. Frequent delivery2. Organize around teams

Page 4: Ubiquitous Testing

1. Frequent delivery

“Have you delivered running, tested, and usable code at least twice to your user

community in the last six months?”

Alistair Cockburn

Page 5: Ubiquitous Testing

1. Frequent delivery

18 months

9 - 3 months

4 monthscontinuous

delivery

Page 6: Ubiquitous Testing

2. Organize around teams

“Team = Software”

Jim and Michele McCarthy

Page 7: Ubiquitous Testing

Projects

Page 8: Ubiquitous Testing

Teams

Page 9: Ubiquitous Testing

Sweet spot for agile software development

1. Frequent delivery2. Organize around teams

Page 10: Ubiquitous Testing

Failure Modes

Ubiquitous Testing

TestingFact & Myth?

Page 11: Ubiquitous Testing
Page 12: Ubiquitous Testing
Page 13: Ubiquitous Testing
Page 14: Ubiquitous Testing

Testing lags behind

123

4

Page 15: Ubiquitous Testing

Up front requirements

123

4

Page 16: Ubiquitous Testing

So why is any of this a problem?

Page 17: Ubiquitous Testing
Page 18: Ubiquitous Testing

Present, appearing, or found everywhere

Ubiquitous adjective

Page 19: Ubiquitous Testing

Testing is everyone’s concern

Testing happens all the time

Ubiquitous Testing

Page 20: Ubiquitous Testing

Ubiquitous Testing

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 21: Ubiquitous Testing

Ubiquitous Testing

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 22: Ubiquitous Testing

Ubiquitous Testing

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 23: Ubiquitous Testing

Ubiquitous Testing

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 24: Ubiquitous Testing

Ubiquitous Testing

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 25: Ubiquitous Testing

Testing happens all the time

Ubiquitous Testing

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Testing is everyone’s concern

Page 26: Ubiquitous Testing

Testing lags behind

Page 27: Ubiquitous Testing

Testing lags behind

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 28: Ubiquitous Testing

Testing lags behind

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 29: Ubiquitous Testing

Testing lags behind

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 30: Ubiquitous Testing

Testing lags behind

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 31: Ubiquitous Testing

Testing lags behind

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 32: Ubiquitous Testing

Up front requirements

Page 33: Ubiquitous Testing

Up front requirements

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 34: Ubiquitous Testing

Up front requirements

Testability is an essential attribute of system architecture

The whole team plans andestimates the work

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 35: Ubiquitous Testing

Up front requirements

Testability is an essential attribute of system architecture

Acceptance tests areautomated

The whole team defines thetests before starting to write

the production code

Page 36: Ubiquitous Testing

The whole team defines thetests before starting to write

the production code

The whole team defines thespecifications before

starting to write the production code

Up front requirements

Testability is an essential attribute of system architecture

Acceptance tests areautomated

Page 37: Ubiquitous Testing

Acceptance tests areautomated

Executable specifications are validated frequently

The whole team defines thespecifications before

starting to write the production code

Up front requirements

Testability is an essential attribute of system architecture

Page 38: Ubiquitous Testing

Executable specifications are validated frequently

The whole team defines thespecifications before

starting to write the production code

Testability is an essential attribute of system architecture

Automated validation ofspecifications is an

essential attribute of system architecture

Up front requirements

Page 39: Ubiquitous Testing

Automated validation ofspecifications is an

essential attribute of system architecture

Up front requirements

The whole team plans andestimates the work

Executable specifications are validated frequently

The whole team defines thespecifications before

starting to write the production code

Page 40: Ubiquitous Testing

Automated validation ofspecifications is an

essential attribute of system architecture

Up front requirements

The whole team plans andestimates the work

Executable specifications are validated frequently

The whole team defines thespecifications before

starting to write the production code

Page 41: Ubiquitous Testing

Automated validation ofspecifications is an

essential attribute of system architecture

Up front requirements

The whole team plans andestimates the work

Executable specifications are validated frequently

The whole team defines thespecifications before

starting to write the production code

Page 42: Ubiquitous Testing

Automated validation ofspecifications is an

essential attribute of system architecture

Up front requirements

The whole team plans andestimates the work

Executable specifications are validated frequently

The whole team defines thespecifications before

starting to write the production code

Page 43: Ubiquitous Testing

Up front requirements

Automated validation ofspecifications is an

essential attribute of system architecture

Executable specifications are validated frequently

The whole team defines thespecifications before

starting to write the production code

The whole team plans andestimates the work

Page 44: Ubiquitous Testing
Page 45: Ubiquitous Testing

Delivery Safety Zone

18 months4 months

continuousdelivery

Page 46: Ubiquitous Testing

Shorter Feedback Cycles

Page 47: Ubiquitous Testing

First row is sometimes called Water-Scrum-Fall while the fourth row shows a Wateration

123

4

Testing laggingRequirements Up Front

Phased Delivery

Page 48: Ubiquitous Testing

123

4

Testing laggingRequirements Up Front

What would this row look like?

Phased Delivery

5

Ubiquitous Testing

Page 49: Ubiquitous Testing

The whole team plans andestimates the work

The whole team defines thespecifications before

starting to write the production code

Whole Team

Run a pilot specification workshop

Create specifications for a single story in a sprint

Create specifications for more of your stories

Page 50: Ubiquitous Testing

Automated validation ofspecifications is an

essential attribute of system architecture

Executable specifications are validated frequently

Technical Excellence

Start using TDD to create unit tests

Automate specifications for one story as a pilot

Start automating some of your stories each sprint

Page 51: Ubiquitous Testing

Getting Going

start here

Page 52: Ubiquitous Testing

Books for Getting Going

Page 54: Ubiquitous Testing
Page 55: Ubiquitous Testing

Books

Gojko Adzic, Specification by Example (Manning, 2011)

Alistair Cockburn, Crystal Clear (Addison-Wesley, 2005)

Jim and Michele McCarthy, Software for Your Head (Addison-Wesley, 2001)

Page 56: Ubiquitous Testing

Books

Kent Beck, Test-Driven Development: By Example (Addison-Wesley, 2002)

Markus Gärtner, ATDD by Example (Addison-Wesley, 2012)

Ken Pugh, Lean-Agile Acceptance Test-Driven Development (Addison-Wesley, 2010)

Page 57: Ubiquitous Testing

Books

Nat Pryce and Steve Freeman, Growing Object-Oriented Software, Guided by Tests (Addison-Wesley, 2009)

Gerard Meszaros, xUnit Test Patterns: Refactoring Test Code (Addison-Wesley, 2007)

Michael Feathers, Working Effectively with Legacy Code (Prentice Hall 2004)

Page 58: Ubiquitous Testing

BooksRick Mugridge and Ward Cunningham, Fit for Developing Software (Prentice Hall 2005)

Matt Wynne and Aslak Hellesøy, The Cucumber Book (The Pragmatic Bookshelf, 2012)

Page 59: Ubiquitous Testing

Photo Credits

http://www.flickr.com/photos/arlette/3260468/

http://www.flickr.com/photos/14869313@N00/301057804/

http://www.flickr.com/photos/16634670@N00/3214815323/

http://www.flickr.com/photos/43291304@N08/4103102579/

http://www.flickr.com/photos/potentialpast/7222455588/

http://www.flickr.com/photos/leeadlaf/3571935758/