Skip to content

QA & Testing Fundamentals, Levels & Types

What is QA

Quality Assurance vs Quality Control

QA QC
Focus Process — prevent defects Product — detect defects
When Throughout SDLC After work is done
Who Everyone on the team Dedicated testers / reviewers
Goal Build quality in Find quality issues out
Example Code reviews, standards, CI gates Test execution, inspections

One-liner: QA is proactive; QC is reactive.

QA vs Testing

  • Testing is one activity inside QA — it validates the product against requirements.
  • QA is the wider system: processes, standards, reviews, training, CI gates that ensure quality throughout development.

Shift-Left Testing

Moving quality activities earlier in the lifecycle — from post-dev phase into design, coding, and integration.

Stage Traditional Shift-Left
Design No testing Review requirements for testability
Development Dev writes code, QA waits Unit tests, static analysis on every commit
Integration First big test run Contract tests, API tests in CI
Release QA bottleneck Automated regression, fast feedback

Cost impact (IBM research): fixing a defect found in design costs ~$1; the same defect in production costs ~$100. Shift-left reduces defect escape rates by 30–40% and speeds releases by 25–35%.

7 Testing Principles (ISTQB)

# Principle Practical meaning
1 Testing shows presence of defects Passing tests ≠ bug-free
2 Exhaustive testing is impossible Risk-based prioritisation is essential
3 Early testing saves money Shift-left; catch defects in requirements
4 Defect clustering 80% of defects in ~20% of modules — focus there
5 Pesticide paradox Same tests stop finding new bugs — update them
6 Testing is context-dependent Safety-critical ≠ e-commerce ≠ mobile game
7 Absence-of-errors fallacy A bug-free product that solves the wrong problem is still a failure

Verification vs Validation

Verification Validation
Question "Are we building the product right?" "Are we building the right product?"
Method Reviews, static analysis, walkthroughs Testing, demos, UAT
Against Specifications and design docs User needs and business goals

Testing vs Debugging

  • Testing — systematic process to find failures; produces a defect report.
  • Debugging — developer activity to locate and fix the root cause. QA tests → finds failure → logs defect → Dev debugs → fixes → QA re-tests

Test Levels

Four levels form the classic testing stack, each answering a different question:

Level Scope Who runs it Speed Goal
Unit Single function / class Developer Very fast (ms) Logic correctness in isolation
Integration Component interactions Dev / QA Fast (seconds) Contracts and data flow between parts
System Full application end-to-end QA Minutes Feature correctness in deployed environment
Acceptance Business requirements QA + Product / client Minutes–hours "Does it solve the real problem?"
  • Unit — isolated from DB, network, filesystem (mocks/stubs); runs on every commit.
  • Integration — tests real interactions: service → DB, service → external API.
  • System — happy paths + key negative scenarios in a deployed environment.
  • Acceptance — UAT (stakeholders validate business value) or regulatory sign-off.

See Testing Pyramid for depth on balancing these levels.


Types of Testing

Functional — validates what the system does

Type Focus
Feature testing New functionality works as specified
Regression testing Existing features unbroken after changes
Smoke testing Core flows work after a new build
Sanity testing Targeted check of a recently fixed area

Non-Functional — validates how well the system behaves

Type What to measure Tools
Performance / Load Throughput, latency under expected load k6, Gatling, Locust
Stress Behavior at and beyond capacity limits k6, JMeter
Security OWASP vulnerabilities, auth, data exposure OWASP ZAP, Burp Suite
Usability UX quality, accessibility (WCAG) Axe, manual heuristics
Compatibility Browsers, devices, OS versions BrowserStack, Playwright
Reliability Stability over extended runtime Chaos engineering, soak tests

Additional types

Type When to use
Exploratory New features, unclear requirements — use charter-based sessions
Ad-hoc Quick unstructured check; not a substitute for test cases
Regression Before every release; should be fully automated

Choosing the right mix

Signal Action
High defect rate in old features Strengthen regression automation
Performance complaints in prod Add load/stress testing to CI
Security incident Add DAST to CI pipeline
New integration point Add integration + contract tests
New UI flow Exploratory session + automate happy path