Software quality can be hard to determine. That’s because each person involved can define quality differently. A range of perspectives, from different stakeholders and entities, may measure software quality in terms of how it fits to their own requirements, expectations, and standards.
Quality Assurance (QA) is a common practice to ensure that the end product of any Software Development Lifecycle (SDLC) conforms to the overall and scope-agreed expectations.
In this article, we will discuss the basics of Quality Assurance (QA) and its role in software testing.
To define quality assurance, let’s first start with the definition of quality:
Quality refers to the conformance to implicit or explicit requirements, expectations, and standards.
In order to fulfil these requirements, a quality control mechanism is set up.
Quality Control (QC) is the process through which you achieve, or improve, product quality. The QC process can also include the activities used to eliminate waste processes in the SDLC. QC functions involve a range of testing activities used to detect and resolve technical issues. These are followed together with the development processes over the course of the SDLC.
Quality Assurance (QA) refers to the meta process that ensures continuous and consistent improvement and maintenance of processes that enables a QC job.
(Source)
In software testing, Quality Assurance goes beyond quality control functions and testing activities in order to evaluate software quality according to a range of views:
These different views are the essential part of any QA process. A software build can conform to all necessary requirements and pass the underlying quality control testing process—but all that does not guarantee a positive business impact or improved user experience.
So, we can define QA as this:
The QA process ensures that the wider goal and vision of the business is achieved by delivering software that meets all quality requirements from both technology and business perspectives.
(Explore common software quality metrics.)
Let’s compare the actual testing and QC activities to the QA process, so we can understand scope and mechanism of each:
Quality Control | Quality Assurance |
A walkthrough that involves several testing activities | The process of auditing software quality based on different views |
Product-oriented activities | Process-oriented activities |
QC actions focus on verification and conformance of the product to requirements only | QA actions focus on the process used to create the product |
Actions involve inspection, sampling, and testing | Actions involve documentation, audit, management, training, change control and management and investigation |
A reactive and corrective process | A proactive and preventive process |
The team | The team and relevant stakeholders |
For organizations following the modern SDLC methodologies such as DevOps, software testing QA follows the concept of Continuous Improvement, which is the iterative improvement of the processes you use to deliver high quality software.
The improvement is measured against how end-users and the business organization perceive software quality, suggesting areas of improvement. The feedback is then channeled back to the SDLC process where a different or additional set of Quality Control functions may be introduced to address those new requirements.
These industry-proven best practices can help improve your QA capabilities, the associated SDLC process, and the overall quality of software products in DevOps environments: