# Software testing glossary: key terms explained

> Plain definitions of software testing terms, from mutation testing and surviving mutants to regression, smoke and property-based testing.

Source: https://cueapril.com/glossary
Updated: 2026-09-30

- **Agentic software testing:** Software testing in which an AI agent plans and runs checks toward a goal, using the tools and permissions people have approved. People keep control of the scope, the budget and the release decision. Read more: [Agentic testing](https://cueapril.com/guides/agentic-software-testing).
- **AI testing agent:** An AI system that plans, runs and reports software checks using your requirements and tools. Cue April is an AI testing agent for engineering and QA teams. Read more: [Cue April](https://cueapril.com/).
- **API testing:** Testing a service through its programming interface: send requests and check each response against the expected status, body, schema and access rules. Read more: [API testing](https://cueapril.com/testing/api-testing).
- **Behaviour-driven development (BDD):** A way of working in which a team describes expected behaviour as concrete examples, often written in Gherkin, and turns those examples into executable checks. Read more: [Gherkin testing](https://cueapril.com/testing/gherkin-testing).
- **Code coverage:** The share of code, such as lines or branches, that a test suite executes. Coverage shows which code ran. Mutation testing shows whether the tests would notice a wrong result. Read more: [Mutation testing](https://cueapril.com/testing/mutation-testing).
- **Computer-use exploration:** Exploratory testing performed by an AI agent that operates a browser the way a person does, clicking, typing and reading the screen, within approved actions. Read more: [Computer-use exploration](https://cueapril.com/testing/exploratory-testing).
- **Continuous testing:** Running automated tests throughout development, on every change and on a schedule, so feedback arrives while the change is still fresh. Read more: [How it works](https://cueapril.com/how-it-works).
- **Counterexample:** A concrete input that breaks a property in property-based testing. It gives your team a specific case to reproduce and investigate. Read more: [Property-based testing](https://cueapril.com/testing/property-based-testing).
- **Cucumber:** An open-source tool that runs Gherkin scenarios by matching each step to code, called a step definition. Read more: [Gherkin testing](https://cueapril.com/testing/gherkin-testing).
- **End-to-end testing:** Testing a complete user journey through the running application, usually in a real browser, from the interface down to the services behind it. Read more: [Playwright testing](https://cueapril.com/testing/playwright-testing).
- **Evidence pack:** A downloadable record of a test run: the specification, source, tests, measured outcomes, native reports and file checksums. Read more: [Sample evidence](https://cueapril.com/sample-report).
- **Exploratory testing:** Testing in which the tester designs and runs checks while learning how the application behaves, instead of following a fixed script. Read more: [Computer-use exploration](https://cueapril.com/testing/exploratory-testing).
- **fast-check:** An open-source property-based testing library for JavaScript and TypeScript. It generates inputs for a stated property and reports counterexamples. Read more: [Property-based testing](https://cueapril.com/testing/property-based-testing).
- **Flaky test:** A test that passes and fails on the same code with no change in between, often because of timing, shared state or an external dependency.
- **Functional testing:** Testing that checks a feature does what it should from the user’s point of view, by comparing actual behaviour with the requirements. Read more: [Testing methods](https://cueapril.com/testing).
- **Gherkin:** A plain-language format for describing behaviour as scenarios made of Given, When and Then steps. Read more: [Gherkin testing](https://cueapril.com/testing/gherkin-testing).
- **Integration testing:** Testing that checks how separate parts of a system work together, such as a service and its database, or two services talking through an API. Read more: [API testing](https://cueapril.com/testing/api-testing).
- **Invariant:** A rule that must stay true for every valid input or state, such as “a round trip preserves the value”. Property-based tests check invariants. Read more: [Property-based testing](https://cueapril.com/testing/property-based-testing).
- **Jest and Vitest:** Open-source JavaScript and TypeScript test runners, commonly used for unit tests. Read more: [Unit testing](https://cueapril.com/testing/unit-testing).
- **Mutant:** A copy of your code with one small, deliberate change, such as a flipped comparison, used in mutation testing. Read more: [Mutation testing](https://cueapril.com/testing/mutation-testing).
- **Mutation score:** The share of generated mutants that the tests detected. It describes only the code and mutants that ran. Read more: [Mutation testing](https://cueapril.com/testing/mutation-testing).
- **Mutation testing:** A way to measure whether tests notice real changes in behaviour. It makes small, deliberate edits to the code and runs the tests against each one. Read more: [Mutation testing](https://cueapril.com/testing/mutation-testing).
- **Playwright:** An open-source browser automation and testing framework from Microsoft that drives Chromium, Firefox and WebKit. Read more: [Playwright testing](https://cueapril.com/testing/playwright-testing).
- **Property-based testing:** Testing that checks a stated rule across many generated inputs and reports a counterexample when the rule breaks. Read more: [Property-based testing](https://cueapril.com/testing/property-based-testing).
- **Pull request:** A request to merge a set of code changes into a shared branch. Reviewers examine it before the change joins the codebase. Read more: [Pull request testing](https://cueapril.com/use-cases/pull-request-testing).
- **Regression draft:** A proposed regression test created from an approved finding, which your team reviews before it joins the suite. Read more: [How it works](https://cueapril.com/how-it-works).
- **Regression testing:** Re-running checks on existing behaviour after a code change to confirm that nothing that used to work has broken. Read more: [Regression testing](https://cueapril.com/guides/regression-testing).
- **Smoke testing:** A quick set of checks that confirms the most important functions of a build work before deeper testing starts.
- **Source revision:** The exact commit a test run used, recorded so each result can be traced to the code it tested. Read more: [How it works](https://cueapril.com/how-it-works).
- **Step definition:** The code that Cucumber runs for a Gherkin step. Undefined or pending steps leave a scenario incomplete. Read more: [Gherkin testing](https://cueapril.com/testing/gherkin-testing).
- **Stryker:** An open-source mutation testing framework, with versions for JavaScript and TypeScript, C# and Scala. Read more: [Mutation testing](https://cueapril.com/testing/mutation-testing).
- **Surviving mutant:** A mutant that no test detected. It may reveal a missing assertion, an unclear requirement or a change that makes no behavioural difference. Read more: [Mutation testing](https://cueapril.com/testing/mutation-testing).
- **Test automation:** Using software to run tests and compare the results with expected outcomes, instead of performing each check by hand. Read more: [How it works](https://cueapril.com/how-it-works).
- **Test coverage:** A measure of how much of the code or the requirements a test suite exercises. High coverage shows what ran; mutation testing shows whether the tests would notice a fault. Read more: [Mutation testing](https://cueapril.com/testing/mutation-testing).
- **Test oracle:** The source of truth a test uses to decide whether a result is correct. For AI-generated code, the oracle should come from requirements your team agreed independently. Read more: [Testing AI-generated code](https://cueapril.com/guides/testing-ai-generated-code).
- **Unit test:** A test that checks the smallest piece of code, such as one function, in isolation. Read more: [Unit testing](https://cueapril.com/testing/unit-testing).
- **User acceptance testing (UAT):** Testing by the people who will use the software, or their representatives, to confirm that it meets their needs before release. Read more: [Regression testing](https://cueapril.com/guides/regression-testing).
