Lessons learned as a tester on Agile Teams...
A tester commented today that there wasn't much written about testers on Agile Teams. He meant, not a lot that was concrete. The reason for this is because so much of the thinking in this area is fluid and changing. This is why I prefer to read blogs rather than books...
I tried to distill from all this a list of things seemed reasonably static... common wisdom if you will and I decided that I couldn't really pin many things down... so, instead, all I can do is share some of the lessons I've learned having been a member of several Agile Teams over the years.
By Agile Teams, I mean development teams that generally (although not religiously) subscribe to the ideals behind the Agile Manifesto. My experience is predominantly with teams acheiving this by using some combination of Scrum, User Stories, Executable Automated Acceptance Test Driven Development, (Unit) Test Driven Design, Continuous Integration, Design Patterns and Exploratory Testing.
These are a few key lessons I've learned... perhaps they are common with yours... perhaps not...
- Co-locate/integrate testers and programmers into a heterogeneous development team (let's leave the idea of Assimilation alone for now - James Bach and I are discussing off-line and I hope to publish a follow up in the not too distant future)
- Customer, Tester & Programmer collaboration is ideal for writing Acceptance Tests - if not, at least Customer (input) & Tester (amplifier)
- Nuture testers' programming skills as well as testing skills
- Nurture programmers' testing skills as well as programming skills
- Manage testing tasks as part of development - e.g. in Scrum, as tasks on the sprint backlog (no sepearate test plan)
- Use Exploratory Testing to generate feedback (either as bug-reports or new stories and associated acceptance tests)
- Use Pair-Testing when Exploratory Testing and designing Acceptance Tests for new or challenging features
- Put output of feedback (bugs or stories+tests) on the product backlog in order that they receive regular attention from the customer/product-owner
- Reproduce bugs using automated tests before fixing them
Now, in regards to co-location above... I'm not saying that you shouldn't have a separate testing team testing the living daylights out of the software as well... but this blog is about what happens inside the development team (made up of programmers & testers). Sometimes you'll want that separate test-team and in others you might not... but that's a subject big enough to have a separate blog-post about.
What lessons have you learned?
