agile-hp-2004.ppt

43
Testing in Agile Projects: Where Things Stand Today Brian Marick [email protected] ght © 02004 by Brian Marick. Permission granted to reproduce verbatim. mages copyright www.arttoday.com.

Transcript of agile-hp-2004.ppt

Page 1: agile-hp-2004.ppt

Testing in Agile Projects:Where Things Stand Today

Brian [email protected]

Copyright © 02004 by Brian Marick. Permission granted to reproduce verbatim.Some images copyright www.arttoday.com.

Page 2: agile-hp-2004.ppt

What Are Agile Projects?

• An attitude toward change

• An attitude toward software

• Some attitudes toward people

The Manifesto for Agile Software Development, www.agilemanifesto.org

Page 3: agile-hp-2004.ppt

Changing Requirements Are Swell

Oh! Let’s add this!

Sure!Now that I see my

feature, I don’t like it. How should wechange it?

Page 4: agile-hp-2004.ppt

Software Can Be Soft

• Programs can become better, cleaner, and more capable

• They become changeable by being successfully changed– not mainly by planning for change

• Frequent new requirements “train” the code and the coders

“Agile methods, the Emersonian worldview, and the dance of agency”www.visibleworkings.com/papers/agile-methods-and-emerson.html

Page 5: agile-hp-2004.ppt

People

• Written documentation is a poor substitute for continuous conversation

• Generalists trump specialists• Teams can self-organize• Trust

– “… if you ask for help, someone has to help you” - Lisa Crispin

Page 6: agile-hp-2004.ppt

Agile Methodologies

• Extreme Programming

• Scrum

• DSDM

• Evolutionary delivery and staged delivery share many characteristics

See “Reading” slides at the end

Page 7: agile-hp-2004.ppt

The Import

Kaner, Bach, and Pettichord, Lessons Learned in Software Testingwww.context-driven-testing.com/wiki/scribble.cgi

These attitudes toward change, software, and people are the context for testing in Agile projects

Page 8: agile-hp-2004.ppt

Four Types of Testing

Geoffrey Moore, Crossing the Chasm, p. 19

Page 9: agile-hp-2004.ppt

Programmer Testing

I need an object that records eachtime segment

Test-driven designUnit testing

Page 10: agile-hp-2004.ppt

Programmer Testing

The test comes first

Page 11: agile-hp-2004.ppt

Programmer Testing

Code is written topass the test

Page 12: agile-hp-2004.ppt

Programmer Testing

Not done? Write another test…

Page 13: agile-hp-2004.ppt

Programmer Testing

And the code to pass it.All earlier tests continue to pass

Page 14: agile-hp-2004.ppt

Programmer Testing

Code awkward? Fix it now.Tests continue to pass

(Refactoring)

Martin Fowler, Refactoring

Page 15: agile-hp-2004.ppt

Programmer Testing

Eventually, the jelly is cooked, nailed down,and ready for further change

Page 16: agile-hp-2004.ppt

Status

Page 17: agile-hp-2004.ppt

Why was this decision made?

I need an object that records eachtime segment

Page 18: agile-hp-2004.ppt

Because of a Customer Representative

…I want to scribble notes aboutwhat I’m doing…

Page 19: agile-hp-2004.ppt

FIT Tests

Makes senseto the

customerrepresentative

Reminder,not

requirement

Easy to run

fit.c2.com

Page 20: agile-hp-2004.ppt

Test Results

Browser-Friendly

TestsFirst

Page 21: agile-hp-2004.ppt

Tests Make Change Smooth

smallchange

smallchange

smallchange

Has anythingbroken?

Has anythingbroken?

Has anythingbroken?

Page 22: agile-hp-2004.ppt

Tests Inform Programmers

• There are no explicit requirements or specifications– so tests cannot check code against them

• Tests serve same goal as requirements or specifications– they provoke programmers to

write the right programNo way!

Page 23: agile-hp-2004.ppt

Requirements for Test Notation

• Provoking the right code

• Improving product conversation– tests are something to talk about– ground conversation in the concrete– forging a common vocabulary

• Making possibilities more noticeable– explaining to someone else supplements

trying out working software– concreteness sparks ideas

Page 24: agile-hp-2004.ppt

The Tester As Participant

How can we best be concrete? What “goes without saying”?

What should the product not do?Who’s being overlooked?What bugs seem likely?

Page 25: agile-hp-2004.ppt

“Tester” As Job Title

How can we best be concrete? What “goes without saying”?

What should the product not do?Who’s being overlooked?What bugs seem likely?

