In our team, developers create the vast majority of the
automated tests, whether they are acceptance tests, integration
tests, or unit tests. They do this because they are
story test-driven. They develop
stories from the
outside in , starting with the
user interface and are guided by the acceptance criteria. The
developers profile their code and create automated performance and
load tests as they go because code has to be production-ready at
the end of every
1-week iteration . Testers in our
team do exploratory testing and they're free to pair-up with
anyone, another tester or more likely a developer, to create any
automated tests they feel are missing. The testers, however, add
value to the team that goes way beyond testing. Working closely
with the Product Owner they facilitate connection and collaboration
with the customer, helping the team to empathise with users,
understand their needs and appreciate value from their perspective.
Working with the facilitator they help the team develop a
conscience that is focused on the delivery of value and quality,
while their continuous interactions within the team keep
collaboration high.
In the pre-planning game with the
Product Owner , Customer and a
few developers, the testers help grease the wheels for the coming
iteration's planning game by teasing out, through conversation,
preliminary details about the candidate stories to get them to
about the right size. Details are noted in pencil on the reverse
side of the story cards. The planning game is similar to the
pre-planning game except the whole team is present. Typically, the
Customer is absent because the conversations can get technical in
order to estimate the stories but the Customer can be there if they
want. Again, the testers help tease out story details and capture
these as acceptance criteria, in pencil, on the reverse of the
story cards. The team works together to identify the right
acceptance criteria for each story. The planning game is about
doing just enough planning to reach consensus on estimates and
commit to a delivery goal. Everyone understands that, as
collaboration occurs and the story is developed, it may be
necessary to add, remove or modify acceptance criteria.
When stories are started in an iteration, developers build them
out in
vertical slices that satisfy
specific acceptance criteria. When a slice is ready, the developers
have a conversation with the testers, demonstrate its functionality
and walk through the automated acceptance tests. When the testers
are happy they're left to run their automated build, which deploys
the latest code to their environment. Here they'll conduct their
exploratory testing. Exploratory testing functionality as it
emerges, slice by slice, helps avoid a tail-end testing crunch in
the iteration or, worse, trailer-hitching testing in a separate
iteration. Developers might also ask the Product Owner and Customer
to preview a slice to get more feedback. When this happens, the
testers act as chaperones to keep abreast of emerging details and
are part of any decisions made relating to the story.
Testers starve without slices so they pull slices from developers
on a regular basis to maintain a flow of stories that ultimately
make it to done in time for the
showcase .
Defects are rework and an expensive form of waste. When a defect
is found in a story and the story is still being developed, the
defect is a stop-the-line event. The testers interrupt the
developers working on the story and ask them to fix the defect in
the next slice. This conversation usually includes the testers
showing how to reproduce the defect. If the story is no longer
being developed - maybe the defect was discovered after a story was
completed - the testers write the defect on a pink card, which is
then placed at the top of the
board , so it will be the next
card to be started.
Testers on our agile team have found their working day to be very
different. They're using the same testing skills and they're
finding new skills as they collaborate more within the iteration.
Sunday, 4 May 2008
Testers in our agile team
Posted by Simon Baker - Permalink
2 Comments
Well said!
Spot on! I have been working somewhat like this as a single tester in an agile team a couple of times, and you are perfectly explaining the context and things to think about. There is just too much of testing to do for a single tester to do the actual hands on everything, so coaching developers doing it is a more effective way, and then putting ET focus on the most important slices.
I like the pink cards idea and that of interruption for fixing defects, but I think there are many different views on interruption if you take into account the context switching etc. But that is a thing you should agree on in the team.
I also very much like the way you describe the tester as an actual information hub for the overview knowledge of the system and agreements on discussed matters. That is something that I value alot, and it is not always the best thing to leave just for the scrummaster/product owner etc. I really think that the quality mindset needs to be involved also here.