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.

As a non-native speaker developing in a professional environment, particularly within software testing, you’ll quickly realize that technical vocabulary is only part of the challenge. The way you communicate – your phrasing, tone, and understanding of subtle nuances – can significantly impact collaboration with colleagues, especially during code reviews or when explaining complex test scenarios. It’s not just about knowing the words; it’s about conveying meaning clearly and effectively. One frequent hurdle is interpreting feedback, often delivered with a level of precision that can feel vague to someone adjusting to more formal English. For example, a reviewer might comment on a failing test as “this needs to be more robust” without immediately specifying why robustness is lacking. This ambiguity can lead to wasted time and frustration – both for you and the reviewer. Similarly, during Slack conversations discussing test results, avoiding overly literal translations of technical terms is crucial. Saying simply “the test failed” might not convey the urgency or potential underlying issue as effectively as something like “The regression test for user login has consistently returned a failure; we need to investigate.”

Another area where careful phrasing becomes vital is in pull request descriptions. When detailing changes, it’s best to move beyond just stating what you did and focus on why. Instead of “Fixed bug X,” consider “Implemented a retry mechanism for the API call to handle intermittent network issues that were causing false negatives in test suite Y.” This demonstrates understanding, proactive problem-solving, and helps reviewers quickly grasp the context of your work. Furthermore, learning to articulate your thought process – explaining how you arrived at a particular solution – is invaluable. Even if the final solution isn’t perfect, demonstrating clear reasoning builds trust and encourages constructive feedback. You might hear phrases like “Let’s explore alternative approaches” or “Could we consider leveraging [framework/library] for this?” These are invitations to discuss, not criticisms of your initial work. Remember, a proactive approach to communication fosters a more collaborative and productive testing environment.

It’s also important to recognize that different teams have slightly varying conventions. Some teams might prioritize brevity in Slack messages, while others favor detailed explanations. Observe how your colleagues communicate and adapt your style accordingly. Don’t be afraid to politely ask for clarification if something isn’t clear – it’s far better to seek understanding than to make assumptions. Finally, actively seeking feedback on your written communication – particularly PR descriptions – can dramatically improve your clarity and effectiveness. A quick review from a colleague can highlight areas where you could refine your phrasing or provide more context.

Here’s an example of using pytest to set up a test environment with fixtures:

import pytest

@pytest.fixture(scope="session")
def database_connection():
    # Simulate establishing a database connection
    print("Connecting to the database...")
    yield "test_database"  # Return a placeholder for testing purposes
    print("Closing database connection.")

This fixture provides a consistent, pre-configured environment for your tests, ensuring repeatability and reducing setup time. The scope="session" ensures that the database connection is only established once per test session, improving performance. Using fixtures effectively demonstrates a solid understanding of test automation principles and contributes to more maintainable and reliable test suites.

Frequently Asked Questions

What English level do I need to read "Vocabulary for Test Automation Engineers"?

This article is tagged Intermediate. If you find the vocabulary difficult, start with a related Vocabulary vocabulary exercise first, then come back — technical reading gets much easier once the core terms feel familiar.

Is this article free to read?

Yes. Every article on CoderSlingo, including this one, is free to read with no account, sign-up, or paywall.

How is reading this article different from doing an exercise?

Articles like this one explain concepts and vocabulary in context through prose, while exercises are interactive drills — fill-in-the-blank, matching, and multiple-choice — that test and reinforce specific terms. Reading builds understanding; exercises build recall.