ubiquitous testing
Post on 05-Dec-2014
452 Views
Preview:
DESCRIPTION
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
Tools for Getting Going
fitnesse.orgjbehave.orgcukes.info
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