Recently I was asked, "Does quality assurance have a place in agile software development?"
My knee-jerk answer was yes, but what form and function quality management takes depends on many factors. Some of these factors are:
- Are you in the business of making and selling heart monitoring instruments or basketballs?
- Is your business highly regulated by State, Local and Federal government?
- Does your business employ 6 or 60,000 people?
- Are your employees co-located or spread out all over the world?
- Are there in place stringent corporate policies and procedures to ensure compliance with the Sarbanes-Oxley Act ?
Let's start by agreeing quality is everyone's (the team's) responsibility and should be second nature to business analysts, architects, developers, etc. and not just the sole responsibility of a quality analyst. Quality Management (QM) should be viewed a fully integrated management and software development philosophy and approach to be practiced throughout the organization from top to bottom and consistently applied and "kaizened" day in and day out.
Dr. W. Edwards Deming, who is considered by many to be the father of modern quality management simplified quality management into an iterative four-step problem-solving process; Plan, Do, Check, Act (PDCA) as depicted in Figure 1.0.
Looking first then at quality management in the world of Scrum, a popular agile product development lifecycle, we see it aligns very well with the PDCA cycle:
- Plan - Release and sprint planning.
- Do - Team and customer collaboration by elaborating on requirements, doing some design, doing some coding, creating builds and doing some integration, and doing some testing , in one time-boxed pass through a product development lifecycle.
- Check - Concurrent testing, continuous integration, daily stand-ups, showcase and end of a sprint retrospective.
- Act - Adapt the way the team works based on what was learned from the retrospective.
Now in the more traditional sense Quality Management is a set of three essential and interrelated parts as depicted in Figure 2.0.
- Quality Assurance
- Quality Control
Delving into quality assurance, let's take a look at how practicing quality assurance might take shape in an agile software development effort:
- QA integrated into every team - A member of the QM team is now an active participant in a sprint planning and a sprint.
- QA testing role - If the role of Quality Assurance Analyst exists in your organization the Quality Assurance Analyst is accountable for helping the development team identify how they know when a story or task is "done". They help define done by co-developing tests with the team that anybody can run including the QM person. They also help determine how best to implement that test (manual or automated, which tools, etc.)
- QA team adaptation - If the role of Quality Assurance Analyst exists in your organization the Quality Assurance Analyst could lead your sprint retrospectives. The Quality Assurance Analyst will be the ambassador for the team doing the right things to ensure an eye on quality is built into the teams' way of working. The Quality Assurance Analyst will also ensure that all action items from the retrospective get reflected in the work in future iterations and releases and monitor the progress as action items are addressed.
Now with an eye on quality control let's look at the monitoring of specific Scrum artifacts and outcomes, as depicted in Figure 3.0.
Figure 3.0 - Iteration Lifecycle in Scrum
Stating the obvious, at a minimum and integral to any agile software development project, there should be evidence of a product backlog, sprint backlog, and the emergence of