Saturday, January 5, 2013

General Principles of Testing


While testing one should never forget the general principles of testing. These principles has been derived from decades of practice and accepted by the industry leaders. Let’s have a quick look.

1.    Testing Shows the Presence of Defects, Not Their Absence

Testing tends to show the defects in the system. But it doesn’t guarantee that the system is defect-free. If adequate & proper testing is done, the probability is that most of the defects will be detected and solved, but it doesn’t prove that no other defect exists in the system. There may be defects present which are still not discovered.


2.    Exhaustive Testing Is Not Possible

Testing done with all the possible inputs and their combination, as well as taking into consideration the entire preconditions, Is Not POSSIBLE. If we try to do this, we will get numerous tests cases, and finding and executing all these tests is not feasible. Thus, testing process should be perfectly planned and controlled so that we can get maximum defects from its implementation. Test Planning is very important.


3.    Testing Activities Should Start As Early As Possible

When Testing activities are started early in the software development phase, defects are found at their primitive stage. Thus fixing those defects is comparatively easy and less time/cost/effort consuming than fixing those bugs in the later phase of software development.


4.    Defects Tend To Cluster Together

Defects tend to cluster. If one finds some defects in a particular place then there are maximum possibilities that more defects will be hidden there. Thorough & In Depth testing must be done on those parts of the software to find the hidden defects.


5.    The Pesticide Paradox

This principle states that the testing should not be static rather dynamic. If the testing is static, it will lose its effectiveness eventually. As the already undetected defects will not appear if same test cases/scripts are run again and again on the system. The tester must keep modifying the test cases/scripts as well as test data while implementing test cycles.


6.    Test Is Context Dependent

Testing is always context dependent. No two systems should be tested in a same way. Testing will change with each system. You cannot test a social networking application, ecommerce application & accounts management software in same manner. Test process should be adaptive of the type of the system as well as the levels of the system.


7.    The Fallacy of Assuming That No Failures Means a Useful System

Testing finds defects and those defects get solved, but this doesn’t mean that the system is foolproof or up to the mark. To ensure these things we can take preventive measures by implementing proper process which includes user involvement, risk assessment, etc.


1 comment: