Disaster Recovery Testing: Best Practices by Company Size and Cloud Provider

Last updated: May 8, 2026

A disaster recovery (DR) plan is only as effective as the test you put it through. Most companies have something written down. Far fewer have actually run through it under realistic conditions. This article covers:

  • Types of DR testing that can be done

  • General best practices

  • Best practices for: AWS, GCP, and Azure

  • Best practices by company size


What Is a DR Test?

A disaster recovery test is a planned exercise where you simulate a system failure and verify that your team can restore operations within acceptable timeframes. The two numbers you're trying to hit are:

  • RTO (Recovery Time Objective): How long it takes to get back up and running after an incident

  • RPO (Recovery Point Objective): How much data you can afford to lose (measured in time - e.g. "up to 4 hours of data")

Testing tells you whether your real-world RTO and RPO actually match what's written in your DR plan. They usually don't on the first attempt. That's the point.


Types of DR Tests

There are four main types, ranging from low-effort to full simulation:

Tabletop exercise - The team walks through a scenario verbally. No systems are touched. Good for checking whether people know their roles and whether the plan makes logical sense. Fast, zero risk, easy to do quarterly.

Walkthrough / document review - Using an existing document, you verify that backup configurations exist, that they're running on schedule, and that restore procedures are documented accurately.

Recovery test - You restore a non-production copy of your data (staging/dev environment) or spin up a standby environment and verify it works. You're touching real systems but not affecting production.

Full test - This is a documented recovery from a real incident. If your system went down and your team recovered it, that counts - as long as it was recorded properly. What makes it count as evidence is the write-up: what failed, what steps were taken, how long it took, and whether you hit your RTO and RPO. A planned full failover exercise (where you intentionally cut over to a backup environment) also qualifies here.

For compliance purposes, you need evidence that testing of one of the above happened. Having written records of who did it, when, what was tested, what the outcome was, and whether you hit your RTO/RPO targets.


General Best Practices (All Companies)

Test on a schedule, not just after incidents. Once a year is the absolute minimum for compliance. Quarterly tabletop exercises should be the norm, with a partial restore test at least twice a year.

Document everything before you test. Your DR procedure needs to be written down before you run through it - not after. Auditors want to see that you followed a procedure, not that you reverse-engineered one from what actually happened.

Define success criteria in advance. Before starting the test, write down exactly what you're trying to prove. Did the restore complete in under 30 minutes? Did data loss stay within 4 hours? Was the restored environment fully functional? You can't grade a test you haven't defined.

Include the right people. At minimum: whoever owns the infrastructure (usually engineering), and whoever would be responsible for declaring an actual disaster (usually a founder, CTO, or VP Eng at startups). If you have customers, someone from customer-facing teams should understand the communications plan too.

Test restores, not just backups. A backup that's never been restored is not a verified backup. The test should include actually pulling data from the backup and confirming the restored system works. This sounds obvious but it's the most commonly skipped step.

Track findings and close the loop. Every test should produce a short report: what worked, what didn't, and what's being fixed. If you find gaps, log them as action items and track them to completion. Auditors want to see that testing leads to improvements, not just checkboxes.

Don't test in production during peak hours. Schedule any tests that touch live systems during low-traffic windows. Always have a rollback plan.


AWS

AWS gives you a lot of built-in tools for DR. The challenge is using them correctly and verifying they work.

Key services: RDS automated snapshots, S3 versioning and cross-region replication, EC2 AMIs, AWS Backup (centralized), Route 53 for DNS failover, and AWS Elastic Disaster Recovery (DRS) for full server replication.

What to test:

  • Restore an RDS snapshot to a new instance and confirm the database is accessible and data-complete

  • Confirm S3 versioning is enabled on all production buckets and test rolling back a specific object to a previous version

  • If you're using multi-AZ deployments, simulate an AZ failure and confirm automatic failover triggers correctly

  • If you use Route 53 health checks with failover routing, confirm DNS actually routes to the backup target during a simulated failure

Common gaps:

  • Backup retention periods set too short (1-day default on RDS - confirm your retention window matches your RPO)

  • S3 lifecycle policies that delete versions sooner than expected

  • IAM permissions that prevent the designated restore person from actually triggering a restore (test permissions separately)

  • Restores tested only on one region when the failure scenario involves that region being unavailable

