7 SOFTWARE TESTING
PRINCIPLES
Ing. Donato Di Pierro
1.TESTING SHOWS THE PRESENCE
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
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
3.EARLY TESTING SAVES TIME 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
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
5.BEWARE OF THE PESTICIDE
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
6.TESTING IS CONTEXT DEPENDENT
• 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
7.ABSENCE OF ERRORS IS 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)
THANK YOU
Donato Di Pierro
Full-Stack QA Engineer

Software testing principles

  • 1.
  • 2.
    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)
  • 9.
    THANK YOU Donato DiPierro Full-Stack QA Engineer