Friday, January 21, 2011

The Role of an Agile Tester

Recently, I was asked about the day-to-day role of a tester within an Agile software development environment. The role of the tester is going to depend heavily on the overall structure of the Agile/Scrum team. In some environments, the testers are expected to be an integral part of the team, and that is, in my opinion, a very good thing. Other times, though, testing remains an after-the-fact activity that occurs once the programmers have finished their work. I think that Agile is difficult to implement successfully in this kind of environment.

I believe that one must look at the tester's role from both the day-to-day and the over-time perspectives. The day-to-day perspective should emerge from an understanding of how the testing emphasis changes over time. In the beginning of the project, the testers will be engaged primarily in creating (or fine-tuning) the automated test infrastructure. Due to the pace of Agile software development, automated testing becomes extremely important. Otherwise, the testers will not be able to test as thoroughly as they might like in each iteration, and the project will incur a significant amount of technical debt that must be addressed prior to release. (Think about large manual regression test suites that cannot be run within each iteration but which must be run before each release. This sort of manual testing is particularly difficult in an Agile setting.)

As the project gets underway, testers will work to create test plans and test cases for upcoming iterations. The goal is to have these test plans and test cases defined before the developers start work on the stories they are intended to test. That may not be entirely possible in reality, but it does help to have as many of the tests written as possible so that they provide the programmers with a clear and unambiguous definition for "done."

Over time, the emphasis shifts from infrastructure and test creation toward test execution. The tester's role shifts to automating existing test cases and performing manual exploratory testing on the evolving and maturing application. Automated tests are run regularly, ideally as part of each automated (or at least nightly) build, and they help to provide the comprehensive regression on the mature parts of the system. The testers need to be able to focus on the parts of the application that have just been implemented.

0 comments:

Post a Comment