Skip to content

QA Glossary ​

Terms I use day to day, explained briefly. In alphabetical order.

Acceptance criteria β€” Concrete, verifiable conditions a user story must meet to be considered done. If they aren't testable, they aren't acceptance criteria.

Bug (defect) β€” Discrepancy between actual and expected behavior. The usual chain: human error β†’ defect in the code β†’ observable failure at runtime.

Contract testing β€” Verifying that the "contract" (request/response format) between an API consumer and provider is honored, without needing to spin up both systems together. Key in microservices.

Coverage β€” A measure of how much of the system the tests exercise (lines, branches, requirements). High coverage β‰  good tests: you can execute all the code without verifying anything.

DoD (Definition of Done) β€” A team-agreed checklist defining when a piece of work is truly finished (code + tests + review + documentation…).

DoR (Definition of Ready) β€” A checklist defining when a story is ready to be started: clear requirements, testable acceptance criteria, resolved dependencies. The mirror of the DoD, at the start of the cycle.

E2E (End to End) β€” A test that walks through a complete system flow from the user's perspective, crossing every layer.

Environment β€” Each instance where the application lives: local, development, staging (pre-production), production.

Flaky test β€” A test that sometimes passes and sometimes fails without any code change. Typical causes: poorly managed waits, dependence on shared data, execution order, unstable environment.

Given-When-Then β€” A structure for expressing test cases and acceptance criteria: Given (initial state), When (action), Then (expected result). It makes cases readable and unambiguous.

Happy path β€” The main flow where everything goes right: valid data, correct user, no errors. The opposite is edge cases and negative testing.

Hotfix β€” An urgent fix deployed to production outside the normal release cycle.

IDOR (Insecure Direct Object Reference) β€” An authorization vulnerability: accessing another user's resources by changing an ID in the request.

Mock / Stub β€” Controlled stand-ins for real dependencies (services, APIs) to isolate what's being tested.

POM (Page Object Model) β€” A design pattern for UI automation: each page/component is modeled as a class encapsulating its locators and actions. Tests talk to the page in business language (loginPage.login(user)), not in selectors.

Quality gate β€” An automatic quality threshold (coverage, bugs, code smells, duplication) that code must pass in CI to be mergeable.

Regression β€” A defect in something that used to work, introduced by a later change. Regression testing: re-running tests to catch them.

Release β€” A version of the software that gets published. Release notes: what it includes.

Root cause β€” The real origin of a defect, beyond the symptom. Classifying the root causes of bugs (ambiguous requirement, unhandled case, regression, data…) reveals patterns that steer the testing strategy.

Sharding β€” Splitting the test suite across several CI machines running in parallel. Total time is set by the slowest shard, which is why balancing the split by duration matters.

Shift-left β€” Moving quality activities as early as possible in the cycle: reviewing requirements, testing designs, automating from the first commit.

Smoke test β€” A minimal, fast check that the essentials work, before investing in deeper testing.

Test case β€” A set of preconditions, steps, data and expected result that verifies a specific behavior.

Test plan β€” A document defining the scope, approach, resources and schedule of testing activities.

Traceability β€” The relationship between requirements ↔ test cases ↔ bugs. It lets you answer "which requirements are covered?" and "which tests should I re-run if this requirement changes?".

UAT (User Acceptance Testing) β€” Acceptance testing performed by the customer or end users to validate that the product solves their need.