In my experience working as a Senior QA consultant at Triad, I have seen many organisations using the term Quality Assurance (QA) and Testing interchangeably. The main reason seems to be that the project management and key stakeholders are not aware of the differences between Quality Assurance and Testing.
However, there are some significant differences and, as I explain them in this article, I’ll also point out why it matters that your team and wider business understand them accurately.
Quality Assurance serves to ensure that appropriate processes and procedures are in place (and are being adhered to) that enable the delivery of a product or service to an agreed level of quality. Quality Assurance is a much wider topic than Testing because it covers more than just the outputs of software delivery (the end product), it also covers the inputs (how the product is being developed), in order to improve the likelihood of a positive outcome.
QA is a proactive process that works out ways to prevent possible bugs in the process of software development. QA is integrated in a software development lifecycle (SDLC), and it requires the whole project team to be involved including Stakeholders, Business Analysts, Developers and Testers. The QA process helps to improve the productivity of the project team by specifying and establishing the requirements for both software development process and quality standards.
In Agile projects, Quality Assurance is led by Quality Analysts (QAs) to incorporate QA activities throughout the development lifecycle.
The first part in a properly planned and executed Quality Assurance process is the Quality assurance strategy. It defines the approach and activities to be carried out during software development to achieve the defined quality of the application under development. QA should have a holistic view of the project while creating the QA strategy and must address all aspects with respect to software projects from requirements capture to development.
A well-defined QA strategy should consider the following areas;
- Governance, financial reporting and stakeholder engagement and risk management
- Project team skill assessment and training requirements
- Communication and collaboration
- Document control
- Requirements gathering process and definition of non-functional requirements
- Application / Service Architecture
- Testing strategy
- Test Environments (e.g. QA, Staging, UAT and production)
- Continuous integration and continuous delivery (CI/CD pipelines)
- Version control and branching strategy
- Design standards and reviews
- Coding standards, code quality checks and reviews
Next up is Quality Control (QC) – a set of activities used to ensure quality in a product or a service. The goal of QC is to ensure a proper implementation of the processes defined in Quality Assurance strategy. The QC activities deal with examination of quality of the “end product” compared to QA that deals with the process to develop the product.
The main focus of QC is to validate that the product meets the specifications and requirements of the customer. If an issue or problem (bug / defect) is identified, it needs to be fixed before the product is delivered to the customer. It is a reactive process that helps to confirm that the product works as expected.
Quality Control activities can be performed by Software Testers with specialist testing skills.
Quality Control activities include:
As the development process draws to a close, you arrive at Software Testing or simply Testing as one way in which Quality Control can be implemented. Testing involves validating the product against specifications and customer requirements, finding and reporting defects. It includes various testing techniques such as functional, non-functional, acceptance testing to detect software issues. Besides, the goal of the software testing is also to make sure that the detected defects are fully fixed without any side effects before the product is released to the customer.
Testing activities include:
- Test planning
- Test case design
- Test execution
- Defect reporting
- Test reporting
Comparison between QA, QC and Testing
QA and Testing are not the same concepts – QA is the strategy that encompasses Testing but much more and involves a much wider set of stakeholders. While Testing is focussed on code quality within a technical arena.
However, they do have the same goal; to ensure development and delivery of a high-quality product to the customer. Yet, when understood and implemented correctly, they focus on different things and use different methods and techniques to reach that goal.
Being aware and observant of these differences enables businesses to create a better understanding of ‘quality’ across a development team and while improving productivity from a wider set of different skills.
Finally, especially with Agile development, it is vital to have Quality Assurance incorporated at very early stages of the development lifecycle. At Triad, we give the utmost priority to Quality throughout the development lifecycle and integrate quality control activities from the very beginning and throughout software development.
Triad has over 30 years working with private, public and third sector organisations drawing on experience in the toughest of environments to identify the right solutions for digital transformation. We can provide extra support developing a Quality Assurance strategy or an automated testing strategy or with resources to oversee and manage your QA and Testing function.
So, whether it’s advice and guidance, project and product delivery, or additional capacity and expertise, we can find the right people to deliver your technology requirements.
Venu Botla, Triad Group Plc
Venu is a passionate QA and Test Automation consultant with extensive experience developing test automation frameworks to support releases with CI/CD pipelines, implementing QA best practices and leading QA teams within the public, private and third sectors. He has helped organisation to implement QA process in Agile teams, integrating testing at each stage of the software development life cycle and preparing automation test strategy to support CI/CD pipelines. He also has a special interest in making web application more accessible and passionate about learning new testing tools and technologies.