What is software testing, and why does a project need it?
Software testing is checking that software does what it should and finding defects before users do: running the product, and reviewing its requirements and code, against what's expected. Projects need it because a defect costs more to fix the later it's found, failures in production lose money and trust, and testing gives the team evidence that a release is good enough to ship. Testing can show that defects exist; it can't prove there are none.
Full answerHide full answer2 min read
What testing gives a project
| Benefit | Example |
|---|---|
| Finds defects early | A wrong GST rate caught in a requirement review costs a short meeting; caught in production, it costs refunds and a hotfix |
| Builds confidence to release | A passing regression suite lets the team ship on Friday without guessing |
| Reduces business risk | Failed payments, lost data and security holes are found before customers see them |
| Proves requirements are met | Every requirement has tests that show it works (question 17) |
| Meets contracts and regulations | Banking and healthcare apps must keep evidence of testing |
Why "the earlier, the cheaper": a mistake in a requirement gets copied into the design, the code and the test cases, and must then be fixed in all of them. Found in production, it also brings support calls, an emergency release and damage to the brand. The multipliers people quote, such as "10 times more per phase", are rough rules of thumb, but the direction holds.
The seven testing principles come up as follow-ups often enough to know by name. In the current ISTQB syllabus they are:
- Testing shows the presence, not the absence, of defects.
- Exhaustive testing is impossible, so we prioritise.
- Early testing saves time and money.
- Defects cluster together: a few modules hold most of them.
- Tests wear out: repeating the same tests stops finding new bugs (once called the pesticide paradox).
- Testing is context dependent: a banking app and a game need different testing.
- The absence-of-defects fallacy: a bug-free product that doesn't meet users' needs is still a failure.
Follow-ups
- QA vs QC vs testing? Quality assurance improves the process to prevent defects (standards, reviews, audits); quality control checks the product to find them; testing is the main quality-control activity.
- Can testing prove software is bug-free? No. That's principle 1: it reduces the risk of undiscovered defects, it doesn't remove it.