The document outlines seven key principles of software testing, emphasizing that testing primarily reveals defects rather than proving their absence. It argues that exhaustive testing is impractical, and starting testing early in the software lifecycle can save time and money by avoiding the propagation of defects. Additionally, it highlights the importance of context in testing methodologies and cautions against relying on repetitive testing without updates.
1.TESTING SHOWS THEPRESENCE
OF DEFECT, NOT THEIR ABSENCE
• A lot of people think that testing can prove that there are no defects within the
software under test
• Objective of software testing is to show that defects are present
• Software for which no defects are found with testing activities is not bug free
3.
2.EXHAUSTIVE TESTING IS
IMPOSSIBLE
•Test everything is for sure very expansive both in time and money terms
• Just in exceptional cases can be possible to test everything, otherwise test execution
is affected from time, budget, risk analysis, testing techniques and priorities
4.
3.EARLY TESTING SAVESTIME AND
MONEY
• Test activities should start as soon as possible over a software lifecycle
• Errors or defects, if not detected can propagate from a phase to another (e.g. From
analysis to design and to the implementation) becoming more harmful and difficult
to fix back in every development product affected
• It’s easier to fix defects in the early phases of the project, so the propagation can be
avoided
5.
4.DEFECTS CLUSTER TOGETHER
•Most of the defects are contained within small number of modules
• Pre-release testing can help identifying these defects and then the module more
affected
• Predicted defect cluster (based on the static testing mainly) together with actual
observed defect cluster, are important input for the risk analysis and the subsequent
estimation of the effort needed to conduct test activities
6.
5.BEWARE OF THEPESTICIDE
PARADOX
• When the same tests are repeated over and over the risk is that they are not
eventually discovering other issues anymore, like a pesticide
• Test cases should be updated
• Test data should be updated
7.
6.TESTING IS CONTEXTDEPENDENT
• Testing is done differently in different contexts
• Software for mobile application is not safety critical for example, so the test will be
conducted in a different way than safety-critical industrial control software
8.
7.ABSENCE OF ERRORSIS A FALLACY
• As a consequence of principles 1 and 2, test everything and find every existing
defect is not possible
• It is a fallacy to expect that testing a large number of test cases and finding a lot of
issues then fixed can guarantee a good quality of the software under test
• User experience and performance are also part of the good quality of a software
product (non-functional aspects)