Vocabulary for Test Automation Engineers

Essential English vocabulary for test automation: test harness, fixtures, flaky tests, the test pyramid, page object model, assertions, and more.

Test automation has its own rich vocabulary. If you work as a test automation engineer — or if you collaborate closely with QA — being able to discuss testing concepts precisely in English will make your code reviews, architecture discussions, and documentation far more effective.

This guide covers the most important terms across test structure, tooling, and quality strategy.


Test Architecture

Test Pyramid

The test pyramid is a model that describes the ideal distribution of tests in a software project. It was popularised by Mike Cohn and later refined by Martin Fowler.

  • Unit tests (base of the pyramid) — many, fast, cheap, isolated
  • Integration tests (middle) — fewer, test component interactions
  • End-to-end tests (top) — fewest, slow, test the full system

“Our test suite doesn’t follow the pyramid — we have more end-to-end tests than unit tests, which is why the pipeline takes forty minutes to run.” “We’re inverting the pyramid. The goal this quarter is to replace brittle E2E tests with fast, targeted integration tests.”

Test Harness

A test harness is the collection of software, tools, and data used to execute tests automatically and report results.

“The test harness spins up a Docker Compose environment before each test run and tears it down afterwards.” “We inherited a test harness from the previous team — it works, but it’s poorly documented and difficult to extend.”


Test Data and Setup

Fixtures

Fixtures are the data and environment setup required before a test can run. Fixtures ensure each test starts from a known, consistent state.

“The database fixture seeds three users and two organisations before each test suite runs.” “We moved our fixtures into a shared module so every test file can import them without duplication.”

Setup and Teardown

Setup (or beforeEach / beforeAll) runs before a test. Teardown (or afterEach / afterAll) cleans up afterwards.

“The setup creates a temporary S3 bucket; the teardown deletes it and all its contents after the test completes.”

Test Double

A test double is any object that substitutes for a real dependency in a test. Subtypes include:

  • Mock — a double that records calls and can verify expectations
  • Stub — a double that returns predetermined values
  • Spy — a double that wraps a real object and records calls
  • Fake — a simplified working implementation (e.g. an in-memory database)

“We stubbed the payment gateway to return a success response without making real API calls.” “The mock verifies that the notification service was called exactly once with the correct user ID.”


Test Quality

Flaky Tests

A flaky test is one that sometimes passes and sometimes fails for reasons unrelated to the code under test — typically timing issues, network dependencies, or shared state.

“We have about fifteen flaky tests in the E2E suite. They’re causing false failures in CI and eroding team trust in the pipeline.” “A flaky test is worse than no test — it trains engineers to ignore failures.”

Common causes of flakiness:

  • Race conditions or timing dependencies
  • Tests sharing mutable state
  • Reliance on external services
  • Non-deterministic test ordering

“We quarantined the flaky tests in a separate job so they don’t block deployments while we investigate.”

Assertions

An assertion is a statement in a test that verifies the actual output matches the expected output. If the assertion fails, the test fails.

“The test asserts that the response status code is 201 and that the returned ID is a valid UUID.” “We use soft assertions in our API tests so that all assertion failures are collected and reported together, rather than stopping at the first failure.”


Test Patterns

Page Object Model (POM)

The Page Object Model is a design pattern for UI test automation where each page (or component) of an application is represented as a class. Test methods interact with the page through this class rather than directly with DOM selectors.

“We refactored our Playwright tests to use the Page Object Model. Now when the login page changes, we only update one class instead of thirty test files.” “The LoginPage class encapsulates all the selectors and interactions for the login flow, keeping the test code readable and maintainable.”

Data-Driven Testing

Data-driven testing runs the same test logic against multiple sets of input data, usually provided in a table or external file.

“We use a data-driven approach for our validation tests — the same test function runs against forty combinations of valid and invalid inputs.”

Contract Testing

Contract testing verifies that two services (typically a consumer and a provider) agree on the structure of the API or messages between them. Pact is the most common tool.

“We added contract tests between the frontend and the user service so that any breaking API change is caught before deployment.”


Metrics and Reporting

Code Coverage

Code coverage measures the percentage of production code exercised by the test suite. Common types include line coverage, branch coverage, and statement coverage.

“We have 78% line coverage, but our branch coverage is only 52% — which means a lot of conditional logic is untested.”

Test Flakiness Rate

“Our flakiness rate across the E2E suite is around 8%. The industry target is below 1%.”


Practical Phrases for Test Automation Engineers

  • “This test is non-deterministic — we need to find and remove the timing dependency.”
  • “The fixture is not resetting shared state between tests, which is causing inter-test contamination.”
  • “I’d recommend moving this assertion into the integration test layer rather than the E2E layer — it’s much faster to run there.”
  • “We should add a contract test here to guard against breaking changes to this API.”
  • “The page object encapsulates the selector logic, so the test reads like a specification.”

Precise test vocabulary enables clearer test plans, better code reviews, and more productive conversations about quality strategy. The terms above are stable across most technology stacks and will serve you in Python, JavaScript, Java, and beyond.