Many times the terms QA (Quality Assurance) and QC (Quality Control) are interchangeably used by people, especially those who are new to the field of Software Testing, however this is incorrect. Both QA and QC are two unique approaches to improving the quality of the software under development and they are at the heart of Software Development. Both, Quality Assurance and Quality Control are related to each other, but they are originated based on different needs. Quality Assurance is more of a process oriented approach, and it focuses on the prevention of defects, whereas Quality Control is a product oriented approach, and it focuses on defect identification and fix.
ISO defines Quality Control as a part of quality management focused on fulfilling quality requirements, and Quality Assurance as a part of quality management focused on providing confidence that quality requirement will be fulfilled.
There is a need to have systematic planning of all the processes in place, and these, in terms of Quality Assurance need to be demonstrated in order to provide the confidence to the quality of the software. A Quality Assurance review would focus on the process elements of a project e.g. ‘Are all the necessary and sufficient details captured in the requirements?’. Defining the methodology and developing standards are some of the important examples that can be mentioned under the domain of Quality Assurance. Quality Control requires the same; however, here the focus is more on the systematic planning of the operational techniques. In case of specific deliverables, Quality Control would mean finding defects in it e.g. ‘Are the right details captured in the requirements?’
There can be a blurred line between who should be responsible for Quality Assurance and who for Quality Control, and this would vary from organization to organization and from situation to situation within an organization, however, while both of these can be in-house, and can be done by a single team as well, an external Quality Assurance function definitely throws a clearer light on whether QA is being implemented correctly or not. Again, this would depend upon how mature the organization’s Quality Assurance or Project Management practices are, and how exactly the organization wants to enhance them in the days to come. Inculcating these practices right from the beginning to the best level possible can help an organization polish their Quality Assurance and Quality Control practices, and implement them fully in-house to avoid external dependency.
Below is a comprehensive table enlisting the clear differences between Quality Assurance and Quality Control, for better understanding of the reader:
|Quality Assurance||Quality Control|
|Quality Assurance is the process of managing the quality of the software under development||Quality Control is the set of methods used to verify the quality of the output delivered by the software|
|QA is more of a comprehensive activity in which establishing long-term good quality management systems – and assessing that those systems help us conform to the customer requirements – is done. Thus, QA is process-oriented.||QC is more of a product-specific activity in which tools and equipment are used to confirm that the customer’s requirements are continually met. Thus, QC is product-oriented.|
|QA is proactive. It identifies the weaknesses in processes beforehand.||QC is reactive. It identifies the defects in the software system after its development, and then fixes them as required.|
|QA prevents the occurrence of issues, bugs, or defects in the system. Thus, it is more managerial in nature.||QC identifies the issues, bugs, or defects in the system, and then works towards fixing them. Thus, it is more corrective in nature.|
|QA requires manual checking of documents or files, such as Quality Plans or Test Plans.||QC is often done by automatically running the program or software, and then physically measuring if the system runs according to the prescribed requirements.|
|QA does not involve executing the program or code.||QA always involves executing the program or the code being tested.|
|Every person who is part of the Software Development is essentially responsible for the overall Quality Assurance of the product.||Testing Team is primarily responsible for conducting the Quality Control.|
|QA is a type of Verification, because it involves checking if you’re doing the right thing in the right way.||QC is a type of Validation, because it involves checking if what is done is right.|
|QA involves planning for a process. It is basically defining standards and processes to be followed in order to meet the customer requirements.||QC involves taking action towards the process by executing it. It is basically ensuring that the necessary standards or requirements are met.|
|Examples of a few QA Activities: – Process Definition and Implementation – Audits – Training||Examples of a few QC Activities: – Code Reviews – Test case development – Software Testing – Defect fixing|