For someone who is just embarking on their career in IT there is often a lot of confusion over basic terms. Of these terms, the ones that cause the most confusion are, ‘software testing’, ‘quality assurance’, and ‘quality control’.
These terms do sound rather similar, and for those who don’t know the difference between them, you could easily mix them up. Moreover, there are even some product managers who don’t fully understand the meaning of these terms in software quality management. This typically results in projects going beyond their initial budget, and in some cases projects just failing to meet any sort of standard.
So, let’s make things clear for you: The terms above are related to quality control activities that concern a product or a service.
So, in order to save you from potential problems in the future, because you’ve misunderstood these terms, we’ll now present you with a brief description of the terms used in software quality management, so that you don’t fall victim to term misinterpretation.
Three levels of software quality assurance
There are three fundamental levels that have to be considered when developing software, these are ‘Software Testing’ (Testing), ‘Quality Control’ (QC), and ‘Quality Assurance’ (QA). There is a relationship between these three terms and they are represented in the following figure:
As you can see testing is at the heart of the figure, and you then work out to Quality Control, and to Quality Assurance. It is imperative that each of these areas are considered, and are put to use, when developing any kind of software.
Now, let's take a closer look at them all in more detail, so that you understand why they are so important.
- Testing is the first stage in the development process, and this is when an initial quality audit is performed. During the testing stage a new software product is checked to see if it complies with its set requirements (does it work as it should). In fact, the work at this level looks like this: a tester gets the software, and the tester also gets to see the criteria of this software (basically what does the software need to be doing and what should it work like). The tester then checks the software to see if it does actually do what it is supposed to do. All the defects identified during the check are noted, and are amended. Then the corrected product is re-checked until all inconsistencies are corrected. But, this does not mean that testing is just "mouse clicking". To successfully do this work, a tester needs manual or automated testing skills. The main goal here is to find as many defects as possible and to identify why they’ve occurred.
- Quality control (QC). There is some testing at this level, but QC is not just about that. QC is also about assessing the general performance of the end product, to make sure that the end product actually meets the requirements set out, and that it is ready to enter the market. To do this successfully, the number of errors that have occurred are evaluated during the QC stage, and if there are critical defects, the QC-specialist will not let the product go any further. A QC specialist will demand that all errors are eliminated before any progress is allowed to continue. The main goal here is to assess the overall quality of the program.
- Quality Assurance (QA). This is the outer level in the software control process, as detailed in Figure 1. QA specialists don’t just monitor testing, but they also monitor the entire software development process.
The main goal for a QA specialist is to create a system that helps to minimize the number of errors and facilitate testing. For example, a QA specialist might introduce an improved planning system, that provides both the developers and the testers with enough time to do the work they need to do well.
QA also includes the development of a test plan and its implementation, as well as the assessment and control of the test results. Whereas, a QC specialist analyzes the test results and eliminates any defects found to ensure a product is of sound quality and is ready for the market.
The QA stage may also include, examining code to see if it complies with regulatory standards, checking documents, and introducing new quality control methods.
A QA is sometimes viewed as some kind of a Project Manager (PM) too, as both roles typically devote a lot of time to quality management processes. Of course, a QA cannot work alone, therefore, a development team must have at least one QC specialist and several testers, so that the workload is shared.
Often, QA functions are performed by the head of the testing team, and he or she understands what should be done and when something needs to be done by.
In short, the whole team must be involved in the software quality assurance and control process.
Things to consider
Compared to QA, QC is more time-consuming and is carried out after the completion of the quality assurance phase.
Many consider a tester and a QA engineer to be one person, but as you can see, the roles and responsibilities of testers, QA, and QC specialists are quite different.
You could say that QC and QA roles are the next logical steps for a professional tester to take in his or her career.
Additionally, Junior testers test software according to scripts, and their senior colleagues develop these plans, test cases, and the entire quality control system as a whole.
Conclusion
In this article we have discussed the differences between "software testing," "QA," and "QC." Although these are different things, they all have the same goal – to bring a high-quality product, that meets the needs of the customer, to the market.
Nobody knows how to create the perfect software without any testing; that's a fact. But people have developed a whole system for quality control that actually works and gives results. When applied correctly, QA and QC not only reduce errors and defects, but can also prevent the development of fatal issues in the first place.