avatarBrienna Ransom | Quality Boss

Summary

The website outlines a Quality Assistance model as an alternative to traditional Quality Assurance, emphasizing the collaborative role of Quality Engineers in supporting high-quality software development.

Abstract

The author manages a team of Quality Engineers who support around 100 software developers by providing Quality Assistance rather than traditional Quality Assurance. This approach involves Quality Engineers working alongside developers to enhance product quality and customer experience through various activities. These activities include test automation, pairing with developers, providing quality guidance and strategy, conducting quality assessments, addressing bugs, and reviewing incident reports. The Quality Assistance model is distinct from Quality Assurance as it avoids siloing the responsibility of quality and instead fosters a culture of quality throughout the development process. It is presented as a more scalable and efficient approach, focusing on quality from the outset rather than relying on end-of-cycle testing, which is prone to time constraints and production of costly bugs.

Opinions

  • The traditional Quality Assurance model is deemed inefficient and not scalable.
  • Quality Assistance is favored as it promotes collaboration and shared responsibility for quality across the organization.
  • The cost of bugs increases significantly when they are detected later in the development process, highlighting the importance of early testing and quality prevention.
  • Quality Engineers are not gatekeepers in the Quality Assistance model; they act as partners and facilitators for developers.
  • The Quality Assistance model is presented as a modern and effective approach to quality in software development, emphasizing proactive collaboration over reactive gatekeeping.

Quality Assistance, Not Assurance

I manage a team of five Quality Engineers, supporting the work of approximately 100 software developers. A traditional approach to quality and software testing such as Quality Assurance will not work for us, as it just doesn’t scale. That’s why we offer Quality Assistance instead.

What is Quality Assistance?

Quality Assistance is quality engineers (QEs) working collaboratively with developers to deliver the best experience and highest possible quality to our customers.

This differs from a traditional QA model (explained later in this post). We are not here to assure the quality of anyone’s code. We’re here to assist by partnering with developers, sharing our knowledge of quality and testing best practices, and building tools and other things that help in achieving high-quality releases.

This can look like many things, including (but not limited to):

Test automation

  • Write or update existing automated tests.
  • Help fix or identify flaky tests.
  • Code reviews for tests.
  • Code coverage audits.
  • Identifying missing tests or gaps in coverage.
  • Recommendations on how/where to add tests.

Pairing

  • Pair on writing tests or even for a whole PR to write tests in parallel with the code.
  • Calls for Testing (CfTs are internal requests for help with testing across the company.)
  • Participate in CfTs by doing manual testing.
  • Help write CfTs.
  • Amplify CfTs visibility and recruit participants.

Quality Guidance & Strategy

  • For anything from a big release to a single PR.
  • Can include risk analysis.

Quality Assessment / Walkthrough

  • For a team or a team’s quality & testing-related processes.

Bugs

  • Help reproduce bugs.
  • Help test bug fixes.

Incident Reports

  • Review and help generate action items.

What It’s Not

  • Quality Assurance, which typically places the responsibility of product quality on a single, often silo’ed, QA team.
  • QEs acting as gatekeepers to deploying code.
  • A replacement for developers/teams testing their own code, including writing unit or e2e tests.

Why Quality Assistance and not Quality Assurance?

In a traditional Quality Assurance model, a typical release cycle might look like this:

Focusing on bug detection rather than prevention, this model is very inefficient. Testing is often done at the end of the release cycle, and often the time allocated for testing (QA) is cut short to meet delivery dates. This means more bugs in production, which are costly whether they are fixed or not, as unresolved bugs may impact customers and revenue.

The chart below illustrates how the cost of bugs increases the later they are found in the development process.

Source: Estimating ROI with CodeScan

Quality Assistance seeks to remedy this by encouraging quality and testing throughout all stages of software development, and by shifting the responsibility of quality from a silo’ed QA team to the entire organization.

Adapted from a post I wrote in 2022 for work. This post originally appeared on Quality Boss.

Quality Software
Quality Engineering
Quality Assurance
Quality Assurance Testing
Software Testing
Recommended from ReadMedium