Microsoft ended support for XP last year but there are probably millions of computers out there, in homes and offices that are still running the operating system.
How many computers do you see running Vista, the OS that was intended to succeed XP?
Vista was buggy, unreliable, and a massively flawed product. Nobody liked it, and when Windows 7 was released it quickly became extinct in the wild.
However, the failure of Vista has less to do with the radical new look and feel from XP: the success of Windows 7 which took a lot of features from Vista was proof enough that the idea behind Vista was solid enough.
Vista failed so spectacularly because it was a product driven by marketing timelines and fell short in the quality assurance and quality control department.
Quality assurance vs. quality control
A lot of people, even programmers, use the terms QA and QC interchangeably.
They are related in that both of these processes are responsible for ensuring that the code performs as advertised.
Before we talk about the differences, it’s instructive to understand what these terms actually mean- let’s take NASA’s definitions (these folks have hundreds of lives and hundreds of billions of dollars riding on the results of tests, so they know what they are talking about).
Software quality assurance is defined as “the function of software quality that assures that the standards, processes, and procedures are appropriate for the project and are correctly implemented”
Software quality control is defined as “the function of software quality that checks that the project follows its standards, processes, and procedures and that the project produces the required internal and external (deliverable) products”.
Quality assurance is:
- A failure prevention system. It is a set of requirements that’s laid down prior to a project starts for ensuring that the code meets set standards
- Led by managers, customers, and auditors
- Focused on the process, and not on the final product
- Proactive, and seeks to identify weaknesses
The goal of quality assurance is to strengthen the software development process so that quality products can be delivered consistently and cost effectively.
Some deliverables that emerge out of the QA tasks include process documentation, detailed requirements, and audit reports.
Quality assurance has nothing to do with execution of code.
Quality control is:
- A failure detection system. It uses different types of tests to ensure that the requirements laid down in the QA step has been met, and the standards maintained
- Performed by testers and is carried out in close collaboration with the developers
- Focused on the product
- Reactive
The goal of quality control is to catch the defects in the finished product.
The deliverables from QC include bug reports.
Quality control involves executing code.
The relationship between QA and QC
A well designed product needs both departments to work together through several iterations.
After QA sets the requirements and the developers write the code the QC department performs a number of tests. The feedback from these tests is shared with QA department who then modifies the requirements and the processes to ensure that the defects don’t pop up in the next version.
In software development methodologies like Agile, both these processes run almost simultaneously.
Quality assurance and quality control cannot be performed by the same person or department as it will lead to a conflict of interest. Both of them are adversarial in nature, in the same way writing is different from editing.
It would be fatal to skip either QA or QC.
Here’s why:
If you perform only QA related activities all you will get is a set of processes that seek to improve quality. There is no way of knowing whether the final product will meet these specifications.
On the other hand, without QA you would perform tests in isolation, and fix bugs as they come along without any assurance that the bugs won’t pop up in a later version because of faulty development practices.
Quality and outsourcing
QA and QC are tough to do in-house but the problems can magnify in the context of outsourcing because of a multitude of issues around choosing the right outsourcing partner.
However, there are thousands of outsourced projects that have met customer expectations, and all of them had the right mix of process and people.
Invest upfront on quality assurance and quality control, and gain happy users and delighted customers.