There are 7 Principles related to software testing:
- Principle 1- Testing shows presence of defects
- Principle 2- Exhaustive testing is impossible
- Principle 3- Early testing
- Principle 4- Defect clustering
- Principle 5- Pesticide Paradox
- Principle 6- Testing is context dependent
- Principle 7- Absence-of-errors fallacy
Detailed explanation
Principle 1- Testing shows presence of defects : The principle arises from the theory of the process of scientific experimentation has been adopted by testers;
Testing can only prove the presence of defects, never their absence.
The aim of testing is to make the software fail by finding bugs.In case testers are unable to find defects after repeatedly doing regression testing doesn’t mean that the software is bug-free.
Principle 2- Exhaustive testing is impossible :Testing everything (all combinations of inputs and preconditions) is not feasible except for trivial cases. Instead of exhaustive testing, we use risks and priorities to focus testing efforts.
For example, nuclear power installations, air traffic control systems and fly-by-wire systems. Indeed, it is important that these systems are tested more thoroughly than most; but exhaustive testing is not possible.
Example : A simple function adds two 32 bit numbers and returns a result Assumption:1000 test cases can be executed per second.
Principle 3- Early testing:Testing activities should start as early as possible in the software development. Early testing such as early test design and review activities finds defects early on when are cheap to find and fix.
Early testing has following advantages:
a. Early preparation of test environment, thereby preventing any delays and
unknown risks will have enough time to deal with.
b. If you complete test cases early you will have a baseline. If there are changes
later , problem will be easy to detect by comparing it with baseline.
c. You will have time to Quantify the problem's scope.
d. You may find that few items may not be tested , since they may not be
impacted. This input can cut down on your Testing phase.
e. There is usually tendency to squeeze the testing time. This may impact
Quality. But if you start testing early , you may not need to squeeze your time.
Principle 4 - Defect clustering :A small number of modules contains most of the defects discovered during pre-release testing or show the most operational failures.
In most cases, it can be seen that the majority of the detected defects are caused by a small number if modules.
All of us experience traffic congestion's. Typically, during these congestion's, we will see a convoy effect. There will be stretches of roads with very heavy congestion's, with vehicles looking like
they are going in a convoy. This will be followed by a stretch of smooth sailing (rather , driving) until we encounter the next convoy.
Principle 5 - Pesticide Paradox: If the same tests are repeated over and over again , eventually the same set of test cases will no longer find any new bugs.
To overcome this ‘pesticide paradox’, the test cases need to be regularly reviewed and revised, and new and different tests need to be written to exercise different parts of the software.
Example : If you keep applying the same pesticide , the insects eventually build up resistance and the pesticide no longer works.
Principle 6 - Testing is context dependent: Not all software systems carry same level of risk and not all problems have the same Impact when they occur.
Example : Safety –critical software is tested differently from an e-commerce site.
Principle 7- Absence-of-errors fallacy: Finding and fixing defects does not help if the system built is unusable and does not fulfill the users needs and expectations.
0 comments:
Post a Comment