Agile produces results in frequent intervals, but is only valuable if done right. Quality assurance (QA) makes sure it’s done right by verifying that work has been completed as requested. Learn the methodology and best practices for QA in Agile.
Function vs. Role
Antoine has been helping his team transition to Agile by providing training around the methodology and best practices. When he discusses how the ideal team is cross-functional, his team does not respond well. The developers assume they will have to take time out to also be testers. The quality assurance (QA) testers assume they will be replaced with individuals who can develop in addition to testing. Antoine clearly needs to help them understand how QA fits into Agile. Before he gets into specifics, he starts by defining the function compared to the role.
The QA function is a necessity in any project methodology, including Agile. The work requested in a project must be verified before it can be considered complete, especially before it reaches an end-user. The function of QA is to test what has been developed, comparing the actual result to the expected result. If the actual results do not match what is expected, additional development and subsequent testing is needed. While the necessity of the QA function never changes, the role that completes this function can change.
The role of QA varies in different project methodologies. Most have a formal role designated exclusively for testing. Agile is more informal in regards to specific roles. Often the teams consist of developers and testers, but neither role is meant to be kept completely separate from the other. The goal is to have developers and testers actively engaged with each other throughout the process of completing of project work. Through this engagement, the QA role in Agile involves both testing and development.
Once his team has a better understanding of the role and function of QA, Antoine goes into more detail around the methodology. The methodology is the high-level view of what QA should strive to be. In Agile, the QA methodology is focused on integration, collaboration, and immediate feedback. Ideally, QA is active throughout, allowing the team to be proactive and reactive. Through each of these areas, Antoine is hopeful that his team will be excited about the role of QA in Agile.
In traditional methodologies, QA is often a separate task or process that does not begin until all development is complete. However, in Agile, different processes like development and testing occur simultaneously during the repeated cycles of the project timeline broken down into 2- to 4-week intervals, known as sprints. This is what allows QA to be integrated, because it occurs continuously. Testers are consistently active and able to contribute throughout the project.
When QA is integrated, collaboration between testers and other team members can occur. During development, the QA role is to proactively address potential bugs or negative tests that might not be considered. Project requirements typically provide desired functionality which is verified with positive tests, but do not address undesired functionality which is verified with negative tests. This allows developers to get ahead of potential issues and prevents rework, which shortens the time until completion.
While the goal is to be as proactive as possible, there will still be issues that need to be reported. In response, QA testers are able to provide immediate feedback about their results because their work is integrated with development. This immediate feedback allows developers to react quickly and prevents QA from advancing too far beyond the issue and having to backtrack and retest once changes are made.
The last thing that Antoine addresses with his team is the best practices. These are lower level items for implementing the various aspects of QA methodology. Integration, collaboration, and immediate feedback are valuable, but only if they are implemented. This is primarily done through participation in the various Agile meetings throughout the sprint. These meetings are what sets apart QA in Agile, making it truly unique.
One of the first meetings that occurs in a sprint is the Sprint Planning meeting. This is where the team meets to discuss user stories, which are broken down pieces of project work that can be completed within a sprint. QA collaborates on one component of the user story in particular, known as acceptance criteria, that describes low-level functionality and expected results. These are used as the basis for test cases and also set expectations for developers.
Throughout the sprint, the team has daily checkpoints, known as Standup meetings. These allow the team to discuss how user stories are progressing from development to testing to completion. QA is an active and vital part of this meeting. Testing updates are given on a daily basis, including testing that is completed or close to completion, as well as high-level descriptions of bugs or other issues. For user stories that are not fully developed, QA should get feedback from developers about when development should be completed.
As sprints draw to a close, there are two additional meetings that occur where QA needs to be present. The first is a Sprint Review meeting where completed user stories are shown by testers or whoever has done QA because they are close to and familiar with the functionality. The second is a Retrospective meeting where the team reviews the past sprint and discusses successes, failures, and areas of improvement. The QA role is essential in this meeting because the skill set needed for QA is the same skill set that helps address the different retrospective areas.
The QA role in Agile can be filled by any individual who completes the QA function of testing what has been developed. Often this role is filled by a dedicated tester, but this does not have to be the case. They key is that the various team members, regardless of their function, are actively engaged with each other. The methodology of QA is focused on integration, collaboration, and immediate feedback. QA is integrated throughout the sprint, where testing and development can occur simultaneously. QA collaborates on user stories in the Sprint Planning meeting, allowing the team to be proactive about areas that need to be addressed. In Standup meetings, QA provides immediate feedback on the testing results and the team reacts accordingly. At the end of the sprint, QA shows user stories in the Sprint Review meeting and helps the team self-evaluate in the Retrospective meeting.