Latest Posts

Principles of Testing

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:

If the software that is developed is unusable for end user and doesn’t fulfil the users need and expectations then finding and fixing of the defects will not help. So it makes no sense in testing and finding out bugs from software that is not usable by end user. The effort of testing team will be in vain if testing for this type of software is done.