Once, at a networking event someone asked me: “whether you’re working in agile or in a traditional waterfall model, do the testing activities really have to change? We still need to do the test analysis, design, execution, required level of exploratory testing, regression, performance, usability and the list goes on.”
It’s true, we do – Being Agile means adopting proactive ways for quality management. There’s a focus on adopting DevOps principles that enable us to mitigate risks early in the development cycle. Yet, unless the objective is technical refinement, the software development focus is on user behaviour. Arguably, that’s absolutely right. Rather than getting bogged down ensuring the correct operation of a single function, developers should be thinking about users. But there is still very much a need for people to ensure the code is fit for purpose, ready to scale and easy to adapt in the future.
In Agile, we talk a lot about shared responsibilities and every role in a development team has a part to play in ensuring and maintaining required levels of quality – not just the testing and quality assurance team. By adopting appropriate development approaches such as BDD, TDD, ATDD and pair programming, developers can produce well‑tested, self‑documented code. An additional benefit is that automation helps with repetitive manual testing. Agile should improve code quality from the start. Yet the growing adoption of Agile engineering practices such as distributed computing architectures, micro-services, continuous delivery pipelines, and cloud deployments, brings a new set of challenges. The types of testing required are more diverse, and the effort needed has increased. Now more than ever identifying the right skill set in testing roles is critical to success.
With Agile ways of working, a shorter delivery loop means that testers can struggle to assure the required quality levels (if they ask for more testing, they risk delaying the sprint by refusing to pass features as ‘done’), or they might end up reduced to the role of ‘checkers’, simply validating the implementation of the user stories.
So how do we combine agility with quality?
To assure quality throughout the software development lifecycle, continuous reviews should replace comprehensive documentation; dynamic decision-making fills in for detailed plans. Quality assurance personnel must do more than just test implemented code against a requirement in some kind of tick-box exercise.
Instead they should lead the process of embedding quality into every step of software development – helping all developers take a new level of responsibility and still hit an agreed timeframe.
Automation is an essential skill – but it’s a new one for many traditional testers and quality assurance personnel. It can be challenging, but an organization should support their testing staff not only to understand how automation works and how it can benefit the assurance practice, but also to develop their own skills. Even those who can’t build automated tests should be able to provide recommendations for where they should be in place.
Advocacy for the role of testing also has a place. Some people are so used to the idea of multi-functional roles, that they question the value of a specialist – especially if they are mixing up user testing with functional testing and assurance. In my experience, Agile development teams are only complete if there is an (experienced) agile tester or a quality assurance person in the team. It allows the testers and the developers to closely work together and in a timely manner.
What experience does an Agile tester need?
- Know how and why the organisation uses a certain technology stack
- Know how the domain is designed
- Gain experience in working in a DevOps driven environment, particular with continuous integration and automation practices
- Take a context driven approach to testing
- Focus on risk prioritised exploratory testing and regression testing as well as performance testing.
Quality Assurance and testing has a place in both the Waterfall and Agile worlds, but QA roles need to re-frame their picture when working in an Agile environment to look beyond purely functional testing.