03 | 7 Software Testing Principles

Published on Aug 11, 2021 | By Tesvan team

7 Principles of Software Testing


  • Testing shows presence of defects
  • Exhaustive testing is not possible
  • Early testing
  • Defect clustering
  • Pesticide paradox
  • Testing is context dependent
  • Absence of errors fallacy


Exhaustive testing

Yes! Exhaustive testing is not possible. Instead, we need the optimal amount of testing based on the risk assessment of the application.


Defect clustering

Defect Clustering which states that a small number of modules contain most of the defects detected. This is the application of the Pareto Principle to software testing: approximately 80% of the problems are found in 20% of the modules.


Pesticide Paradox

Repetitive use of the same pesticide mix to eradicate insects during farming will over time lead to the insects developing resistance to the pesticide Thereby ineffective of pesticides on insects. The same applies to software testing. If the same set of repetitive tests are conducted, the method will be useless for discovering new defects.

To overcome this, the test cases need to be regularly reviewed & revised, adding new & different test cases to help find more defects.

Testers cannot simply depend on existing test techniques. He must look out continually to improve the existing methods to make testing more effective. But even after all this sweat & hard work in testing, you can never claim your product is bug-free. To drive home this point, let's see this video of the public launch of Windows 98

You think a company like MICROSOFT would not have tested their OS thoroughly & would risk their reputation just to see their OS crashing during its public launch!


Testing shows a presence of defects

Hence, the testing principle states that - Testing talks about the presence of defects and doesn’t talk about the absence of defects. i.e. Software Testing reduces the probability of undiscovered defects remaining in the software but even if no defects are found, it is not proof of correctness.
But what if, you work extra hard, taking all precautions & make your software product 99% bug-free. And the software does not meet the needs & requirements of the clients.
This leads us to our next principle, which states that- Absence of Error.


Absence of Error - fallacy

It is possible that software which is 99% bug-free is still unusable. This can be the case if the system is tested thoroughly for the wrong requirement. Software testing is not merely finding defects, but also checking that software addresses the business needs. The absence of Error is a Fallacy i.e. Finding and fixing defects does not help if the system build is unusable and does not fulfill the user's needs & requirements.
To solve this problem, the next principle of testing states that Early Testing


Early Testing

Early Testing - Testing should start as early as possible in the Software Development Life Cycle. So that any defects in the requirements or design phase are captured in the early stages. It is much cheaper to fix a Defect in the early stages of testing. But how early one should start testing? It is recommended that you start finding the bug the moment the requirements are defined. More on this principle in a later training tutorial.


Testing is context-dependent

Testing is context-dependent which basically means that the way you test an e-commerce site will be different from the way you test a commercial off-the-shelf application. All the developed software’s are not identical. You might use a different approach, methodologies, techniques, and types of testing depending upon the application type. For instance testing, any POS system at a retail store will be different than testing an ATM machine.



Useful links
1. 7 Principles of Software Testing /video tutorial/eng/
2. Software Testing Principles /video tutorial/rus/
3. Software Testing Principles /video tutorial/rus/
4. 7 Principles of Software Testing /article/eng/
5. 7 Principles of Software Testing /article/eng/

Next Lessons

04 | SDLC

Aug 11, 2021

What is SDLC? SDLC is Software Development Life Cycle. It is the sequence of activities carried out by Developers to design and develop high-quality software. R...

By Tesvan team

05 | STLC

Aug 11, 2021

 Requirement Collection and analysisRequirement Phase Testing also known as Requirement Analysis in which test team studies the requirements from a testing poin...

By Tesvan team

06 | Verification and Validation

Aug 11, 2021

Verification and Validation VerificationVerification in Software Testing is a process of checking documents, design, code, and program in order to check if the ...

By Tesvan team

07 | Unit testing

Aug 12, 2021

Testing levels There are mainly four Levels of Testing in software testing Unit testingA Unit is a smallest testable portion of system or application which can ...

By Tesvan team

08 | Integration testing

Aug 12, 2021

Integration testing Integration means combining. For Example, in this testing phase, different software modules are combined and tested as a group to make sure ...

By Tesvan team

Interesting For You

15 | Ad Hoc method

Aug 13, 2021 | By Tesvan team

Ad Hoc Method Ad hoc Testing is an informal or unstructured software testing type that aims to break the testing process in order to find possible defects or er...

07 | Unit testing

Aug 12, 2021 | By Tesvan team

Testing levels There are mainly four Levels of Testing in software testing Unit testingA Unit is a smallest testable portion of system or application which can ...