The approaches to and opinions about quality assurance in an agile software development are varied and contentious. Some teams would argue that there is no role for quality assurance in a properly run agile software development team. Others would push back and state that it’s impossible to guarantee quality without having dedicated quality assurance agile team members.
Quality assurance in agile software development can be considered a grey area. There is no definitive – do this, don’t do this, and always make sure this. Just like everything in agile, quality assurance and how it does or doesn’t happen is up to the team and company. But one thing is guaranteed – quality has to happen – it’s how this is achieved that makes the discussion about quality assurance a hot topic.
You don’t need to be told that you need people on your agile software development team who are responsible for ensuring a quality product. You don’t need to be reminded that agile tries to minimize processes and tools and focus on the individual. You don’t need to be told over and over again that done has many different meanings and applications.
There is no right or wrong way to succeed with quality assurance. It’s in the doing, adjusting, and calibrating that your team will find the right approach to quality assurance. It could be a variation of pair programming, a focus on test driven development, a complete focus on test automation, end-to-end testing, or a combination of the best of each approach.
Since we can’t tell you exactly what to do, we want to give you some ideas on how to use quality assurance within your software development team. Whether you’ve got a new team or are new to agile or are struggling with defining roles within your agile software development team, use this article as a conversation starter, jumping-off point, or blueprint of quality assurance ideas.
The Agile Manifesto and Quality Assurance
At first glance the principles of the Agile Manifesto appear to be in polar opposite of quality assurance methodologies. However, as with all things agile, the Agile Manifesto is open to interpretation.
- Individuals and interactions over processes and tools. Team, team, team – this is the very essence of agile software development. When your quality assurance specialist are part of the agile software development team they can be involved, collaborating, and communicating – all with a focus on ensuring quality.
- Working software over comprehensive documentation. Traditional waterfall quality assurance relies on heavily detailed test plans and documentation. In an agile team, this translates to the quality assurance experts spending their time doing testing and providing feedback, rather than writing test plans. Of course, there does need to be a way to track testing, but this can be done with one-line test scenarios, error checklists, risk-based testing, exploratory testing sessions, or user stories with integrated test markers.
- Customer collaboration over contract negotiation. In an agile quality assurance team, the focus is 100% on the customer – both external and internal customers. Often times because the quality assurance expert knows the product better than anyone else on the team, this person becomes an advocate for the customer. Think of the quality assurance team as a customer and you’ll get some real insight into the software quality.
- Responding to change over following a plan. Change can be hard for anyone on an agile team, but with a well-organized approach to quality assurance, change is welcomed and encouraged. After all, it’s through quality assurance that areas for improvement are identified, blockers are found, and in some cases the need for a complete redesign – all of which drive change in the product, iteration, and company.
There is a reason why the Agile Manifesto remains relevant – it is the foundation for how agile companies think, respond, communicate, and thrive. The key is in making sure that there is flexibility in how these guide posts are interpreted and applied. There is nothing absolute or rigid in the Agile Manifesto, making it an ideal springboard for thinking about how quality assurance fits into your agile software development approach.
Four Ways to Integrate Quality Assurance in Agile Software Development
Your team is asking for advice on how to improve the role of the quality assurance team. Your managers are asking why you need to hire more quality assurance staff. You want to make sure that quality is still the focus and driving principle of your entire agile software team.
Sometimes it takes knowing how to do quality assurance better – the following four points can serve as a way to get your team thinking about how quality assurance can and should be integrated.
- Understand agile software development. As we highlighted above, team is integral to agile success. Make sure your entire team understands agile software development – the intentions, foundation, and guiding values. Knowing this helps keep the focus on the team, communication, and quality.
- Remember to collaborate. In waterfall, testing and quality assurance happens at the end of the development cycle. The opposite is the case with agile software development, quality assurance can happen concurrently and from the very beginning when requirements and user stories are defined. Keep your developers and quality assurance people working together to support communication and collaboration.
- Flexibility to different approaches. All too often teams get stuck in doing development and testing with one prescribed methodology. Agile software development is designed to allow for more – support your quality assurance team in being involved from the beginning, in testing features before they’re code complete, getting quality assurance involved in UX reviews, and in any other area. Be flexible in how you think of the role of quality assurance in your team.
- Nothing is perfect. You’re not going to get it right every time. Just because the last iteration was a success, doesn’t mean this one will be. Just because pair programming helped eliminate defects on another project, doesn’t mean the same will happen for your project. Remember, to be open and ready for change, challenges, and rooms to improve. Learn to look for the root causes rather than focusing on the obvious glaring problems.
Successful agile software development is a journey. There are twist and turns, missteps, and second chances. Don’t get caught up in getting things done perfectly – people are going to react differently to change, people won’t want to try pair programming or end-to-end testing, people won’t want to collaborate freely – this is all part of figuring out how to make agile work for your team.
It is important through-out the discussions on how quality assurance fits into your agile software development team that you remember that the customer and quality must be the focus. How you get there is up to you – just make sure you’re doing it in the way that is best for your team, your customers, and your organization’s goals.