Quality Assurance vs. Quality Control

Marko Brajer
QA
Development

Quality assurance (QA) and Quality control (QC) are often used as synonyms. Although similar, there are a few differences between the two aspects.

Quality Assurance

Set of activities for ensuring high-quality products by preventing any defects that may occur in the development process.

Quality Control

Refers to a system of inspecting the final quality of the product. Therefore it is product oriented.

Both aspects are part of Quality Management and are used not only in software development but in other industries as well.

For example, in food production, the main goal of Quality Assurance is to ensure the performed process and prevent any defects during primary production. On the other hand, Quality Control is there to detect a number of possible hazards caused by microbiological growth, chemical or physical contamination. Both aspects bind together will improve and ensure safe food products.

Regarding Quality Assurance here is a 227 Item Quality Assurance Checklist to Test Before Launching New Software.

Quality Management, Quality Assurance and Quality Control

Differences

QA and QC are the most important processes in the software environment. Both have the same purpose, but different approaches. These are some of the most important differences between QA and QC:

Duration

The first important difference between QA and QC is duration. QA is a medium to long term aspect implemented at the designing stage while QC is implemented at the final stage when the outcome is produced. So, Quality Assurance has to be completed before Quality Control.

Focus

QA focuses on process-oriented techniques, how the software is made or delivered. The process should follow certain standards and techniques for customer requirements. QC is a product-oriented technique so it focused on the final product and ensures that standards were followed while testing the product. 

Goal

The goal of QA in software development is to prevent defects (bugs) while QC is responsible for detecting bugs. Verification would be a good example of QA’s goal and validation as an example of a QC goal.  

Responsibility

For the QA process, various teams are involved in preventing certain defects. QA is responsible for the full software development life cycle. For the QC process, the testing team will take full responsibility in the software testing life cycle

Tools

Tools that are often used in QA consist of cost-benefit analysis, control charts, cause and effect diagrams and design of experiments. Tools that are used for QC are quality reviews. Most popular are management and technical reviews, inspection (code reviews) and testing. 

Software Testing as a subset of Quality Control

Software testing can be managed as a specific subset of Quality Control. We can observe testing as an integral part of QC as it helps demonstrate that the product runs the way it should. 

There are a few levels of testing but the most important is system and user acceptance testing.

System testing

System testing is performed by highly professional testers who must verify software compliance with functional and technical requirements and quality standards.

User acceptance testing

User acceptance testing is the last step for the testing team to decide if the product is ready for production. This level focuses on system quality, content, UI and performance issues. 

Another level of software testing is regression testing, performed after updates or bug fixes.

The main purpose of regression tests is to have the exact impact on existing functions, stability, and integrity. 

Real-life example

When starting a new project all teams may encounter difficulties, for example working with completely new technology.

This will require a plan to get the team members trained in the new technology by collecting design documents, technical and functional requirements.

As the project progresses, QA should check where the project may be developing risk and ensure that the right people are involved at the right time.

The team should prepare a test strategy that will cover all risks that may occur in the final product. Before QC starts it’s very important that the process prevents as many defects as possible.

After QA is finished, QC will start with inspection and testing. Inspection requires checking the design and specification documents, test strategy and the code.

Testing, as a part of the QC process usually requires interrogation,  system, and user acceptance testing. Any defects that are found during testing must be reported back and properly resolved.

After resolving raised issues, a series of regression and sanity tests are required to ensure the final quality product. 

Example of quality control and quality assurance process

Conclusion

The software tester’s job is to detect and try to prevent any defects made during the development process.

A clear understanding between QA and QC aspects of everyone involved in the project can decrease defects and create an effective management plan, ensure high-quality products, and preserve customer trust.

As a group of very passionate software developers, we take Quality Assurance very seriously because we know how a good testing process can make the difference between a successful and unsuccessful software product.

Therefore we released our own product named Shake – a mobile app debugging platform which helps mobile developers and testers in the debugging process. Check it out and test it for free.