November 3, 2026
βπTest shows the presence of bugs, but never their absenceβ
βTesting shows the presence, not the absence of bugs.β

By Kaveesha Senarathne
2 min read
"Testing shows the presence, not the absence of bugs."
β Edsger W. Dijkstra
Software testing is an important part of software development. It helps developers to find problems and make software more reliable. But there is one important thing we should understand. Testing can prove that bugs exist, but it cannot prove that there are no bugs.
π Why?
When we test a software system, we usually test specific inputs, outputs, and scenarios.
For example, imagine we are testing a login system.
We might test:
β
Correct username + correct password β Login successful
β Correct username + wrong password β Error message
β Wrong username + correct password β Error message
β Empty username and password β Validation messageβ
Correct username + correct password β Login successful
β Correct username + wrong password β Error message
β Wrong username + correct password β Error message
β Empty username and password β Validation message
If all these tests pass, we can say that the system works correctly for those tested scenarios.
But what about other situations?
What if the username contains special characters?
What if the password is extremely long?
What if the user clicks the login button multiple times quickly?
What if the internet connection suddenly disappears?
These scenarios may not have been tested.
βΎοΈ The Problem of Infinite Possibilities
Most software has a huge number of possible inputs and execution paths. It is practically impossible to test every possible situation.
Think about a simple calculator.
Even if we test:
10 + 5 = 15
20 Γ 3 = 6010 + 5 = 15
20 Γ 3 = 60There are still millions of other possible combinations we haven't tested. So, passing tests does not mean the software is completely free of bugs.
π§ͺ What Testing Can Actually Tell Us
Testing is very useful for finding defects. If a test fails, we have evidence that there is a bug or unexpected behaviour.
But if all our tests pass, we can only say:
"No bugs were found in the scenarios we tested."
We cannot say:
"There are no bugs in the software."
π― Why This Matters
This idea reminds us that testing is not about proving that software is perfect. Instead, testing helps us:
- Find defects early
- Reduce risks
- Improve software quality
- Verify expected behavior
- Increase confidence in the system
Good testing tries to cover as many important scenarios as possible, but it can never guarantee that every possible bug has been found.
π Final Thought
The goal of testing is not to prove that software has zero bugs. The goal is to find as many important problems as possible and reduce the risk of failures.
As Dijkstra's famous statement reminds us:
"Testing shows the presence, not the absence of bugs."
So, when all your tests pass, don't think:
"There are no bugs."
Think:
"We haven't found any bugs in the scenarios we tested." π§ͺπ»