QA vs QC vs QE: What's the Difference?
- Contributor
- 5 days ago
- 4 min read
Walk through any engineering org and you'll hear "QA" used to mean testing, "QC" used rarely if at all, and "QE" used by whoever read the latest blog post. The three terms get swapped around as if they're synonyms. They're not — and the sloppiness isn't harmless. The label a team puts on its quality work quietly determines where that team spends its effort, and the wrong label sends the effort to the wrong place.
Here's the real difference between quality assurance, quality control, and quality engineering, why it matters more than it sounds like it should, and how the three actually fit together.
Quality Control (QC): did this specific thing come out right?
Quality control is the oldest and most intuitive of the three. It's product-focused and reactive: you take the actual thing you made and inspect it for defects.
In software, QC is testing, QA passes, exploratory testing, code review of a specific change, and monitoring that catches problems in production. The defining question is, "Did this particular output meet the standard?" You're examining the finished (or nearly finished) product and catching what's wrong with it.
QC is essential — you cannot prevent every defect, so you need a net to catch the ones that get through. But notice what it is and isn't. QC finds defects; it doesn't reduce how many you create. It operates on the output, after the work is done. A team that relies only on QC is inspecting quality in at the end, which is the most expensive place to find problems and does nothing to stop them from recurring.
Quality Assurance (QA): are we working in a way that prevents defects?
Quality assurance is process-focused and proactive. Instead of inspecting the output, QA looks at how the work is done and improves it so that defects are less likely to happen in the first place.
In software, QA is coding standards, design and architecture reviews, a clear definition of done, good requirements practices, templates, and automated checks baked into the workflow. The defining question is, "Are we building this the right way, so the defects don't get created?"
This is the crucial distinction that gets lost: QA is about prevention, QC is about detection. When people say "the QA team" and mean "the people who test at the end," they've collapsed assurance into control and quietly given up on prevention. A real assurance function changes how the team works so there's less to catch — and "less to catch" is always cheaper than "catch more."
The quick mnemonic: QA is the recipe and the kitchen standards; QC is tasting the dish before it leaves the kitchen. You want both, but a restaurant that only tastes at the end — without recipes, training, or clean processes — is going to send back a lot of plates.
Quality Engineering (QE): quality as an engineering discipline
Quality engineering is the modern reframe, and it's less a third category than a different way of organizing the first two. QE says: quality is not a phase that happens to software after developers finish, and not a separate department that checks their work. Quality is an engineering responsibility owned by the whole team, built in continuously.
In a quality-engineering model, the activities of assurance and control don't disappear — they get absorbed into how engineering works. Tests are written as part of development, not after it. Quality gates live in the CI/CD pipeline and run automatically. Observability makes production behavior visible to the people who built it. The old wall between "the dev team" and "the QA team" comes down, and quality stops being a handoff.
The shift matters because handoffs are where quality goes to die. When developers ship and a separate QA team catches, quality becomes someone else's problem, feedback is slow, and the gate becomes a bottleneck. When the team that builds it owns its quality end to end, defects are caught earlier, feedback is immediate, and — counterintuitively to some — the team ships faster, because it isn't constantly waiting on a downstream gate or firefighting escaped defects. (Capturing how your team handles this — what's tested where, what's automated, who owns it — in something like a Test Strategy Template is often the first concrete step toward a quality-engineering model.)
How they fit together
These three aren't competing options; they're layers, and a healthy team has all three functions even if it doesn't use all three words.
Quality control is your safety net — it catches the defects that slip through.
Quality assurance is your prevention — it reduces how many defects you create.
Quality engineering is the operating model — it makes assurance and control the whole team's job, built into the work instead of bolted on after.
You can think of it as a progression in maturity. The least mature teams do only QC: test at the end, hope for the best. More mature teams add real QA: prevent defects through how they work. The most mature teams operate as quality engineering: there's no separate quality phase because quality is woven into everything, owned by everyone, and automated where possible. (A shared QA Checklist is a fine way to make your control layer consistent while you grow the assurance and engineering layers around it.)
Why getting the words right changes what you do
It would be easy to dismiss all this as terminology. It isn't, because each term carries an implicit strategy, and adopting the word quietly adopts the strategy.
Say "we need QA" and mean "hire testers," and you've decided to detect defects at the end. Say "we need QA" and mean "improve how we prevent defects," and you've decided to attack the problem at its source. Same two letters, opposite investments. Multiply that across a team's hiring, tooling, and process decisions over a year, and the difference between treating quality as inspection versus engineering is the difference between a team that firefights and a team that ships calmly.
So use the words precisely — not to win pedantry points, but because naming the work correctly is the first step to doing the right work. Control catches what you missed. Assurance stops you from missing it. Engineering makes both the whole team's job. Get all three working together and quality stops being a phase you survive and becomes a property of how you build.


