Principles of
Testing:
There are seven principles of software testing which are as follows:
Testing shows
presence of defects:
An effective testing can show the defects that are present in software,
but it cannot prove that the software is defect free. Even after testing the
application or software thoroughly we can’t say that the software is defect
free. An effective testing always reduce the number of defects remaining in the
software but even if no defect is found in testing, it doesn’t prove that
software is defect free.
Exhaustive testing is
impossible:
Testing using all combination of input and preconditions is not
possible, therefore instead of performing exhaustive testing we should focus on
risk and priorities areas for testing.
For Example: In an application on one screen there are 15 fields having
4 possible values, and then to test all the valid combinations we would need 4^15 tests. This will be very unlikely to test this much values for these field since the time allotted for testing the software. Therefore accessing and managing
the risk areas should be most important for testing in any project.
Early testing:
In software development life cycle the testing activity should start as
early as possible. If testing is involved right from beginning of the
requirement gathering and analysis phase the team will have better
understanding and insight of the product and moreover cost of quality will be
much less if the defects are found early rather than later in the development
life cycle. The testing team will able to spot more defects if the testing is
started as early as possible.
Defect Clustering:
Defect clustering states that a small number of modules contain most
number of defects discovered in pre-release testing or shows most operational
failures. The Pareto principle of 80:20 states that 80 percent of defects are
due to 20 percent of code!. A small number of modules usually contain large
number of defects discovered during testing.
Pesticide Paradox:
If same test cases and same test data are repeated again and again for
testing, the same set of test cases will not be able to find any new defects.
This problem is knows as Pesticide Paradox. To overcome pesticide paradox it is
very important to change the test cases regularly with new and different test
cases. By reviewing test cases regularly and by adding new test data the
potential for finding new defects will be increased.
Testing is context
dependent:
The process of testing is context dependent. Different kind of software
will be tested differently. Software of different domains will have different terminologies
and parameters to test the software. Therefore testing should be done
differently on software of different domains. For Example, airline specific
software will be tested differently from an e-commerce website.
Absence of error: