The 7 Principles of Testing

For any aspiring software tester, it is important for him to know the seven principles of software testing. These seven principles are the foundation of software testing and is a must know information for efficiently performing any software testing process.

The seven principles of software testing are as follows

Testing Shows Presence of Defects

Testing is a process that only shows that there are defects present in the application or product. However, it is incapable of showing that there are no more defects left in the product.

Even after thoroughly testing the application, there is no guarantee that the application is 100% free from defects. The result of testing is that it always reduces the number of defects, but there is no way of showing the amount of undiscovered defects present in the application.

Hence, you can conclude that even after testing the software application and finding many defects, it is not a solid proof of correctness.

Exhaustive Testing is Impossible

It is not possible to test every aspect of the software application including all combinations of inputs and preconditions. Therefore, instead of trying to achieve exhaustive testing, testers use risks and priorities to focus on improving test efforts and results.

For instance, consider that in a software application, there is one screen with 15 input fields, each having a possibility of five values. In this case, if you want to test all the combinations, then you will have to check 30,517,578,125 combination tests, which is very time consuming and unlikely to happen.

Therefore, accessing and managing of risks in software testing in one of the most important principles for testing any software product.

Early Testing

It is very important to introduce software testing as early as possible in the software development life cycle. This results in early detection of defects, allowing the testers to focus on the defined objectives that can improve the overall quality of the software.

Moreover, early testing also prevents defects that could have been otherwise missed and could cause major problems in the application during the later stages of software development life cycle. This in turn saves a lot of time and money.

Defect Clustering

Defect clustering is the term given to a small number of modules that contain most of the defects that are discovered during the pre-release testing of the software application. This also shows the most operational failures present in the application.

Pesticide Paradox

If the same types of tests are repeated again and again to find defects in the software application, then eventually these same set of test cases will no longer be able to detect any defects. The situation where the test cases are no longer capable of detecting defects is known as Pesticide Paradox.

Therefore, it is extremely important to review the test cases regularly and come up with new and different test cases to efficiently analyse every part of the software application to find maximum number of defects from every region possible.

Testing is Context Dependent

Every software tester needs to understand that the testing process is actually context dependent. Different sites of software application are tested differently using different and suitable test cases.

For example, in safety category, critical software is tested differently from an e-commerce site.

Absence of errors Fallacy

If the software application developed is proved to be unusable and does not fulfill any of the user’s needs and expectations, then in this case, fixing or finding defects is of no use. Hence, it is termed as Absence of errors Fallacy.

These seven principles are like the fundamentals of software testing. Knowing these principles is very important for any aspiring software tester to efficiently improve his software testing skills.