Today, almost every organization has a QA department that is responsible for “testing” software applications to discover and eliminate bugs. However, there is a fundamental flaw in this definition of the role of QA in an organization. Most executives that I have talked to, fail to understand the difference between Quality Assurance and Testing, and oftentimes use these terms alternatively.
So, what is the difference between QA and testing, or rather QA and Quality Control (QC)? Before we talk about QA vs testing, let’s try to understand what exactly quality control is and why I brought it up!
Quality control is a set of “activities” that need to be performed in order to detect problems during production and before the product goes live. These activities ensure that final deliverable meets the specifications and quality standards set by the organization. QC often includes peer reviews, “testing”, code reviews etc.
In theory, quality control can be achieved with minimal testing. For example, a thorough review of source code and checks for known previously problems can reduce the possibility of defects and might be enough to meet the quality standards set by the organization. However still, in most cases, testing is the most important activity for quality control, but it is not the ‘only’ activity.
Quality control is extremely important for ensuring that applications are bug free and meet the specifications and requirements, but QC might not always be the most efficient ways of ensuring quality. This is where Quality Assurance plays its role. But it is a concept that is often misunderstood by even the most experienced professions.
To put it in simple words, Quality assurance is about engineering “processes“that assure quality. Now let’s try to understand it better!
The keyword to pay attention to is “processes”. QA extends far beyond what we call the ‘software testing team’. The goal is to develop high quality products in the most efficient way, and it cannot be achieved by testing alone. Defects occur because something somewhere did not happen the way it needed to. Testing might help in detecting those defects, but not in avoiding them. A defect once fixed cannot ensure that it won’t occur again, even if the root cause is found. The process or the system that allowed that defect to occur is what needs to be re-engineered, and this is what we call quality assurance.
Everyone who is involved in the end to end development process, including analysts, developers, testers, managers etc., is an important player in assuring quality. In fact, QA might not involve testing at all. It might go against the typical notion that many professionals have about QA. But imagine this: If a company wanted to bring down its defects per million ratios, would testing alone be able to help achieve this goal? The answer is no, because in practice, not every defect can be found and fixed. However, if the processes that go into developing a product were reviewed and best practices were implemented, the load on testing team is likely to reduce. It is for this reason a lot of auditors focus on the processes were followed rather than focusing on the amount of testing an organization does.
To summarize, Quality assurance is a set of processes that help “avoid” defects and assure quality. While Quality Control is a set of activities that help detect defects and quality issues before the products reach the hands of end customers. Testing is one of the ways of detecting those defects.
In order to deliver high quality products, organizations should focus on QA rather than merely scaling up their quality control efforts.