Software testing is the process used to help identify the correctness,
completeness, security, and quality of developed computer software.
Testing is a process of executing a program or application with
the intent of finding errors. With that in mind, testing can never
completely establish the correctness of arbitrary computer software.
In other words, testing is criticism or comparison that is comparing
the actual value with an expected one. An important point is that
software testing should be distinguished from the separate discipline
of software quality assurance, 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.
Although most of the intellectual processes of testing are nearly
identical to that of review or inspection, the word testing
is connoted to mean the dynamic analysis of the product—putting
the product through its paces.
The quality of the application can,
and normally does, vary widely from system to system but some
of the common quality attributes include capability, reliability,
efficiency, portability, maintainability, compatibility and
usability. 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.