Evidence to capture: AWS Backup job logs, RDS event logs showing restore completion, screenshots of the restored environment, and the time elapsed from start to finish.


Google Cloud Platform (GCP)

GCP's DR tooling is solid but less centralised than AWS Backup. You're often managing backup policies per service, which means more to verify.

Key services: Cloud SQL automated backups, Cloud Storage versioning, Persistent Disk snapshots, Filestore Backups (for managed file storage), and Google Cloud Backup and DR (the dedicated service). For full instance recovery, you'll use custom machine images or Terraform/Deployment Manager to recreate environments.

What to test:

  • Restore a Cloud SQL backup to a new instance and verify connectivity and data integrity

  • Test Point-in-Time Recovery (PITR) for Cloud SQL - confirm you can restore to a specific timestamp within your backup window

  • Verify Cloud Storage object versioning is enabled and test restoring a deleted or overwritten object

  • If using multi-region storage or Cloud Spanner, test behaviour during a simulated regional disruption

Common gaps:

  • Cloud SQL PITR works differently depending on the database engine. For MySQL instances, it requires binary logging to be explicitly enabled - this is not on by default. For PostgreSQL instances, PITR uses WAL archiving and is enabled through the automated backup settings. Either way, check that it's actually turned on before assuming PITR is available.

  • GCP backup configurations are set per resource (per Cloud SQL instance, per Persistent Disk, etc.) - there's no project-level policy that automatically covers everything. Each resource needs to be individually verified. A common gap is assuming a backup schedule is running on a new resource just because it was configured on an older one.

  • Persistent Disk snapshot schedules don't automatically snapshot all disks unless explicitly configured per disk

  • No centralised backup dashboard by default - you need to check per-service or use Cloud Backup and DR to consolidate

Evidence to capture: Cloud SQL backup restoration logs, Cloud Storage access logs showing version retrieval, timestamps from Cloud Console or gcloud CLI showing restore duration.


Microsoft Azure

Azure has strong native DR tooling, particularly Azure Site Recovery (ASR) for full VM replication and Azure Backup for database and file-level backups.

Key services: Azure Backup (VMs, SQL, files), Azure Site Recovery (full replication + orchestrated failover), Azure SQL automated backups with geo-restore, Azure Blob Storage soft delete and versioning, and Recovery Services Vault as the central backup management layer.

