Most REST API testing checklists are aspirational: fifty items long, and nobody finishes them before the sprint ends. This is the REST API testing checklist I actually run in Postman, organized as passes in risk order — so if time runs out, you have covered the dangerous things first instead of the endpoints in alphabetical order.
Pass 1: the smoke pass
For every endpoint, hit the happy path and confirm three things: the status code is correct (a real 201 or 204, not a lazy 200 for everything), the response body is valid JSON, and it comes back in a reasonable time. Then hit each endpoint with no auth token, an expired token, and a valid token belonging to a different user. Broken authorization is the highest-risk bug an API can ship, and this check takes minutes. If I only get one pass on a build, it is this one.
Pass 2: contract and schema
Compare responses to whatever contract exists — an OpenAPI spec, the docs, or a saved known-good example. Field names, types, nullability, date formats. In Postman I write a schema assertion once per endpoint so this pass runs itself from then on:
pm.test("matches schema", () => {
pm.response.to.have.jsonSchema(userSchema);
});Contract bugs are cheap to catch here and expensive later, when a mobile app crashes because a field quietly changed from a number to a string.
Pass 3: behavior
This is pagination, filtering, and idempotency. Pagination: request page one and page two and check for overlapping or missing records, then request a page past the end and see what comes back. Filtering: combine two filters and confirm results match both, then send an invalid filter value and expect a clean 400, not a 500. Idempotency: send the same POST twice — did you just create a duplicate? Retry a PUT and confirm the resource is stable. When the response alone cannot prove correctness, I check the database directly with SQL; an API that returns 200 while writing the wrong row passes every surface-level test.
Pass 4: errors and edges
Force failures on purpose and read the error bodies. A good error response has a consistent shape across endpoints, a machine-readable code, a human-readable message, and no stack traces or SQL fragments leaking out. Send malformed JSON, missing required fields, wrong types, and absurdly long strings. Confirm that a 404 for a missing resource is distinguishable from a 403 for someone else's resource — clients need to react differently to each.
Pass 5: performance smoke and versioning
This is not load testing. Run the collection through the Postman runner for a few dozen iterations and watch for endpoints whose response times degrade or spike — that is usually an N+1 query or a missing index announcing itself early. Then versioning: confirm the API version is explicit in the path or a header, and that clients pinned to the previous version still get answers after a deploy.
The REST API testing checklist
- Happy path: correct status codes, valid JSON, sane response time
- Auth: no token, expired token, another user's token
- Schema matches the contract — automate the assertion
- Pagination: overlap, gaps, past-the-end page
- Filtering: combined filters, invalid values fail cleanly
- Idempotency: repeated POST and PUT behavior
- Error bodies: consistent shape, nothing leaking
- Performance smoke via the collection runner
- Versioning: previous version still answers
For a mid-sized API this whole list fits in an afternoon, and passes one and two fit in an hour. A checklist you can finish beats a thorough one you abandon halfway — every time.