Post-Deployment Testing Checklist
Steps a release captain or QA lead runs after a production deploy to confirm the new build behaves correctly under load, integrates cleanly with downstream systems, and has not introduced regressions or security gaps. Run within the first business day after each release.
Functional Verification
-
Run the production smoke-test suite
Execute the synthetic user-path smoke suite (Playwright or Cypress) against the production URL — login, core CRUD path, checkout, and any flows touched by this release. A green CI run against staging is not a substitute; staging data and prod data diverge.
Collects list Collects url -
Validate the release-note user-visible changes
Walk through each item in the changelog as a real user. Don't trust that 'merged + green CI' means 'works in production' — config drift, feature-flag state, and data shape often differ from staging.
-
Confirm feature flags are in target state
Open LaunchDarkly / Unleash / Statsig and verify every flag listed in the release plan matches its intended rollout percentage and target segments. Stale flags are the most common source of 'it works for me' tickets the day after release.
-
Spot-check role and permission boundaries
Log in as admin, member, and read-only test accounts. Confirm the access matrix from the spec — pay particular attention to any endpoints touched by this release. Authorization regressions almost never surface in unit tests.
Integration and Data Flow
-
Verify webhook and API consumer health
Check the outbound webhook delivery dashboard (Svix, Hookdeck, or in-house) for elevated failure rates over the last hour. Compare to the same hour-of-day from prior week. A breaking schema change on an outbound payload is invisible to your own monitoring until customers complain.
-
Test third-party integrations end-to-end
Run a real transaction through Stripe (or your payment processor) using a test card on the live keys, confirm Segment / analytics events fire, verify SSO via Okta / Auth0 still issues a valid session. SDK version drift in dependencies often breaks these silently.
-
Confirm database migration completed cleanly
Check the migration table for the expected version, confirm no long-running locks remain, and verify replication lag is back under 1s on read replicas. If a backfill is still running, note its progress and ETA.
Collects list -
Reconcile backfill row counts
Run the reconciliation query — usually a count comparing the source column to the new column, or a checksum on a sampled subset. A backfill that 'completed' but missed rows because of a NULL filter is the classic data-integrity bug.
Performance and Observability
-
Watch the golden-signals dashboard for 30 minutes
Latency, traffic, errors, saturation. Compare to the same window last week, not to the last hour pre-deploy (deploy itself often shifts traffic). Flag p99 latency regressions over 20% even if p50 looks normal.
-
Check error rate against the SLO budget
Open Datadog / Sentry / New Relic and check the error rate for each critical service. New error signatures introduced in this release are more important than total volume — a small cluster of new exceptions often signals a code path nobody tested.
Collects list -
Run the load test against the canary environment
Use k6 or Locust to drive 1.5x peak production RPS at the canary or shadow fleet. Watch for autoscaling lag, connection-pool exhaustion, and DB CPU saturation. Capture the run output and attach to the release ticket.
Security and Access Verification
-
Review the dependency scan for new criticals
Pull the latest Snyk / Dependabot / GitHub Advanced Security report. Any new Critical or High CVE introduced by this release gets a ticket today, not 'next sprint'. Note the CVE IDs in the release summary.
-
Confirm secrets and TLS configuration
Spot-check that no secrets appear in build logs, that the new endpoints are HTTPS-only with HSTS, and that the certificate-near-expiration alert is still wired. Run a one-shot gitleaks scan on the release branch.
-
Verify audit logs capture the release events
SOC 2 CC8.1 expects change-management evidence. Confirm the deploy event landed in the audit log with the deploying engineer, sha, and timestamp. If you use Vanta or Drata, confirm the integration picked it up.
UI and Accessibility
-
Cross-browser check on Chrome, Safari, and Firefox
Walk the changed pages in each browser plus iOS Safari on a real device. BrowserStack or LambdaTest covers the long tail. Safari's stricter cookie and storage rules catch auth/session bugs that Chrome hides.
-
Run the axe accessibility scan
Run axe-core or Pa11y against the changed pages. WCAG 2.1 AA is the minimum bar — the EU Accessibility Act (2025) and most public-sector contracts require it. Capture violations and assign owners; don't let them stack up release over release.
Collects file
Regression and Sign-Off
-
Run the full automated regression suite
Trigger the nightly-equivalent regression in CI against the release sha. Investigate any failure that wasn't already failing on main pre-deploy — flaky tests get a Jira ticket but do not block sign-off; genuine regressions do.
-
Update test coverage for new and changed code
Review the diff against the test files and add coverage for any uncovered branches in the release. The week after deploy is when test gaps are cheapest to close — once it's 'shipped and stable' nobody comes back to it.
-
Decide rollback vs. proceed
Release captain reviews the dashboards, regression result, and any escalations from this checklist. If proceeding, sign off and unlock main. If rolling back, page the on-call and follow the rollback runbook before doing anything else.
Collects list Collects paragraph Collects signature -
Execute the rollback runbook
Re-deploy the prior tagged image, confirm the previous DB migration is reversed (or that the schema change was forward-compatible), and update the status page. Open a SEV2 incident and start the post-incident review timer.
-
Run the backfill reconciliation query
Only relevant if a migration shipped with this release. Compare row counts pre- and post-migration for the affected tables and confirm checksums on a sampled subset.
Use this template
Copy it to your account, customize the steps, and run it with your team in minutes.
Browse hundreds of free templates across every team and industry.
Back to template libraryRun Post-Deployment Testing Checklist with your team
Customize the steps, assign roles, set a schedule, and keep a complete record for every run.