Chapter 1.2 · Fundamentals of Testing

Why is Testing Necessary?

Testing isn't just a checkbox before release - it exists because software failures have real consequences. This topic covers why testing matters, how it fits alongside quality assurance, and the chain that connects a simple human mistake to a customer- facing failure.

~6 min read

The core ideas, explained

1

Software quality has real-world consequences

Software failures can cause financial loss, wasted time, damaged reputation, and - in safety-critical systems - injury or worse. Testing exists because the cost of an undetected defect almost always grows the longer it goes unnoticed, and the more critical the system, the more essential rigorous testing becomes.

Example in practice

A pricing bug that silently undercharges every customer by a few dollars can cost a retailer a huge amount before anyone notices; a defect in medical infusion-pump software can directly endanger a patient's life.

2

Testing contributes to quality assurance - but isn't the same thing

Quality Assurance (QA) is about process: making sure the right practices are followed so quality gets built in from the start (preventive, organization-wide). Quality Control (QC) - of which testing is a central activity - is about the product: evaluating specific work products to find defects in them (corrective, product-focused). Testing is a key QC activity, but QA covers much more than testing alone, such as process audits, standards, and training.

Example in practice

Introducing a mandatory code-review checklist across all projects is a QA activity (process-level); a tester executing test cases against this week's build is a QC/testing activity (product-level).

3

Errors, defects, and failures form a chain

A human error (mistake) can introduce a defect (fault, or "bug") into a work product such as a requirement or a piece of code. If that defective code is executed under the right conditions, it produces a failure - an observable, incorrect behavior. The root cause is the underlying reason the error happened in the first place (e.g. time pressure, a miscommunication, insufficient training) - understanding it is what helps prevent the same class of mistake from recurring.

Example in practice

A developer misreads an ambiguous requirement (error) and writes code that computes tax incorrectly (defect). A customer later sees the wrong total at checkout (failure). The root cause might be that the requirement was never reviewed before development started.

Key points to remember

  • Testing exists because software failures have real financial, reputational, legal, and sometimes safety consequences.
  • Quality Assurance (QA) is process-focused and preventive; Quality Control (QC) - including testing - is product-focused and detective/corrective.
  • A human error can introduce a defect; a defect, when executed, can cause a failure - the root cause is the underlying reason the error happened.
  • Testing reduces the risk of these consequences by finding failures and their defects before they reach real users.
  • The more critical or safety-related a system is, the more essential rigorous testing becomes.

Terminology

A few terms from this topic worth knowing precisely.

Quality Assurance (QA)

Process-focused, preventive activity aimed at building quality in from the start, by making sure the right practices are followed - as opposed to evaluating a specific product.

Quality Control (QC)

Product-focused, corrective activity that evaluates specific work products to find defects in them - testing is one of the main QC activities.

Error

A human mistake that introduces a defect into a work product - the first link in the error-defect-failure chain.

Defect

The underlying flaw or root cause present in a work product, such as a contradiction in a requirement or a bug in code.

Failure

The observable, incorrect behavior that appears when a defect is actually executed under the right conditions.

Root cause

The underlying reason an error happened in the first place (e.g. time pressure, poor communication) - addressing it prevents the same class of mistake recurring, beyond just fixing one defect.

Summary

Testing is necessary because software failures carry real financial, reputational, legal, and sometimes safety consequences. It is a central Quality Control activity that complements broader Quality Assurance processes, and it exists precisely because a small human error can travel - undetected - all the way to a customer-facing failure.

ConceptOne-line memory hook
Real-world consequencesFailures cost money, trust, or worse
QA vs. QCQA = process/preventive, QC/testing = product/corrective
Error → defect → failureA mistake seeds a bug that later misbehaves
Root causeFix why it happened, not just what happened

Check your understanding

10 quick questions - click an option to see if you got it right.