Page 26: agile-hp-2004.ppt

Status

acceptance tests, customer tests, whole-product tests, business-facing tests…

Page 27: agile-hp-2004.ppt

Mid-Course Observation

Business Facing

Technology Facing

These tests primarilysupport programming(as well as the whole

team’s understanding)

Page 28: agile-hp-2004.ppt

Is This Really Testing?

• Checked examples– for discussion– for confident implementation– where are the bugs?

• Change detectors– for confident implementation– where are the bugs?

Page 29: agile-hp-2004.ppt

What About When the Examples Are Bad Examples?

(incomplete, misleading)

Page 30: agile-hp-2004.ppt

Extending the Model

Examples that usebusiness

terminology

Examples that useinterior

terminology

Business Facing

Technology Facing

Su

pp

ort

Pro

gra

mm

ing

Page 31: agile-hp-2004.ppt

Extending the Model

Examples that usebusiness

terminology

Examples that useinterior

terminology

?

?

Business Facing

Technology Facing

Su

pp

ort

Pro

gra

mm

ing

Critiq

ue P

rod

uct

Page 32: agile-hp-2004.ppt

Critiquing the Product

• What resource do we newly have?– the working product, including new code

• Exploratory testing– “simultaneous learning, test design, and

test execution” - James Bach

• Doing what?– diverse users and their scenarios– imaginative end-to-end testing– some opportunistic feature testing

www.satisfice.com/articles.shtml

Page 33: agile-hp-2004.ppt

Exploratory Bug Finding

Page 34: agile-hp-2004.ppt

A Quadrant Entry

Examples that usebusiness

terminology

Examples that useinterior

terminology

User-centeredbug reports

?

Business Facing

Technology Facing

Su

pp

ort

Pro

gra

mm

ing

Critiq

ue P

rod

uct

Page 35: agile-hp-2004.ppt

Status

Page 36: agile-hp-2004.ppt

Still Not Addressed

• What about security bugs, configuration bugs, performance problems, bugs revealed under load, usability problems (like suitability for color-blind people), etc. etc. etc.?– difficult to specify by example– whole-product, but not central to domain

Page 37: agile-hp-2004.ppt

These Are Technology Issues

• Understanding of implementation more important than understanding of a particular domain

Examples that usebusiness

terminology

Examples that useinterior

terminology

User-centeredbug reports

?

Business Facing

Technology Facing

Su

pp

ort

Pro

gra

mm

ingC

ritiqu

e Pro

du

ct

Page 38: agile-hp-2004.ppt

The Good News

Page 39: agile-hp-2004.ppt

My Take on the State of the Practice

Examples that usebusiness

terminology

Examples that useinterior

terminology

User-centeredbug reports

“ility” bugreports

Business Facing

Technology Facing

Su

pp

ort

Pro

gra

mm

ing

Critiq

ue P

rod

uct

Page 40: agile-hp-2004.ppt

Summary: Testing in Agile Projects

Page 41: agile-hp-2004.ppt

Reading (1)• Agile development in general

– www.agilealliance.org

– Agile Software Development, Alistair Cockburn

– “Agile methods, the Emersonian worldview, and the dance of agency”, Brian Marick, www.visibleworkings.com/papers/agile-methods-and-emerson.html

• Extreme Programming– Extreme Programming Explained, Kent Beck

– www.xprogramming.com/xpmag/whatisxp.htm

• Scrum– Agile Software Development with Scrum, Schwaber and Beedle

– www.mountaingoatsoftware.com/scrum

• DSDM– DSDM: Business Focused Development, DSDM Consortium

– www.dsdm.org

Page 42: agile-hp-2004.ppt

Reading (2)

• Agile from a tester’s point of view– www.testing.com/agile– Testing eXtreme Programming, Lisa Crispin and Tip House– [email protected]– www.testing.com/cgi-bin/blog

• Programmer testing– Test-Driven Design by Example, Kent Beck– Test-Driven Development: A Practical Guide, Dave Astels– Pragmatic Unit Testing, Hunt and Thomas– [email protected]

Page 43: agile-hp-2004.ppt

Reading (3)

• Exploratory testing– www.satisfice.com/articles.shtml– www.testingcraft.com/exploratory.html

• Context-driven testing– Lessons Learned in Software Testing, Kaner, Bach, and

Pettichord– www.context-driven-testing.com/wiki/scribble.cgi

• Miscellaneous– FIT: fit.c2.com (see also fitnesse.org)– Crossing the Chasm, Geoffrey Moore– Refactoring, Martin Fowler (et. al.)