Fitting Quality Into Your Process

Central to successfully using any QA pattern is knowing where quality concerns might fit into your process and the removal of any physical and organizational impediments that prevent you from taking action.

Pattern Name Description
Break Down Barriers
Tear down the barriers between QA and the rest of the development team. Work towards engaging everyone in the quality process.
Integrate Quality
Incorporate QA into your process including a lightweight means for describing and understanding system qualities.

Identifying Qualities

An important but difficult task for software development teams is identifying the important qualities (non-functional requirements) for a system. Quite often system qualities are overlooked or simplified until late in the development process, thus causing time delays due to extensive refactoring and rework of the software design required to correct quality flaws.

Pattern Name Description
Find Essential Qualities
Brainstorm the important qualities that need to be considered and list them for inclusion on the product roadmap.
Agile Quality Scenarios
Create high-level quality scenarios to examine and understand the important qualities of the system.
Quality Stories
Create stories that specifically focus on some measurable quality of the system that must be achieved.
Measureable System Qualities
Specify scale, meter, and values for specific system qualities.
Fold-out Qualities
Define specific quality criteria and attach it to a user story when specific, measurable qualities are required for that specific functionality.
Agile Landing Zone
Define a “landing zone” that defines acceptance criteria values for important system qualities. Unlike traditional “landing zones,” an agile landing zone is expected to evolve during product development.
Recalibrate the Landing Zone
Readjust landing zone values based on ongoing measurements and benchmarks.
Agree on Quality Targets
Define landing zone criteria for quality attributes that specify a range of acceptable values: minimally acceptable, target and outstanding. This range allows developers to make tradeoffs to meet overall system quality goals.

Making Qualities Visible

It is useful for team members to be aware of important system qualities and have them readily available. This can be done through quality radiators, similar to what Alistair Cockburn describes in making any information radiator—visible tangible things that keep people’s attention. Quality radiators, just like other information radiators need to change and get adjusted and have new and changing information otherwise they become wallpaper [Co].

Pattern Name Description
System Quality Dashboard
Define a dashboard that visually integrates and organizes information about the current state of the system’s qualities that are being monitored.
System Quality Radiator
Post a display that people can see as they work or walk by that shows information about system qualities and their current status without having to ask anyone a question. This display might show current landing zone values, quality stories on the current sprint or quality measures that the team is focused on.
Qualify the Roadmap
Examine a product feature roadmap to plan for when system qualities should be delivered.
Qualify the Backlog
Create quality scenarios that can be prioritized on a backlog for possible inclusion during sprints.
Quality Chart
Create a chart or listing of the important qualities of the system and make them visible to the team; possibly on the agile board.

Becoming Agile at Quality

Agile software development is an iterative and incremental development process. The software evolves and adapts to changing requirements. Self-organizing, cross-functional teams perform the work. Most agile processes embrace quick responses to change. The ability to change and adapt is accomplished through short sprints with flexible planning, short delivery and extensive feedback. Agile processes focus on prioritizing the most important requirements and elaborating on those requirements just in time.
In any complex system, there are many different types of testing and monitoring, specifically when testing for system quality attributes. QA can play an important role in this effort. The role of QA in an Agile Quality team includes: 1) championing the product and the customer/user, 2) specializing in performance, load and other non-functional requirements, 3) focusing quality efforts (make them visible), and 4) assisting with testing and validation of quality attributes.
For small teams, including a QA expert as part of the team can seem natural and fit into the organization without too much pandemonium. However, this might not scale well for larger projects that require more and larger interactive teams; i.e. 6 Scrum teams doing a scrum-ofscrums to deliver an enterprise application.

Pattern Name Description
Whole Team
Involve QA early on and make QA part of the whole team.
Quality Focused Sprints
Focus on your software’s non-functional qualities by devoting a sprint to measuring and improving one or more of your system’s qualities.
QA Product Champion
QA works from the start understanding the customer requirements. A QA person will collaborate closely with the Product owner pointing out important Qualities that can be included in the product backlog and also work to make these qualities visible and explicit to team members.
Agile Quality Specialist
QA provides experience to agile teams by outlining and creating specific test strategies for validating and monitoring important system qualities.
Monitor Qualities
QA specifies ways to monitor and validate system qualities.
Agile QA Tester
QA works closely with developers to define acceptance criteria and tests that validate these, including defining quality scenarios and tests for validating these scenarios.
Spread the Quality Workload
Rebalance quality efforts by involving more than just those who are in QA work on quality-related tasks. Another way to spread the work on quality is to include quality-related tasks throughout the project and not just at the end of the project.
Shadow the Quality Expert
Spread expertise about how to think about system qualities or implement quality-related tests and quality-conscious code by having another person spend time working with someone who is highly skilled and knowledgeable about quality assurance on key tasks.
Pair with a Quality Advocate
Have developers work directly with quality assurance to complete a quality related task that involves programming.


QA to AQ: Patterns about transitioning from Quality Assurance to Agile Quality, AsianPLoP 2014