The main aim of every software development procedure is to ensure a high quality of a ready product with the end-users’ needs satisfied, customers’ requirements met and business goals achieved. Quality is an essential attribute of every software product.
In order to ensure high quality and to provide its precise evaluation, various techniques and methodologies are applied. Quality Assurance (QA), Quality Control (QC), and Software Testing are called to guarantee a high level of software quality. These terms are interrelated, but they are not interchangeable and substitutable.
The relationship between QA, QC, and Testing has a hierarchical nature. At the top of the pyramid is QA. Its main aim is to plan and establish the processes of quality evaluation. QC specifies the implementation of QA processes. As a part of QC, Testing is a way to gather information about software quality in order to check the results of implemented QC processes.
QA focuses on the processes of quality assessment including their planning, arrangement, and establishment. Its main aim is to ensure the optimized and effective ways of ensuring the expected quality of a ready product. QA assists not in detecting issues but in preventing them. It is a proactive way of quality verification. QA is integrated into a software development lifecycle (SDLC), and it requires the whole project team to be involved.
The QA procedure includes the preparation of a Test Plan, planning and execution of risk-based testing, industry-specific testing, and test data management. It helps to specify and establish the requirements for both software development and quality verification to reach a defined level of software quality and to improve the productivity of the project team.
QC focuses on product quality. Its main goal is to ensure proper implementation of the processes established at the QA stage. The QC activities are called to find software issues and to make sure they will not appear the second time. It is a reactive process that helps to confirm that the achieved results correspond to the expected ones.
QC includes the examination of the product according to the predetermined requirements. In comparison to QA, Quality Control is more time-consuming. The QC activities can be performed only after the QA procedure. A software testing life cycle includes QC activities. The effectiveness of QC depends only on a testing team.
Software Testing is a process of verifying different attributes of a system and aspects of its usage in order to make sure that the product operates as expected and that it does not perform any functions that it is not supposed to conduct. Testing is a part of QC. It includes various techniques that are called to detect software issues. Besides, the goal of Software Testing is also to make sure the detected bugs are fully fixed without any side effects.
QA, QC, and Testing are called to ensure the development and delivery of high-quality software. But focusing on different things, they include a few different methods and techniques to reach the goal.