Automated API contract testing that validates endpoint behaviour across every scenario that a manual test wouldn't reliably cover: correct HTTP response codes (200, 201, 400, 401, 403, 404, 409, 422, 500), response schema validation against a JSON Schema or OpenAPI 3.0 spec (ensuring field names, data types, and required fields match the contract), error response structure consistency (all errors return the same {error: string, code: string} shape, not ad-hoc messages), authentication enforcement (requests without a valid token return 401, not 200 or 500), and edge case inputs (empty strings, null values, extremely long strings, special characters, integers at boundary values, duplicate submissions).
Tooling: Postman collections with Newman for CI/CD integration (Newman runs the collection on every deploy, reports pass/fail to GitHub Actions, and produces a JSON/HTML report). For code-based teams, Supertest (Node.js, Express/Fastify APIs) or RestAssured (Java/Spring) enables API tests to live alongside application code with shared type definitions, when an endpoint changes its response shape, the TypeScript type and the API test are updated in the same commit. Pact for consumer-driven contract testing between microservices: the API consumer defines the contract (the minimum response structure it expects), the provider runs the Pact verification against that contract, and the Pact Broker stores and versions contracts. A provider service cannot be deployed if it would break a contract its consumers depend on, catching breaking API changes before they reach integration environments where they cause cascading failures.
API documentation generated from OpenAPI 3.0 spec files as the source of truth: test collections are generated from the spec, Swagger UI serves the documentation from the spec, and a CI check validates that the spec matches the actual endpoint behaviour. This eliminates documentation drift, the API spec and the live behaviour stay synchronised because the tests enforce it.