The role of a software tester in an Agile environment goes beyond “just testing” and logging bugs. It is more working as part of a development team and working closely with the product owner. The tester works with everyone in the team in order to improve and build quality into the product as early as possible.
When a tester is hired, what comes mind for many is "just testing." Many project stakeholders in Agile and traditional environments see testers as team members who only run test script, identify defects, and log them for fixing. They see them as nothing but testers -- not test analysts.
As you read this piece, take a few seconds to ask yourself what you think a tester is. Now, be honest, do you really think the role of a tester is so substantive that without him a multimillion dollar project could fail? Skilled, thoughtful, and analytical testing is required to go far beyond what some may term as “just testing."
In a non-Agile environment, the role of a tester includes analysis, test-scripts design, and execution. He is involved right from the project initiation stage up to when it is closed, but in an Agile environment his role primarily is to work as part of a development team, and to ensure that quality is built into a product by working closely with the product owner. This helps a tester get more details out of the story cards -- it will be difficult for the development team to meet the acceptance criteria and consider a story "done" if the tester does not engage the product owner.
Agile principle: The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
A tester communicates more in an Agile environment; usually he becomes very communicative within the team without even realizing it.
From my own personal experience, I have found that testers end up initiating a lot of the communication and coordination in Agile environments. They interact with programmers (who typically are engrossed in the features they are developing or the bugs they are fixing) and the product owner (who tends to have deep knowledge of the features to be developed but have little time for the development team).
The tester is highly motivated to proactively engage everyone who can help add value to the process and the product.
Agile principle: Continuous attention to technical excellence and good design enhances agility.
A tester in a cross-functional, self-organizing, and collaborative team knows how relevant technical skill is. Aside from preparing and positioning himself for technical input when required, a tester also works with the programmers and product owners; he could be seen as contributing either way to get issues resolved and moving. Contributions could be code review, requirements/user stories grooming, or coding where it is tenable. He does pretty much anything as part of the team. The tester is involved because he knows he must be part of a team that delivers value at the end of every sprint.
Testing can be a lot of fun in an Agile environment because of the collaboration enjoyed in being part of a self-organizing team. Team members work together more; there is less self-interest and there are fewer arguments between the developers and testers because everyone's goal is the same.
Agile Manifesto: Individuals and interactions over processes and tools.
Aside from testing (not “just testing”), there are no absolute rules for the role of a software tester in an Agile environment. The role of a tester therefore hinges greatly on skill and personality (i.e., interpersonal relationships). If I am recruiting for a tester to work on an Agile project, I put a high premium on skill and personality.
Let me put it this way: If a tester has strong design and coding skills but is deficient in the area of interpersonal skills, he could be a challenge for the team. On the other hand, if a tester has great interpersonal skills but is deficient in technical ability (yet ready to learn), the development team could absorb him and neutralize the deficiency in time.
Primarily, a software tester's role is to test, but largely he must be highly interactive and analytical in an Agile environment. These analytical and interactive skills are among those that distinguish a tester from “just testing.”
One major responsibility of testers in Agile is to help describe the features. Before the feature or user story goes into development, the tester (and others) meet with the product owner to discuss what is on the story card. The goal of the conversation is to create an opportunity for a good understanding of what the product owner wants. Skilled testers can be of great help here as they are capable of detecting and recognizing ambiguity even before testing begins.
Testers know how to think of relevant scenarios that can help meet the validation of acceptance criteria well in advance. Applying this skill before development begins, rather than during or after development, will help ensure that the development team is focused on delivering the expected goal for the sprint. Ultimately, testers not only detect issues but also help prevent them.
It is great for a tester to have automation (programming) skills; they can help turn user stories into automated test scripts in development -- but not all testers have the skill. Lack of test automation skill therefore cannot be a determinant, but is essential that a tester picks up this skill as soon as he can in the spirit of contributing to a cross-functional development team.
It is an added advantage for the team if the programmers can automate test scripts for the tester to run at any time, and then conclude the sprint with some exploratory testing.
One benefit of the cross-functional development team that is not often mentioned is that testers help programmers build their testing skills. Programmers would usually write lots of unit tests. This gives the programmer the benefit of learning while working with testers.
The role of a tester goes on and on, beyond just detecting and logging defects for programmers to fix. To conclude and to put things in perspective, testers can be said to be doing more than “just testing” because:
They attend meetings to clarify user stories and changes. Agile is an iterative and incremental process, and constant interaction within the team and with the product owner is therefore essential.
Their effective communication helps put the developers and product owner on the same page.
They are capable of identifying risks, mitigating them where possible, and prioritizing all tasks that could help deliver a shippable product at the end of every sprint.
They make suggestions and give input on automating nightly builds, Integration, and regression, as well as exploratory and acceptance testing.
They give continuous feedback to the entire development team on the status/progress of the product being designed.