Build

Testing & QA

Proving software works, and keeps working.

The territory

30 core terms mapped for this field, ranked by how often builders reach for them. Each one is a future entry. Want to bust one? One entry, one file, one pull request.

  • unit testtests one function in isolation, no network or database"test just this one function" · "small test"
  • integration testtests several real pieces wired together, e.g. API plus database"test the parts talking to each other" · "test with a real DB"
  • end-to-end (E2E) testscript drives the real app like a user would"robot that clicks through my site" · "fake user test"
  • test casedefines inputs, actions, and expected result for one behavior"one thing I'm checking" · "a single test"
  • test suiterelated tests grouped and executed together"all my tests" · "the whole test file"
  • assertionthe line that declares what the result must be"the part that says it should equal this" · "the check"
  • test runnertool that finds, executes, and reports on your tests"the thing that runs the tests" · "test command"
  • arrange-act-assert (AAA)three-part structure every readable test follows"given when then" · "the three-part test layout"
  • test fixturereusable known-good setup data or state for tests"the fake data my tests start with" · "test setup blob"
  • test doubleumbrella term for any fake used in place of the real thing"stand-in object" · "fake version"
  • mockfake dependency that also records and verifies how it was called"pretend version of the API" · "fake it so it doesn't call Stripe"
  • stubfake dependency that returns canned answers, no call verification"return a fixed fake answer" · "hardcoded fake response"
  • spywrapper that records calls while the real behavior still runs"check if it got called" · "watch the function"
  • flaky testpasses and fails randomly without code changes"test that fails for no reason" · "sometimes-red test"
  • code coveragepercentage of code lines actually run by tests"test coverage" · "how much of my code is tested"
  • regression testlocks in a fixed bug so it can never come back"make sure that bug stays dead" · "test for the thing I already fixed"
  • smoke testtiny fast check that the app boots and basics work"does it even start" · "quick sanity check"
  • test pyramidmany unit tests, fewer integration, fewest E2E"how many of each test" · "unit vs E2E ratio"
  • happy path vs. edge casethe intended flow versus weird boundary inputs"when everything goes right" · "the weird inputs nobody expects"
  • test-driven development (TDD)write the failing test first, then the code"test before code" · "red green refactor"
  • test isolation / setup and teardownresetting state so tests don't pollute each other"tests messing with each other" · "clean up between tests"
  • test locator / test IDstable hook like data-testid for grabbing elements"selector" · "data-testid"
  • headless browserreal browser engine running without a visible window"browser with no window" · "invisible Chrome"
  • snapshot testsaves rendered output, fails when it changes unexpectedly"save what it looked like and compare" · "diff the output"
  • visual regression testscreenshots pages and flags pixel differences between runs"did my CSS change break anything" · "screenshot diff test"
  • contract testverifies a service still matches the shape its consumers expect"make sure the API didn't change shape" · "API agreement test"
  • load testsimulates many users to find breaking point"what if 10,000 people hit it" · "stress test"
  • acceptance criteriathe checklist that defines "this feature is done""how we know it's finished" · "the done list"
  • scripted manual testing / exploratory testinghumans following steps, or hunting bugs unscripted"manual QA pass" · "just click around and try to break it"
  • reproduction steps / minimal reproducible example (MRE)smallest steps or code that reliably triggers the bug"bug repro" · "tiny example that fails"

Deeper in the field

  • testing trophy modern shape favoring integration tests over unit
  • mutation testing breaks your code on purpose to see if tests notice
  • soak test runs load for hours to expose memory leaks
  • spike test sudden traffic burst to check recovery
  • chaos testing deliberately kills services to prove resilience
  • feature flag testing verifying both on and off states of a flag
  • shift-left testing catching defects earlier in the build cycle
  • linting vs. type checking vs. testing three distinct layers of automated correctness
  • static analysis tools reading code for bugs without running it
  • hermetic test fully self-contained, no network or shared state
  • parallelization / sharding splitting the suite across machines for speed
  • test retry re-attempting flaky async steps before declaring failure
  • race condition timing-dependent failure from concurrent operations
  • seed data prepopulated records so a test environment isn't empty
  • red-green-refactor fail, make it pass, then clean up
  • page object model wraps a page's selectors in one reusable class
  • test quarantine isolating unreliable tests so they stop blocking merges
  • golden-file testing / approval testing compares output against a blessed reference file
  • fuzz testing / property-based testing random or generated inputs hunt for broken invariants
  • test plan defines testing scope, risks, environments, and exit criteria
  • component test tests one UI component without running the whole application
  • API test calls endpoints directly and checks responses, errors, and side effects
  • user acceptance testing (UAT) confirms software meets real user or client requirements
  • parameterized test / table-driven test runs one test against multiple named input-output cases
  • negative testing verifies invalid inputs and failure paths behave correctly
  • boundary value testing checks values at, below, and above important limits
  • cross-browser testing verifies behavior across browsers, engines, and viewport sizes
  • test matrix lists environment, configuration, and input combinations requiring verification
  • stress test pushes beyond expected capacity to reveal failure and recovery
  • test data factory generates valid test objects with overridable defaults