Software Engineering Principles and Practices / Software Quality Assurance

Quality Assurance vs Quality Control

In Software Engineering, people often use the terms Quality Assurance (QA) and Quality Control (QC) as if they are the same thing. In reality, they are two distinct parts of Quality Management.

Think of it this way: QA is the map and the rules for the journey (proactive), while QC is checking the car for scratches once you arrive (reactive).


🛡️ Quality Assurance (QA)

QA is process-oriented. It focuses on the methods and procedures used to create the software. The goal is to prevent defects before they are even written into the code.

  • Approach: Proactive.

  • Focus: Improving the development and test processes so that defects do not arise when the product is being created.

  • Activities: * Defining standards and methodologies (e.g., Agile, Waterfall).

    • Selecting tools for the team.

    • Performing Process Audits.

    • Training team members.


🔍 Quality Control (QC)

QC is product-oriented. It focuses on the actual software being built. The goal is to identify and correct defects in the finished product (or a specific version of it).

  • Approach: Reactive.

  • Focus: Identifying (and helping fix) defects in the actual software.

  • Activities: * All levels of Testing (Unit, Integration, System).

    • Technical Reviews and Walkthroughs of the code.

    • Inspection of the final build.


📊 Side-by-Side Comparison

Feature

Quality Assurance (QA)

Quality Control (QC)

Goal

Prevent defects.

Identify defects.

Focus

The Process (How we build it).

The Product (What we built).

Nature

Proactive / Defensive.

Reactive / Offensive.

Responsibility

Everyone involved in the project.

Specifically the Testing/QA Team.

Timing

Throughout the entire SDLC.

During the testing phase.

Example

Implementing a "Code Review" policy.

Running a test script to find bugs.


🧩 How They Work Together

Imagine a bakery:

  • QA is ensuring the recipe is correct, the oven is calibrated, the staff is trained, and the ingredients are fresh. If you do this well, the bread should be good.

  • QC is the baker tasting the bread and checking the crust once it comes out of the oven. If it's burnt, QC catches it so it isn't sold to a customer.

Note: You cannot have a high-quality product with QC alone. If your process (QA) is broken, you will spend all your time and money in QC trying to fix a never-ending stream of bugs.