Component Tests
Deterministic tests that exercise a single component through its public interface, with systems the team doesn’t control replaced by test doubles.
less than a minute
Definitions for the test types used throughout this site. Each page covers what the type is, when it runs in the pipeline, what it asserts on, and what it does not.
The list isn’t exhaustive and the boundaries between types aren’t crisp in every codebase. Use these definitions as shared vocabulary for the rest of the testing section, especially Applied Testing Strategies and Testing Antipatterns.
Deterministic tests that exercise a single component through its public interface, with systems the team doesn’t control replaced by test doubles.
Deterministic tests that verify interface boundaries with external systems using test doubles. Also called narrow integration tests. Validated by integration tests running against real systems.
Tests that exercise two or more real components up to the full system. Non-deterministic by nature; never a pre-merge gate.
Tests that exercise real external dependencies to validate that contract test doubles still match reality. Non-deterministic; never a pre-merge gate.
Code analysis tools that evaluate non-running code for security vulnerabilities, complexity, and best practice violations.
Fast, deterministic tests that verify a unit of behavior through its public interface, asserting on what the code does rather than how it works.