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. If a software application is delivered within the given cutoff time, scope, and cost but lacks the quality factors would lead to unhappy users and consequently business loss. Organizations usually get rectified by adding more time and budget to cover the needed correction and rework.
Quality terms 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 by 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 planning, defining, and designing work policies, processes, and procedures for the team to follow during the software development lifecycle in order to prevent errors, issues, or defects.
This set of processes helps minimize or even avoid result variation (due to technologies, tools, manpower, etc.) and ensures that an acceptable level of quality is always achieved. Therefore, if there is no need for a 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 was explained earlier in this article, Software Testing is one of the main activities under the umbrella of Quality Control. Software Testing is 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 the 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 standards,s and best practices. functional requirements and design specifications. The various techniques under this testing type focus on validating that the application’s non-functional requirements are met and work as expected without issues.
Some of the main non-functional testing techniques are:
- Load / Stress