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 detecterrors, and (3) to validate that what has been specified is what the
user actually wanted.
1. 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?]
2. 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.
3. 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.
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.
No comments:
Post a Comment