|
Software testing is the process used to measure the
quality of developed computer software. Usually, quality
is constrained to such topics as correctness,
completeness, security, but can also include more
technical requirements as described under the ISO
standard ISO 9126, such as capability, reliability,
efficiency, portability, maintainability, compatibility,
and usability. Testing is a process of technical
investigation, performed on behalf of stakeholders, that
is intended to reveal quality-related information about
the product with respect to the context in which it is
intended to operate. This includes, but is not limited
to, the process of executing a program or application
with the intent of finding errors. Quality is not an
absolute, it is value to some person. With that in mind,
testing can never completely establish the correctness
of arbitrary computer software, testing furnishes a
criticism or comparison that compares the state and
behaviour of the product against a specification. An
important point is that software testing should be
distinguished from the separate discipline of Software
Quality Assurance (SQA), which encompasses all business
process areas, not just testing.
There are many approaches to software testing, but
effective testing of complex products is essentially a
process of investigation, not merely a matter of
creating and following routine procedure. One definition
of testing is "the process of questioning a product in
order to evaluate it", where the "questions" are
operations the tester attempts to execute with the
product, and the product answers with its behavior in
reaction to the probing of the tester[citation needed].
Although most of the intellectual processes of testing
are nearly identical to that of review or inspection,
the word testing is also used to connote the dynamic
analysis of the product—putting the product through its
paces. Sometimes one therefore refers to reviews,
walkthroughs or inspections as "static testing", whereas
actually running the program with a given set of test
cases in a given development stage is often referred to
as "dynamic testing", to emphasize the fact that formal
review processes form part of the overall testing scope.
A good test is sometimes described as one which reveals
an error; however, more recent thinking suggests that a
good test is one which reveals information of interest
to someone who matters within the project community, as
a test will measure quality and therefore may well be
unable to find any error, because the software works the
way it was specified. |