Updated: Nov 30, 2020
Traditional software testers must step up if they want to remain relevant in the Agile environment. Agile will most probably continue to be the leading form of the software development process in the coming years.
Testers must add more skills to their arsenal to meet the new environment of an Agile team. Testing in an Agile team is much more than what testers did in traditional testing environments. It is no longer about working in one centralized test team that tests features once the development is done.=
Agile testing means more communication with stakeholders, faster testing with more advanced methods and many other challenges that demand testers develop themselves.
What Is It Like to Be a Tester in an Agile Transition?
It begins when the organization understands the many benefits of Agile and decides to make the Agile transition. Once the announcement is made, many questions are raised and uncertainty becomes the employee’s worst enemy.
When you are a tester in a testing team the uncertainty becomes even higher. Some of the classic questions:
How will this transition affect the testing team?
What should we do in the new Agile teams?
How can testers and developers work in one small team?
Who ensures that quality will not be affected?
This is just a narrow list of questions seen in almost any Agile transition. Sometimes it is not obvious to testers, who are used to owning the responsibility for testing, why they should now share this ownership with their team members.
What Are the Expectations from Testers in an Agile Team?
Your organization has started the transition to Agile and as a tester, you are uncertain what it really means to be a tester in an Agile team. Let’s review the main expectations from these testers.
Serve different key stakeholders
Though we may hate to admit it, testing is a service role. There is no shame in this. Testers should feel good about it, as the service they provide to key stakeholders is vital.
The testers’ success is determined by their ability to serve each stakeholder and meet their expectations, needs and interests. That might not seem so hard at first sight, but testers serve many clients that have expectations which don’t necessarily align:
Agile team members – Testers are part of their Agile teams, which means that they work closely with programmers. As a tester in a team, you make the programmer's job easier by providing fast feedback about the quality of their work. Creating these feedback loops is important in the Agile environment as it allows the team to identify and remove critical issues earlier in the sprint. From the tester perspective, creating effective feedback loops allows them to gain more respect and a lot more credibility, which increase their ability to support the team.
Project managers – The role of the project manager is to direct the project and to ensure it meets its milestones. The tester serves the project manager by sharing honest feedback and flagging any important issues that can impact the overall progress of the project.
Technical support – The technical support team is one of the most important teams in the organization, as they deal with product issues that have an impact on customers. Testers serve this team by:
Helping them investigate complex problems found in the field.
Alerting them to known risks and bugs.
Providing technical support when needed.
Educating the team on new added features or changes in the system behavior.
Moreover, the benefits that testers gain by providing these services are vital:
Close contact with the technical team brings them closer to the customer.
A better understanding of customer expectations.
Identify quality issues that the team has failed to identify pre-release.
Do not compromise on quality
We expect testers not to compromise on the quality of their work even when that annoys someone whose opinion matters. They should always keep their integrity and report any issue that affects the value provided to the customer.
It is simply their duty to report any concern they have that should be taken care of before the product is released. Sometimes those concerns will be ignored by a key decision-maker, but if that's the case it becomes their responsibility.
Collaborate with other team members
Collaboration is one of the key principles of Agile. As such, we expect to see it from all team members, and testers are no different. Testers should communicate with other team members and with external stakeholders that are part of the project.
Help other team members with a user story that has not progressed as planned. This can be by testing, writing code, setting-up the test environment or anything else.
Help other team members write tests at all levels of the application.
Work with the developers to report design issues that may cause major quality issues.
Conduct a test review, create test designs and reduce duplicate tests at the different testing layers.
Help with testability
Testability is one of the most important things that testers are expected to contribute. Testability helps the team increase quality. It also helps improve discipline and communications. Testability is a major part of any user story and is known as one of the six guidelines of the INVEST model for writing user stories.
Testers must be involved in all parts of this model, but especially on the testability side. They must help the team understand how and what they need to test this story, which will increase the contribution of the other team members to the testing effort.
Another aspect of testability is that testers now work closely with developers to advise on all testability aspects. As part of this discussion, the team will decide the test design, strategy and who executes which tests.
Light the way for others
A development project is like a road trip. Some projects are relatively simple and routine, like driving to the local grocery store in broad daylight. However, most projects worth doing are more likely to be like driving a 50-ton truck without fully functional brakes downhill on a mountain road.
These projects need guidance. As the tester, you bear the burden of responsibility to light the way. This is the place for testes to step ahead and determine the most efficient way (from a testing perspective) for their team to reach their destination, with a clear understanding of the bumps ahead, what they're about to run over, and how close they are to falling off a cliff.
Not learning is not an option
For any member in an Agile team, and especially for testers, learning is not optional it is mandatory. Testers have too many areas that they must continually improve, including testing methods, tools, coding skills, technologies, Agile frameworks and keeping up with the product they are testing.
Mentoring other team members
Software testers also contribute to their team by mentoring other team members in all aspects of testing. A good tester guides the team on matters of testing that help reduce dependencies and increase the overall effectiveness of the work.
Take an active part in defining done
From a tester’s perspective, the criteria of done help them ensure that each story includes all quality aspects that guarantee it is developed at the highest standards. For example:
All major flaws of the software are tested in a production environment.
All tests are automated to reduce future technical debt.
All major risks are mitigated with corresponding tests.
All functional and nonfunctional tests with priority are executed and approved.
Ensuring the proper use of testing tools
Just as programmers use different tools to improve their coding, testers have their own tools for the testing process. Testing tools are important because they help the team reduce costs and improve manual processes. Testing tools can help to automate tests, generate test data and reduce technical debt, which are huge factors in the team’s ability to deliver over time.
Pairing with other team members
A common practice in Agile environments is pair programming during development. As part of the development team, testers must adopt Agile practices to be able to provide value to the team.
Pair programming is based on two programmers working together with a single keyboard with one responsible for the actual coding while the second performs the review and analysis. Pair programming that involves testers can be done in the same way. The two team members can both be testers (one running the test and the second reviewing and analyzing test results) or one tester and one developer that use different perspectives to run exploratory sessions.
Like other team members, testers must have the skills to estimate the scope and size of the testing effort involved in delivering stories. This is important because it is part of the overall estimation of the size of the user story, along with coding, design, and research.
Generating fast feedback cycles
Although the entire team is responsible for the quality of the product, in most cases testers will be the ones who share feedback about the quality of the system. Testers must be able to conduct quick and efficient testing in order to deliver the fast feedback that is so vital in the Agile environment.
Testers can share their feedback with the team using different forms such as:
Quick sessions of exploratory testing.
Design and monitor quality KPIs.
Code and test review.
Help the team automate
As a tester on the team, you must be able to write automated tests and contribute to the overall testing effort. That does not mean that the testers will write the automated frameworks, but they most definitely assist in writing the test scenarios and analyzing the execution results.
Be ready to handle frequent changes
One of the biggest differences between Agile and traditional testing is the frequency of the changes we face during the sprint. As the Agile values say: "Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage."
In traditional testing, the room for change in the testing phase is narrowed almost to nothing and any disruption can severely affect the timeline and jeopardize the whole project. This allows the testers to work on their test strategy without the need to change it once they start testing.
The Agile tester must work in a continuously changing environment. This makes the test effort more difficult and challenging as there is simply less time to invest in deep documentation of in-depth test plans containing thousands of test scenarios.
Attend and contribute to the different events
Testers must be able to initiate a cooperative working relationship with other team members by attending and contributing to the different Agile Scrum events, for example:
Attend daily stand-ups to….
Stay up to date with sprint progress.
Update the team with known issues and synchronize about the different test activities.
Pair with other team members to plan their workload.
Attend the planning session to….
Determine the test strategy for the upcoming commitments.
Identify possible risks to the testing activities.
Estimate user stories from a testing point of view.
Attend sprint reviews to….
Take an active part in reviewing the completed work.
Review major quality risks that were mitigated and those that remain.
Update regarding the testing process based on the overall test strategy determined at the start of the sprint.
The exact boundaries and expectations from testers vary from one company to another. However, if you decide to have testers in the teams, you must ensure that they can add value using their expertise and not as management’s punching bag.