An agile development team is cross-functional, meaning that as a collective the team has the capability of building a potentially releasable increment (the working software). Given that testing is focused on verifying the behaviour against expectations, and that the whole team is collectively responsible for quality – what does the professional tester do for the team in an Agile world?
My assertion is that the role of the professional tester in an agile team is that of the quality coach, as well as completing their work as a member of the developers.
To be effective the tester needs to coach the team through every stage of the lifecycle, from requirement to completed product, by helping the team be clear around the tasks of each phase. By doing this the tester can ensure that the business are clear about what they are building (build the right thing), and the development team comply with agreed quality standards (build the thing right).
Phase and Tester activity
Backlog Refinement (Requirement Gathering)
Ensure that there is a common understanding around what is being requested. Have clear, unambiguous acceptance criteria. Help the business be clear on the value proposition for each item.
Focus beyond the “happy path” scenarios. Be clear around boundary conditions, exception handling, and failure and exception management.
Challenge the team to consider the impact of the design on:
Be clear with the other team members on how this will be tested.
Develop (build and test the increment)
Create and execute on the test plan. Be clear that the other team members will need to be engaged in the creation, execution and maintenance of all the tests – automated and manual. Make the build process include testing, and fail when a test fails. Keep the feedback loop as short as possible between a code commit and feedback on the quality. Challenge the team to extend the testing techniques used. Test the deployment in an environment as close to live as possible.
Have a test for the deployment of the product. Have a smoke test plan – a series of tests that will confirm whether the product has deployed correctly in to the environment, and that the product is working. Make sure that other teams can keep working after your team’s changes are merged through to their code.
Focus from the outside in.
When you are working on the product, it is important to start working from the highest level (the desired value proposition), working through the successive steps in to the granular detail of the individual code (unit) tests.
Why build something that is of no value or use?
Tools and Techniques
There is no single tool or technique that will allow your team to achieve all their goals. It is important that you continually explore new tools and techniques to improve the way your team achieves the agreed quality standard.
- Read blogs from Testers you respect
- Go to user groups – Meetup is a good tool to find events close to you
- Check updates from tool companies that work on your technology stack (home page)
We often forget to look around us to build up communities within our own organisations, this will help us to grow the focus on quality
Call to Action
When you’re working within an agile team, finding bugs is a by-product of having a focus on quality throughout every phase in the product lifecycle. Challenge yourself and your team to focus on quality – and aim for less bugs in each and every build.