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.