Formal testing conducted to determine whether a system satisfies its acceptance criteria and to enable a customer or stakeholder to decide whether to accept the system. Includes UAT, business acceptance testing, and contractual acceptance testing.
A testing approach where the tester has no knowledge of the internal structure or code of the system under test. Tests are derived entirely from external specifications, requirements, and observed behaviour.
The sequence of states a defect moves through from discovery to closure: New → Assigned → Open → Fixed → Retest → Verified → Closed (or Rejected / Deferred / Reopened). The exact states vary by team process.
A flaw in a component or system that can cause it to fail to perform its required function. Also called a bug or fault. Defects are distinguished by severity (impact on the system) and priority (urgency of fixing).
Testing that validates the complete workflow of a feature or system from start to finish, simulating real user scenarios across all layers (UI, API, database). E2E tests provide high confidence but are slower and more brittle than unit or integration tests.
A simultaneous learning, test design, and test execution approach where testers use their knowledge, creativity, and intuition to explore the system. Documented as session-based testing with charters. Highly effective for uncovering usability issues and edge cases.
Testing that verifies the software performs the functions specified in its requirements. It focuses on what the system does — inputs, outputs, and behaviour — rather than how it does it internally.
A testing approach combining elements of black-box and white-box testing. The tester has partial knowledge of the internal structure — enough to design better tests — but still tests from the external interface.
Testing performed to verify that interfaces between components or between systems work correctly. Catches issues that unit tests miss: mismatched contracts, incorrect data transformation, and communication errors between modules.
Testing that evaluates attributes of the system other than its functional behaviour — performance, security, accessibility, usability, reliability, and scalability. Often overlooked in sprint testing but critical for production readiness.
Testing to confirm that recent code changes have not adversely affected existing functionality. A regression suite selects tests from across the system most likely to reveal regressions, balancing coverage against execution time.
A narrow regression check focused on verifying that a specific bug fix or small change works correctly without breaking adjacent functionality. Performed after a fix, before broader regression testing. Faster and more targeted than a full smoke test.
The degree of impact a defect has on the operation of the product — typically classified as Critical, Major, Minor, or Trivial. Severity is set by the tester. A critical defect causes data loss or system crash; trivial is a cosmetic issue with no functional impact.
A shallow, broad test run executed on a new build to verify that the most critical functions work before deeper testing begins. Acts as a build verification gate. If smoke fails, the build is rejected and returned to development.
Testing of a complete, integrated system to evaluate compliance with its specified requirements. Tests the system as a whole, including integration between components, end-to-end flows, and non-functional attributes.
A set of preconditions, inputs, actions, expected results, and postconditions that specifies how to verify a particular requirement. A well-written test case is atomic, independent, traceable to a requirement, and produces a clear pass/fail outcome.
A measure of the extent to which the test suite exercises the system. Coverage types include requirements coverage (what requirements have tests), code coverage (what lines/branches are executed), and risk coverage. Coverage metrics guide test adequacy decisions.
Data used to execute test cases. Good test data covers valid inputs, invalid inputs, boundary values, and realistic representative values. Test data management involves creation, masking of production data, and teardown to keep environments clean.
A document describing the scope, objectives, schedule, resources, approach, and risks of a testing effort. It defines what will be tested, who will test it, when, and how success is measured. Typically maintained at the project or release level.
A model that recommends having many fast unit tests at the base, fewer integration tests in the middle, and even fewer slow end-to-end tests at the top. The pyramid guides investment in the right test types to maximise confidence while keeping feedback loops fast.
A high-level description of how testing will be approached across the organisation or project. Defines testing levels, types, environments, tools, entry/exit criteria, and responsibilities. Lives above the test plan.
User Acceptance Testing. Testing performed by end users or stakeholders in a realistic environment to confirm the system meets business requirements and is ready for production. UAT is the final gate before go-live.
Testing of individual software components in isolation from the rest of the system. Fast, cheap, and precise — unit tests verify logic at the function or class level. Typically written and run by developers using frameworks like JUnit, pytest, or Jest.
A testing approach where the tester has full knowledge of the internal structure, code, and logic of the system. Tests are designed to exercise specific paths, branches, conditions, and code statements. Also called glass-box or structural testing.