Yet agile development methods increasingly seem to require or imply that all people in the project team should test, including developers.
So, first of all, why is it that developers can’t test? Are we to believe that these highly intelligent individuals somehow don’t have what it takes to test? Of course not.
The trouble is simply this: Good developers build their code to handle every scenario they can think of. If they’re really good developers, they write automated unit tests to test everything they’ve built. And if they’re really good developers, they even do this up-front so everything is designed and built to pass first time.
But still it’s not enough.
For developers only build (and therefore test) everything they can think of. And testers, partly due to their nature and partly due to the fact they’re not buried in the detail of implementing the code, are able to think up scenarios that the developer didn’t think of. And that’s the problem.
So what do we do in agile development, where everyone is expected to test?
My answer is this:
Wherever possible, do include at least one dedicated tester within the Agile Development team. If the tester is not able to test everything personally because there are more developers than the tester can handle, have the tester take a special QA role, including the following activities:
- Identify the test strategy and test scenarios
- Ensure the appropriate test environments are in place and controlled
- Write the test cases/scripts – ideally up-front but on a just-in-time basis per feature
- Review the developers’ automated unit tests, to avoid re-testing the same things later and to QA the scope of the tests
- Execute some of the most important test scripts personally, particularly where there is higher complexity or risk, less clarity or where more attention to detail is required
- Coordinate the test efforts of others (including developers), so one person knows what scripts have been executed, what areas have been tested, their status at any time, and the issues logged against them
- Manage the bug log to ensure issues are logged clearly and prioritised consistently
- Liaise with customers and/or business users to organise acceptance testing and advise on approach
- Ensure that each developer’s code is also tested by someone else, even if it’s another developer
In my experience, there is real business value in having tester expertise for this quality management / quality assurance role, even in a situation where there aren’t enough testers to go round. In an Agile Development environment, the emphasis of a tester’s role is more on QA than it is on testing per se.