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.