Post-Migration Testing: 15 Essential Checks

Migrated your site — now verify. SSL, links, forms, database, performance — 15 checks to catch any issues.
Why Post-Migration Testing Is Essential
Migration does not end when files and the database are transferred. The new server is a completely different environment, and any small configuration difference can cause unexpected issues. Systematic post-migration testing is the difference between a successful migration and one that turns into a nightmare.
This guide provides a comprehensive testing methodology covering every aspect of your application after moving to the new server.
Types of Tests Required
| Test Type | Objective | Priority |
|---|---|---|
| Functional | Verify all features work correctly | Critical |
| Performance | Compare performance against baseline | High |
| Security | Verify security configurations | High |
| Integration | Verify external services work | High |
| Compatibility | Test across browsers and devices | Medium |
Functional Testing: Does the Application Work?
Authentication and Permissions
- Log in with a regular user account and an admin account
- Register a new account (if the feature is available)
- Test password recovery via email
- Verify permissions: each role sees only what it should
- Test logout and automatic session expiration
Core Operations (CRUD)
- Create a new record in every major table
- Read and display existing data
- Update an existing record and save changes
- Delete a record and verify cascading deletions work
- Test search, filtering, and sorting
File Uploads
- Upload images of various sizes
- Upload documents (PDF, XLSX, DOCX)
- Verify file size limits are enforced
- Download files uploaded before the migration
- Verify storage directory permissions
- Send a test email (registration, notification, report)
- Verify it reaches the inbox (not spam)
- Inspect email headers for correct sender information
- Test email receiving if the server handles inbound mail
Performance Testing: Is the New Server Faster or Slower?
Metrics to Compare
| Metric | Tool | Acceptable Value |
|---|---|---|
| Homepage load time | curl -w "%{time_total}" | Under 2 seconds |
| API response time | Postman or curl | Under 500ms |
| Database queries | EXPLAIN ANALYZE | Equal to or better than before |
| Memory usage | free -h and htop | Below 80% under normal load |
| Disk I/O | iostat | await under 10ms |
Load Testing
Do not wait for real users to discover performance problems. Use load testing tools:
- Apache Benchmark (ab): Quick concurrent request testing
- wrk: Lightweight load testing with Lua scripting support
- k6: Modern tool with programmable JavaScript scenarios
- Locust: Python-based load testing that simulates real user behavior
Security Testing: Is the Server Protected?
- SSL certificate works with complete certificate chain: openssl s_client -connect domain:443
- HTTP to HTTPS redirect works correctly
- Security headers present: use securityheaders.com
- Open ports: only required ones (22, 80, 443) — verify with nmap
- OS security updates are applied
- File permissions are correct: no files with 777 permissions
Integration Testing: Do External Services Work?
- Payment gateway: execute a complete test transaction
- External APIs: call each API and verify the response
- Webhooks: verify incoming notifications are received
- External storage services (S3, MinIO): upload and download a file
- Email services (SMTP): send an email and verify delivery
Background Jobs and Scheduled Tasks
- Cron jobs: confirm they execute on schedule
- Queue workers: dispatch a job and verify execution
- Supervisor: confirm processes are running and auto-restart on failure
- Automated backup: verify it executes and stores correctly
Quick Smoke Test Checklist
If time is limited, these are the 10 most important tests to run immediately after the switchover:
- Homepage loads without errors
- Login works
- Creating a new record works
- File upload works
- Email sends and arrives
- HTTPS works and certificate is valid
- No 500 errors in the logs
- Cron jobs execute
- Backup runs
- Payment gateway works (in sandbox)
Automating Tests
Manual testing is important but slow and prone to human oversight. If your application has automated tests (unit tests or feature tests), run them immediately after migration:
- Laravel: php artisan test — runs all PHPUnit tests
- Django: python manage.py test — runs all Django tests
- Node.js: npm test — runs Jest, Mocha, or whichever test framework is configured
If you do not have automated tests yet, this is a good time to start writing them. Begin with tests for critical paths: login, record creation, payment processing. These tests become a safety net for every future migration.
Creating a Post-Migration Test Report
Document test results in a formal report. This report serves multiple purposes: it proves the migration succeeded, identifies minor issues requiring follow-up, and becomes a reference for future migrations.
| Item | Status | Notes |
|---|---|---|
| Functional testing | Pass / Fail / Partial | Details of any issues |
| Performance testing | Better / Equal / Worse | Comparison numbers |
| Security testing | Pass / Needs follow-up | Any vulnerabilities found |
| Integration testing | Pass / Fail | Affected services |
| Final decision | Continue / Rollback | Reasoning |
Post-Migration Testing with CLOUD
When migrating to CLOUD (cloud.net.sa) servers, our team provides free technical guidance sessions that include reviewing the test plan with your developer. We help identify critical testing points based on your application type and ensure everything works correctly before declaring the migration successful.
Testing is not an optional step. Allocate at least two hours for systematic testing after every migration. This investment protects you from hours or days of troubleshooting later.
--- ### Get Started Want to try it yourself? Choose the right hosting plan or build your custom server with the specs you need.