What to test:

  • Restore an Azure SQL database from an automated backup to a new server and confirm it's accessible

  • If using Azure Site Recovery, run a test failover - ASR has a built-in "Test Failover" option that spins up a replica environment in an isolated network without affecting production

  • Confirm Azure Blob soft delete is enabled and test recovering a deleted blob within the retention window

  • Verify that Recovery Services Vault backup jobs have been completing successfully (check the job history, not just assume they're running)

Common gaps:

  • Azure Site Recovery replication needs to be configured per VM - it doesn't replicate everything by default

  • Backup policies in Recovery Services Vault have a default retention that may not match your RPO - review and customise

  • Test Failover in ASR is isolated from production, but teams often confuse it with a real failover - make sure the team understands what they're running

  • Geo-redundant storage (GRS) doesn't automatically make your data recoverable in the secondary region - you need geo-restore to actually access it during a real failure

Evidence to capture: Recovery Services Vault job logs, ASR test failover job history from the portal (timestamps, status, and completion details are logged automatically and serve as audit evidence), screenshots of the restored database/environment, and elapsed restore time.


By Company Size

The right DR testing approach depends heavily on how much infrastructure you're running and how many people you have to run it.


0-25 Employees

At this stage, you're probably running on a single cloud provider with a small infrastructure footprint. One or two engineers own everything, and DR testing tends to fall off the calendar because there's always something more urgent.

What's realistic:

A tabletop exercise twice a year is achievable and doesn't require much engineering time. Get the founder or CTO in the room, walk through the scenario: "Our database goes down at 2am on a Tuesday. What do we do?" Write down the steps. Identify who does what. Time it on paper.

Once a year, actually run a restore. Pick a low-risk time (weekend, low usage), spin up a test database from your latest backup, confirm the data looks right, and document the time it took. This is the evidence your auditor wants.

Things to confirm at this size:

  • Backups are running and someone is notified if they fail

  • At least one other person (beyond the primary engineer) knows how to trigger a restore

  • RTO and RPO are written down somewhere - even a Google Doc is fine

  • If the primary technical person leaves or is unavailable, someone else can access the cloud console

Common mistake: Relying entirely on one engineer who "knows where everything is." If that person is sick or unreachable during an actual incident, the DR plan falls apart. Document the steps.


25-50 Employees

At this size, you're likely serving real customers, possibly in regulated industries, and the stakes of a real outage are higher. You probably have a small engineering team (3-8 people) and may be going through your first audit.

What's realistic:

A quarterly tabletop exercise with the engineering lead and a member of the customer team. At least two partial restore tests per year - one for your primary database, one for a secondary system (file storage, auth, etc.). If you have a staging environment that closely mirrors production, use it for DR testing.

Start building an on-call rotation if you don't have one. Your DR plan needs to name who gets paged and in what order, not just say "contact the engineering team."

Things to confirm at this size:

  • Backup retention matches your stated RPO - if you say "4-hour RPO," daily snapshots aren't enough

  • Two people (minimum) have the credentials and permissions to trigger a restore

  • There's a communications template for notifying customers if there's an outage - tested and ready to go

  • Your RTO has actually been measured, not just estimated

  • DR testing results are documented in writing, even if informally

Common mistake: Setting RPO/RTO targets in the DR plan that don't reflect actual backup frequency. If your backups run once daily, your real RPO is up to 24 hours - not the 4 hours that's written down. Auditors check for this.


50+ Employees

At 50+ employees, you're likely serving a larger customer base, possibly with enterprise contracts that include SLAs. Your DR program needs to be formalised, tested regularly, and have clear ownership.

What's realistic:

Quarterly tabletop exercises for relevant teams (engineering, ops, customer success). Semi-annual partial restore tests. At least one full failover test per year if your architecture supports it. A dedicated DR runbook - not just a paragraph in your security policy.

You should have formal roles defined: incident lead, communications lead, executive sponsor. Each person should know their role before an incident happens.

Things to confirm at this size:

  • You have a tested runbook with step-by-step restore procedures (not just high-level notes)

  • DR testing is on a formal calendar with an assigned owner

  • Test results feed into a risk register or action item log that gets reviewed

  • You've tested cross-region or multi-cloud failover if your architecture uses it

  • Customer-facing SLAs are backed by RTO/RPO targets that are actually achievable and tested

  • Backup monitoring includes alerting - someone is notified if a backup job fails, not just if an incident occurs

Common mistake: DR testing exists on paper (policy says "annually") but hasn't happened in 18 months because it keeps getting deprioritised. Assign it to a specific person, put it on the engineering calendar, and treat missed tests as a compliance gap - because that's exactly what they are.


What Auditors Look For

Regardless of your cloud provider or company size, auditors reviewing DR as part of SOC 2, ISO 27001, or HIPAA will typically want to see:

  • A written DR plan with defined RTO and RPO

  • Evidence that backups are running and completing successfully (logs, not just "we think they're running")

  • Evidence that at least one restore test has occurred within the past 12 months

  • A written record of the test results - what was tested, the outcome, and any gaps identified

  • Evidence that gaps found during testing were addressed (action items closed out)

If you can produce those five things, you're in good shape for most DR-related audit questions.


TLDR

0-25 Employees

25-50 Employees

50+ Employees

Tabletop exercises

2x per year

4x per year

4x per year

Recovery test

1x per year

2x per year

2-3x per year

Full test

A planned full failover test: Not required

A planned full failover test: Optional

A planned full failover test: Recommended annually

DR runbook

Basic (Google Doc is fine)

Documented and accessible

Formal, versioned, owned

DR test owner

CTO or lead engineer

Dedicated engineering lead

Assigned role, formal calendar

Communications plan

Simple (notify customers by email)

Template ready, tested

Multi-channel, SLA-backed

Recommended RTO

8-24 hours

2-4 hours

Under 1 hour

Recommended RPO

Up to 24 hours

4-8 hours

Under 1 hour