0% found this document useful (0 votes)
2 views

Software Testing Principles L2

The document outlines seven key principles of software testing, emphasizing that testing can reveal defects but cannot guarantee a defect-free product. It highlights the impossibility of exhaustive testing, the importance of early testing, and the tendency for defects to cluster in specific modules. Additionally, it discusses the need for varied testing approaches based on context and warns against the absence-of-errors fallacy, stressing that usability and user needs must be prioritized in testing.

Uploaded by

mcclaren388
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Software Testing Principles L2

The document outlines seven key principles of software testing, emphasizing that testing can reveal defects but cannot guarantee a defect-free product. It highlights the impossibility of exhaustive testing, the importance of early testing, and the tendency for defects to cluster in specific modules. Additionally, it discusses the need for varied testing approaches based on context and warns against the absence-of-errors fallacy, stressing that usability and user needs must be prioritized in testing.

Uploaded by

mcclaren388
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

Software Testing Principles

Lecture Two
The Seven Testing Principles

• Testing shows presence of defects:


• Testing can show the defects are present, but cannot prove that there are
no defects. Even after testing the application or product thoroughly we
cannot say that the product is 100% defect free.
• Testing always reduces the number of undiscovered defects remaining
in the software but even if no defects are found, it is not a proof of
correctness. Therefore, it is important to design test cases which find as
many defects as possible.
The Seven Testing Principles

• Exhaustive testing is impossible:


Testing everything including all combinations of inputs and
preconditions is not possible. So, instead of doing the exhaustive
testing we can use risks and priorities to focus testing efforts. Accessing
and managing risk is one of the most important activities and reason for
testing in any project.
The Seven Testing Principles

• Early testing:
• In the software development life cycle testing activities should start as
early as possible and should be focused on defined objectives. The
sooner we start the testing activities the better we can utilize the
available time. As soon as the initial products, such the requirement or
design documents are available, we can start testing.
• It is common for the testing phase to get squeezed at the end of the
development lifecycle, i.e. when development has finished, so by
starting testing early, we can prepare testing for each level of the
development lifecycle.
The Seven Testing Principles

• Defect clustering:
A small number of modules contains most of the defects
discovered during pre-release testing or shows the most
operational failures. This is the application of the Pareto Principle
to software testing: approximately 80% of the problems are found
in 20% of the modules.
The Seven Testing Principles

• Pesticide paradox: If the same kinds of tests are repeated again and again, eventually the
same set of test cases will no longer be able to find any new bugs. To overcome this
“Pesticide Paradox”, it is really very important to review the test cases regularly and new
and different tests need to be written to exercise different parts of the software or system
to potentially find more defects.
• Because as the system evolves, many of the previously reported defects will have been
fixed and the old test cases do not apply anymore. Anytime a fault is fixed or a new
functionality added, we need to do regression testing to make sure the new changed
software has not broken any other part of the software.
• However, those regression test cases also need to change to reflect the changes made in
the software to be applicable and hopefully fine new defects.
The Seven Testing Principles

• Testing is context depending:


• Different kinds of sites are tested differently. Different methodologies, techniques
and types of testing is related to the type and nature of the application.
• For example, a software application in a medical device needs more testing than a
games software. More importantly a medical device software requires risk based
testing, be compliant with medical industry regulators and possibly specific test
design techniques.
• By the same token, a very popular website, needs to go through rigorous
performance testing as well as functionality testing to make sure the performance
is not affected by the load on the servers.
The Seven Testing Principles

Absence –of– errors fallacy:


• If the system built is unusable and does not fulfil the user’s needs and
expectations then finding and fixing defects does not help. Just because
testing didn’t find any defects in the software, it doesn’t mean that the
software is ready to be shipped.
• Were the executed tests really designed to catch the most defects? or
where they designed to see if the software matched the user’s
requirements? There are many other factors to be considered before
making a decision to ship the software.

You might also like