ubiquitous testing

Post on 05-Dec-2014

452 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

Ubiquitous TestingTesting is too important

to leave to the end

Alistair McKinnellValuableCode@amckinnell

Yehoram ShenarGuidewire@yehoram

How to recognize agile software development?

1. Frequent delivery2. Organize around teams

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

1. Frequent delivery

18 months

9 - 3 months

4 monthscontinuous

delivery

2. Organize around teams

“Team = Software”

Jim and Michele McCarthy

Projects

Teams

Sweet spot for agile software development

1. Frequent delivery2. Organize around teams

Failure Modes

Ubiquitous Testing

TestingFact & Myth?

Testing lags behind

123

4

Up front requirements

123

4

So why is any of this a problem?

Present, appearing, or found everywhere

Ubiquitous adjective

Testing is everyone’s concern

Testing happens all the time

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

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

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

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

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 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

Testing lags behind

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

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

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

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

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

Up front requirements

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

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

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

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

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

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

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

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

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

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

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

Delivery Safety Zone

18 months4 months

continuousdelivery

Shorter Feedback Cycles

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

123

4

Testing laggingRequirements Up Front

Phased Delivery

123

4

Testing laggingRequirements Up Front

What would this row look like?

Phased Delivery

5

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

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

Getting Going

start here

Books for Getting Going

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)

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)

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)

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)

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/

top related