The importance of Quality Assurance and Testing
What is software testing?
Software testing is a set of activities used to evaluate the quality of software and related work products.
In simple words, testing helps us understand:
Testing includes both static and dynamic activities.
Static testing means checking work products without running the software. Examples include reviewing
requirements, user stories, test cases, design documents, and code.
Dynamic testing means running the software and observing how it behaves.
Testing is not only about finding bugs. It also helps teams understand quality, reduce risk, and make better
decisions.
Main objectives of testing
The main objectives of testing are to:
Key takeaway: Testing is not just bug hunting. It is a structured activity that helps teams understand
quality, reduce risk, and make better decisions.
Self-check
https://www.youtube.com/watch?v=u6QfIXgjwGQ
Testing vs debugging
Testing and debugging are connected, but they are not the same.
Testing
Testing is the process of identifying defects, failures, and quality risks. Its purpose is to discover problems
and provide information about product quality.
Debugging
Debugging is the process of finding the cause of a defect, analyzing it, and fixing it. It is usually performed by developers.
Example
This is debugging.
Key takeaway: Testing shows that a problem exists. Debugging finds the cause and removes it.
Self-check
How testing contributes to success
Software is part of daily life. People use it to pay bills, transfer money, communicate, study, travel, and work.
When software fails, the consequences can range from inconvenience to financial loss, reputational damage,
security issues, or even safety risks.
Testing contributes to success by:
Cost of defects
In general, the later a defect is found, the more expensive it is to fix.
For example:
This is why early testing matters.
Real-world impact
Software failures have caused:
Key takeaway: Testing helps teams catch important problems earlier, reduce business risk, and improve
product quality.
Self-check
Errors, defects, failures, and root causes
These terms describe different parts of the same problem chain.
Error: a human mistake, such as misunderstanding a requirement or writing incorrect logic.
Defect: a flaw in code, documentation, or another work product caused by an error.
Failure: incorrect behavior observed when a defect is triggered during execution.
Root cause: the underlying reason why the problem happened in the first place.
Error → Defect → Failure
Example
A product manager gives an unclear requirement (possible root cause). A developer misunderstands it
(error). The wrong discount formula is implemented in the code (defect). The user sees the wrong total
during checkout (failure).
Why root cause matters
If teams only fix the visible defect but ignore the root cause, similar problems may happen again.
Common root causes include: