This article provides clarity on the often confusion in the IT industry regarding the difference between quality assurance (QA) and quality control (QC). Many QA teams, in fact, practice quality control. But let’s briefly discuss why Quality is a must property of software applications nowadays.
It has always been known that the success of any software product, application and/or service relies greatly upon users’ satisfaction. Users are satisfied just when they have their requirements/needs met and associated with all relevant quality factors (Correctness, Usability, Reliability, Efficiency, Integrity, etc.) to enhance their journey using the software application.
In any typical IT project, there are four significant constraints that need to be worked out during project execution. These four requirements are scope, time, cost and quality.
In terms of importance, experience has proven that quality ranks second after scope. Simply because if a software application is delivered within the given cutoff time, scope and cost but lacks the quality factors would lead to unhappy user and consequently business loss. Organizations usually get rectified with adding more time and budget to cover for the needed correction and rework.
Quality term can be segmented into two categories – assurance / control – based on the scope and type of activities involved. The confusion between both categories can be clarified from the following definitions.
What is Quality Assurance?
Quality assurance is a strategy of prevention. This means that QA covers all activities that are related to plan, define and design work policies, processes and procedures for the team to follow during the software development lifecycle in order to prevent from producing errors, issues or defects.
This set of processes helps minimize or even avoid result variation (due to technologies, tools, manpower, etc.) and ensure that the acceptable level of quality is always achieved. Therefore, if there is no need for process, there is no role for quality assurance.
Examples of QA deliverables:
- Development methodologies
- Estimation processes
- Requirements definition processes
- Testing processes and standards
What is Quality Control?
Quality control is a strategy of detection. This means that QC activities focus on identifying defects in the actual software produced. These activities begin at the start of the software development process with reviews of requirements, and continue until all application testing is complete.
Therefore, it is possible to have quality control without quality assurance. For example, a test team may be in place to conduct application testing at the end of development, regardless of whether that application is produced using a software development methodology.
Examples of QC deliverables:
- Requirement Review Reports
- Testing Execution Reports
- Test Cases Suite
- Defects List
Summary: Difference between Quality Assurance (QA) and Quality Control (QC)
QA activities aim to prevent defects
QC activities aim to detect defects
It is a proactive measure
It is a reactive measure
QA identifies weaknesses in a process to improve it
QC identifies defects in an application or service to have them fixed
|QA is concerned with all applications that will ever be developed by a process.||
QC relates to a specific application or service.
Types of Software Testing
Based on what explained earlier in this article, Software Testing is one of the main activities under the umbrella of Quality Control. Software Testing are segmented into two categories; functional and non-functional.
Functional Testing – validate the application’s compliance with its functional requirements and design specifications. The various techniques under this testing type focus on validating that application’s functionalities are met and work as expected without issues.
Some of the main functional testing techniques are:
- Unit Testing
- Component Testing (Whitebox)
- Integration Testing (Greybox)
- System Testing (Blackbox)
- Mobile Testing
- Omnichannel Testing
- Error-handling Testing
- Regression Testing
- Business As Usual Testing (BAU)
- User Acceptance Testing (UAT)
Non-functional Testing – validate the application’s compliance with technology, safety, operation, digital standard and best practices. functional requirements and design specifications. The various techniques under this testing type focus on validating that application’s non-functional requirements are met and work as expected without issues.
Some of the main non-functional testing techniques are:
- Load / Stress