Anurag
2.
Why Testing CANNOT Ensure Quality
In well-run projects, the mission of the test
team is not merely to perform testing, but to help minimise the risk of product
failure. Testers look for manifest problems in the product, potential problems,
and the absence of problems. They explore, assess, track, and report product
quality, so that others in the project can make informed decisions about product
development. It's important to recognise that testers are not out to "break
the code." We are not out to embarrass or complain, just to inform. We are
human meters of product quality.
Software
testing is more than just error detection;
Testing
software is operating the software under controlled conditions, to (1) verify
that it behaves “as specified”; (2) to detect
errors, and (3) to validate
that what has been specified is what the user actually wanted.
- Verification is the checking or testing of items, including software, for conformance and consistency by evaluating the results against pre-specified requirements. [Verification: Are we building the system right?]
- Error Detection: Testing should intentionally attempt to make things go wrong to determine if things happen when they shouldn’t or things don’t happen when they should.
- Validation looks at the system correctness – i.e. is the process of checking that what has been specified is what the user actually wanted. [Validation: Are we building the right system?]
In
other words, validation checks to see if we are building what the customer
wants/needs, and verification checks to see if we are building that system
correctly. Both verification and
validation are necessary, but different components of any testing activity.
The
definition of testing according to the ANSI/IEEE 1059 standard is that testing
is the process of analysing a software item to detect the differences between
existing and required conditions (that is defects/errors/bugs) and to evaluate
the features of the software item.
Remember:
The purpose of testing is verification, validation and error detection in order
to find problems – and the purpose of finding those problems is to get them
fixed.
Testing
in itself cannot ensure the quality of software.
All testing can do is give you a certain level of assurance (confidence) in the
software. On its own, the only thing that testing proves is that under
specific controlled conditions, the software functioned as expected by the test
cases executed.
Quality software is reasonably bug-free,
delivered on time and within budget, meets requirements and/or expectations, and
is maintainable.
However, quality is a subjective term. It will
depend on who the ‘customer’ is and their overall influence in the scheme of
things. A wide-angle view of the ‘customers’ of a software development
project might include end-users, customer acceptance testers, customer contract
officers, customer management, the development organisation’s
management/accountants/testers/salespeople, future software maintenance
engineers, stockholders, magazine reviewers, etc. Each type of ‘customer’
will have their own view on ‘quality’ - the accounting department might
define quality in terms of profits while an end-user might define quality as
user-friendly and bug-free.
“Quality Assurance” measures the quality
of processes used to create a quality product.
Software Quality Assurance (‘SQA’ or
‘QA’) is the process of monitoring and improving all activities associated
with software development, from requirements gathering, design and reviews to
coding, testing and implementation.
It involves the entire software development
process - monitoring and improving the process, making sure that any agreed-upon
standards and procedures are followed, and ensuring that problems are found and
dealt with, at the earliest possible stage. Unlike testing, which is mainly a
‘detection’ process, QA is ‘preventative’ in that it aims to ensure
quality in the methods & processes – and therefore reduce the prevalence
of errors in the software.
Organisations
vary considerably in how they assign responsibility for QA and testing.
Sometimes they’re the combined responsibility of one group or individual. Also
common are project teams that include a mix of testers and developers who work
closely together, with overall QA processes monitored by project managers or
quality managers.
Quality Assurance and development of a product
are parallel activities. Complete QA includes reviews of the development methods
and standards, reviews of all the documentation (not just for standardisation
but for verification and clarity of the contents also). Overall Quality
Assurance processes also include code validation.
A note about quality assurance: The role of
quality assurance is a superset of testing. Its mission is to help minimise the
risk of project failure. QA people aim to understand the causes of project
failure (which includes software errors as an aspect) and help the team prevent,
detect, and correct the problems. Often test teams are referred to as QA Teams,
perhaps acknowledging that testers should consider broader QA issues as well as
testing.
Simply
put:
-
TESTING means “Quality Control”; and
-
QUALITY CONTROL measures the quality of a product; while
-
QUALITY ASSURANCE measures the quality of processes used to create a quality product.
Comments
Post a Comment