Agile has challenged the world of development, operation and project management, leaving them to redefine their roles and work together on one team in a fast-paced software development environment; but one of the most difficult hurdles in the world of agile is rethinking the role of the tester, according to Ian Culling, CTO of VersionOne.
“Traditional testers going into an agile world need to start really absorbing the fact that their work isn’t writing out defects anymore; it is delivering software,” he said.
The role of the software tester changes considerably in an agile world. Testers no longer have the time to test for everything, testing is no longer an afterthought and testing is no longer the sole responsibility of the software tester, according to Kartik Raghavan, senior vice president of worldwide engineering, operations and support at CollabNet.
“Long gone are the days when testers huddle together in a silo waiting for dev to pass them a build,” he said. “The lines between dev and test have blurred, and so have the respective roles. Developers are writing tests and testers are writing code. And most importantly, test is happening early and often.”
In this agile world, testers’ roles are more important than ever, but the road to becoming an agile tester is a bumpy one, according to Culling.
“As compared to a traditional tester role, agile testing is a very different experience, and most traditional testers will struggle,” he said.
What it means to be an agile tester
Agile is a team game, and software testers are no exception. While testers are often known as the antisocial group in software development, they need to step out of their comfort zone and work with the entire team throughout the life cycle, according to Kevin Dunne, senior product specialist at QASymphony.
“One of the key tenets of agile and the agile manifesto is that people really value face-to-face interaction and collaboration, so moving into an agile world, testers really need to embrace that,” he said.
According to Marc Rambert, director of testing solution at Coverity, collaboration is not only something that testers need to embrace, but it is absolutely mandatory for agile.
“A tester needs to be a key contributor to the agile team,” he said. “Their ability to communicate with all stakeholders, specifically developers, is crucial to success.”
In order for testing to be brought successfully into the team level, quality has to be baked into the life cycle from the beginning to the end, and testers need to communicate with the development team as code is being written.
“It eliminates the ‘us versus them’ mindset that you find in a lot of the traditional workflows,” said Cathy Correa, agile tester at VersionOne. “Testers are working with the development team to build quality in. They are looking at the work in progress at the same time development is going on so that when a story comes through they’ve pulled it together as a team. It is all about having those conversations as development is going on so that you are not taking something that development gives you, finding the bugs and bringing it back.”
Baking quality directly into the life cycle also takes the responsibility of quality off the testers and puts in onto the teams.
“A tester’s role is no longer simply the policing role of quality assurance, but is now that of a collaborative contributor to producing quality software,” said CollabNet’s Raghavan.
In a traditional environment, testers were often brought in at the end of the life cycle where they had weeks to just test. But in an agile world, the process is more fluid and ongoing. Testers have to give up a certain amount of control from last decade to this decade, according to Matt Johnston, chief marketing and strategy offer at Applause.
“An agile tester should be someone who is comfortable being uncomfortable. It has to be someone who is comfortable operating with incomplete information,” he said.
This means no longer being the gatekeeper of maintaining quality, according to Nikhil Kaul, product manager at SmartBear. But that doesn’t mean that a tester’s role isn’t just as important when it comes to ensuring quality.
“Agile testers act more as a facilitator to ensure quality is implemented throughout the software development life cycle,” he said.
On an agile team, there is no time to test for every single bug or defect with development going on a such a fast pace, which is why quality is a team collaboration, according to Correa.
“Having that collaboration with the team, you are testing as they are working, and you are making sure that the developers know what needs to be done, the test cases that need to pass, the features that need to pass,” she said. “Talking back and forth and checking things as they are being developed is really the only way to do it.”
In addition, the mindset of a tester needs to change when transitioning to agile. They are not only looking at quality from a test perspective, but also the customer’s perspective, according to QASymphony’s Dunne.
“The tester’s job now is really to work with customers and understand what they want and how they use the tool,” he said. “In an agile environment, we can’t test everything usually because of how quickly we are delivering software, so we want to test software and understand it and look at it through the lens of how users.”
The blurred line between developers and testers
Many testers fear going into an agile world that they will become functionally redundant. In agile, the roles mesh together, with developers taking on testing roles and testers taking on more development roles. But testers must remember that although everyone on an agile team can and is expected to do some form of testing, testers bring something different to the table, according to Dunne.
“If you are the person who developed the feature, you are pretty biased on if it is working properly,” he said. “You always need a little bit of disconnect; you need that person who wasn’t involved in building it.”
But it isn’t only the fact that developers are more involved in the building process than testers; it’s a tester’s knowledge that keeps him or her relevant. Developers and testers approach testing from different perspectives and have different voices, and while they can do the same sort of tasks, it is the experience that really makes the difference, according to VersionOne’s Correa.
“It is good to blur some of those lines with development and testing, and there is a lot of shared responsibilities; but at the end of the day the testers have the expertise,” she said. “They have the honed skills of knowing where to look, what to test for and what kind of interactions and behaviors that they can expect when someone comes up with a story.”
Succeeding in agile as a software tester
When transitioning over to agile, there are specific technical and non-technical skills testers should come prepared with in order to succeed.
First of all, understand why this is happening. Don’t worry about the challenges; focus on understanding why the business is doing this, how it benefits the company or product, and what the business hopes to achieve, according to Applause’s Johnston.
“I do think a lot of testers and test managers jump right to ‘What does that mean for me?’ or ‘How am I going to do this?’ and they kind of skip past the why,” he said. “If you have that concept, it can inform a lot of the decisions that you make about what and how you are going to go after it.”
Most importantly, don’t fight the change; embrace it with an open mind, said SmartBear’s Kaul. In a traditional world, a tester might have had one specific focus, but in an agile world a tester wears many hats and need to be flexible with his or her skill set.
“Testers in an agile world cannot be narrowly focused in one area,” Kaul said. “They need to be open-minded and willing to gain technical specialties, not only in existing areas, but also new. Testers in an agile world are jack-of-all-trades and master of a few, rather than just being generalists or specialists.”
Don’t be afraid to ask for help. According to Coverity’s Rambert, testers need to be familiar and comfortable with the agile process. “This can be a challenging transition, so open communication and change are key factors for success,” he said.
Be able to think on your feet and switch between techniques early. “Testers need to know what would be the most efficient way to test a particular scenario,” said Kaul. “An understanding of when to use exploratory vs. manual vs. scripting is crucial.”
Share your knowledge. Testers are very knowledgeable about their products, and a lot of that knowledge needs to be shared among the team to make sure everyone is getting valuable feedback, according to QASymphony’s Dunne.
Take a continuous learning approach and invest in yourself. Testers need to constantly be refining and growing their skill sets, according to Johnston. “If you are not asking yourself questions such as ‘Should I get more into performance engineering, more exposed to test automation, or more exposed good test case writing?’ then you are standing still and the world is moving faster and faster past you,” he said.
Kaul added that learning shouldn’t just be focused on the practical implementation of agile within the organization, but also the industry. “Going to different agile conferences can be of great help here,” he said.
On the technical side, testers need to be continually testing throughout the project, and automation is key, so having scripting abilities or the ability to use a tool to help build automated scripts is very useful, according to Kaul.
“Test automation also requires learning new techniques and tools, and being able to understand more technical aspects will ease the communication with developers,” Coverity’s Rambert said.
Bring techniques such as exploratory testing and Test-Driven Development (TDD) into the agile world. “You want to be looking at the product and if it make sense,” said VersionOne’s Correa. “A tester isn’t just someone who executes test; it is definitely trying to explore the feature in different ways and being smart about what you are doing.”
TDD is significant because it helps change developers’ and testers’ mindset on delivering and designing code. “In some agile environments…TDD becomes the driving component,” according to Dunne. “The first thing we think about is how are we actually going to test. Let’s not build this feature, let’s think about how will this it fit this feature.”
What organizations are looking for in an agile tester:
- Being more involved with requirements early on in the life cycle: “By understanding requirements early, test plans and requirements specs can influence each other to the benefit of all,” said Kartik Raghavan, senior vice president of worldwide engineering, operations and support at CollabNet.
- Knowing how to script: “Automation plays a key role in agile testing as it helps teams get rapid feedback on quality in real time. Testers therefore need to know how to script to work effectively with developers in an agile landscape,” said Nikhil Kaul, product manager at SmartBear.
- Embracing continuous integration: “Think of CI as the new way test suites get run and report feedback. The primary difference is that tests are run immediately upon check-in and work to inform the whole team, not just QA, about the stability of the check-in,” said Raghavan.
- Being creative: “Testers are in a unique position where they have exposure and knowledge of the product and also a good understanding of the customer. They can sort of think outside the box. We want to see testers coming up with a lot of not only innovative features and suggestions of enhancements that they can add, but also coming up with innovative ways to test,” said Kevin Dunne, senior product specialist at QASymphony.
- Thinking systemically: “The people that can help make structured decisions about what to automate and what not to, what test cases we need to write and what we should push off to the world of exploratory testing,” said Matt Johnston, chief marketing and strategy officer at Applause.
- Being open to change: “If you are moving from a traditional tester to an agile tester, you have to be open to the change, change in the philosophy and change in the way you work,” said Cathy Correa, agile tester at VersionOne. “It is going to be different and testers need to be open to that.”
How tools help an agile tester
In agile, testers can’t be expected to do everything themselves. Development is going too fast, and testers don’t even have enough time to test for everything anymore, let alone do everything manually. While there is no one-size-fits-all agile tool, there are certain things a tool can have to help streamline the workflow.
“As development and testing activities get unified, modern ALM tools bring together work tracking and management across the life cycle into a common integrated tool chain as opposed to siloed systems that have existed prior to agile adoption,” said CollabNet’s Raghavan.
When exploring tools, testers should always look for one that is flexible, according to QASymphony’s Dunne. “Tools should be flexible and able to change,” he said. “Buying a tool that forces you into one workflow where you are stuck doing that process over and over again is really going to keep you from driving that continuous improvement that you are looking for.”
With the shorter sprints in agile, it can be helpful to find a tool that is able to reuse a single script across multiple platforms, according to SmartBear’s Kaul. He added that tools should be able to help testers automate easily, support modular testing and integrate with build systems to enable continuous testing.
Lastly, using intelligent test coverage tools can help make a difference, according to Coverity’s Rambert. “As the release cycle is much faster with shorter sprint, QA needs to aggregate all testing activities in order to show that all changes are being covered, and that there are no testing holes in critical business areas,” he said.
Some tools testers transitioning to agile should get familiar with, according to VersionOne’s Correa and Culling, include:
- Source control tools such as GitHub, Subversion and Git
- Continuous Integration tools, in order to automate test execution in the build and deployment pipeline
- Open-source tools such as Selenium and PhantomJS for website browser automation; JMeter for performance testing; and Fiddler for Web debugging proxy
- JavaScript libraries and frameworks such as Mocha, Jasmine and Chai
- Browser extensions that help troubleshoot issues, automate processes, monitor traffic and catch errors