What is the difference between Testing
and Quality Assurance?
Find
out why using the term Quality Assurance (QA) and Testing interchangeably
doesn't help software development.
In
my experience working as a Senior QA consultant, 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
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 into 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 the 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 of 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
·Methodologies
·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
QA Is All About Ownership
A
software tester is charged with finding bugs before users do. They investigate
and report on how well the software performs relative to its expectations.
However, in QA, you are asked to assure the quality of the software. It’s a
looser, more ambiguous role – but that is intentional.
As
a QA Engineer, you step into the shoes of the user and are given the
opportunity to tell your teammates, “Yes – this is a quality piece of
software,†or “I’m sorry – the app did what it was supposed to do, but the
experience stunk!†That’s a critical function on a software development team.
Lots of people share this perception of how these roles are
different, and why a QA Engineer has so much more opportunity to make an
impact. Here are some great examples from around the ‘net:
Quality
Control
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 proper implementation of
the processes defined in the Quality Assurance strategy. The QC activities deal
with the examination of the 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:
·Walkthroughs
·Testing
·Inspection
·Review
Software
Testing
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
Difference
between QA and Testing
Having analysed these two notions, we can compare them according
to their aim, focus, definition, activity type, and orientation. QA controls
the Testing process and verifies that software is able to work under the given
set of conditions. Testing concentrates on case studies, their implementation,
and evaluation.
A
QA Engineer…
A
Software Tester…
Ensures
a good customer experience
Finds
bugs in software
Is
active throughout the product lifecycle
Generally
active at the end of a coding cycle
Studies
and improves process and product
Examines
code modules
QA and Testing work in the same direction and focus on product
quality. Professional attitude towards the common goal together with strong
communication will ensure the realization of the stated goal
What Do You Want To Be?
Remember,
your title and your job may not be aligned. Furthermore, neither your job nor
your title defines you.
You
may have been hired as a software tester – and perhaps that’s all that’s
expected of you – but if you start thinking about your customer, and their
experience, and how your product, your team, and your processes can be improved
to make that experience better, you are already acting as a QA Engineer.
Challenge
the status quo, ask the next question, and continue to push the boundaries. If
you do that, you’ll make a mark on not just the app, but the entire team.
Conclusion
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 the 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.
What is the difference between Testing and Quality Assurance?
Find out why using the term Quality Assurance (QA) and Testing interchangeably doesn't help software development.
In my experience working as a Senior QA consultant, 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
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 into 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 the 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 of 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
· Methodologies
· 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
QA Is All About Ownership
A software tester is charged with finding bugs before users do. They investigate and report on how well the software performs relative to its expectations. However, in QA, you are asked to assure the quality of the software. It’s a looser, more ambiguous role – but that is intentional.
As a QA Engineer, you step into the shoes of the user and are given the opportunity to tell your teammates, “Yes – this is a quality piece of software,†or “I’m sorry – the app did what it was supposed to do, but the experience stunk!†That’s a critical function on a software development team.
Lots of people share this perception of how these roles are different, and why a QA Engineer has so much more opportunity to make an impact. Here are some great examples from around the ‘net:
Quality Control
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 proper implementation of the processes defined in the Quality Assurance strategy. The QC activities deal with the examination of the 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:
· Walkthroughs
· Testing
· Inspection
· Review
Software Testing
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
Difference between QA and Testing
Having analysed these two notions, we can compare them according to their aim, focus, definition, activity type, and orientation. QA controls the Testing process and verifies that software is able to work under the given set of conditions. Testing concentrates on case studies, their implementation, and evaluation.
A QA Engineer…
A Software Tester…
Ensures a good customer experience
Finds bugs in software
Is active throughout the product lifecycle
Generally active at the end of a coding cycle
Studies and improves process and product
Examines code modules
QA and Testing work in the same direction and focus on product quality. Professional attitude towards the common goal together with strong communication will ensure the realization of the stated goal
What Do You Want To Be?
Remember, your title and your job may not be aligned. Furthermore, neither your job nor your title defines you.
You may have been hired as a software tester – and perhaps that’s all that’s expected of you – but if you start thinking about your customer, and their experience, and how your product, your team, and your processes can be improved to make that experience better, you are already acting as a QA Engineer.
Challenge the status quo, ask the next question, and continue to push the boundaries. If you do that, you’ll make a mark on not just the app, but the entire team.
Conclusion
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 the 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.