Software Testing Glossary
Plain-English definitions of the QA terms you'll actually run into. Bookmark it.
Acceptance Testing
Testing done to verify software meets business requirements — often the final step before release. Also called UAT (User Acceptance Testing).
API Testing
Testing at the API layer directly — checking endpoints for correct responses, status codes, error handling, and contract adherence. Faster and more stable than UI tests.
Automation Testing
Using scripts or tools to execute tests automatically. Best for repetitive, stable checks; not a replacement for human exploratory testing.
Boundary Testing
Testing values at the edges of allowed input ranges — e.g., 0, 1, max-1, max, max+1. Bugs love boundaries.
Bug (Defect)
Any deviation from expected behavior. Reported with steps to reproduce, expected vs actual, severity, and evidence.
Cross-Browser Testing
Verifying a web app works in Chrome, Safari, Firefox, Edge, and their mobile variants. Layout, features, and performance can all differ.
E2E (End-to-End) Testing
Testing a complete user journey through the whole system — from UI to database to API. High confidence but slower than unit tests.
Edge Case
A scenario at the extreme of possible inputs or conditions — often overlooked but where critical bugs hide.
Exploratory Testing
Unscripted testing where the tester designs and executes tests simultaneously, using experience and intuition to find bugs no script would catch.
Functional Testing
Verifying that each feature works according to its spec. Answers: does it do what it's supposed to do?
Integration Testing
Testing how multiple components work together — e.g., frontend + backend + database. Catches bugs that unit tests miss at the seams.
Load Testing
Simulating expected traffic to verify the system handles it. Different from stress testing, which pushes beyond limits.
Manual Testing
Human-executed testing — following scripts or exploring freely. Irreplaceable for UX, visual, and creative bug-finding.
Mobile Testing
Testing iOS and Android apps on real devices and emulators. Covers touch gestures, notifications, permissions, offline behavior, orientation.
Performance Testing
Measuring speed, responsiveness, and resource use under various conditions. Includes load, stress, and endurance testing.
Regression Testing
Re-running previously-passing tests after a code change to make sure nothing broke. The backbone of continuous delivery.
Sanity Testing
Quick, narrow check after a small change to confirm the specific fix works. Faster than smoke testing, narrower scope.
Security Testing
Verifying the app is safe against threats — injection, authentication bypass, data leaks, XSS, CSRF, insecure APIs.
Smoke Testing
Quick shallow test on a new build to make sure critical paths (login, checkout, save) work. If smoke fails, no deeper testing happens.
Stress Testing
Pushing the system beyond expected load to see where it breaks and how it recovers.
Test Case
A documented set of steps, inputs, and expected results for verifying a specific behavior. Enables consistent, repeatable testing.
Test Plan
A high-level document describing what will be tested, how, when, by whom, and with what tools. Sets scope and expectations.
Test Suite
A collection of related test cases run together — e.g., all login tests, all checkout tests.
Unit Testing
Testing individual functions or components in isolation. Fastest and cheapest tests; the base of the test pyramid.
Usability Testing
Watching real users interact with your product to find friction, confusion, and UX bugs. Small samples reveal huge issues.
UAT (User Acceptance Testing)
Testing done by actual end users (or business stakeholders) to confirm the product works for their real workflows before launch.
Visual Regression Testing
Comparing screenshots before and after code changes to catch unintended visual differences — often automated with tools like Percy or Playwright.