Analyze with AI

Get AI-powered insights from this Mad Devs article:

Your company has backups, replicas, a secondary environment, and a disaster recovery runbook. The architecture says the recovery time objective (RTO) is two hours and the recovery point objective (RPO) is 15 minutes. Failover is documented. Yet nobody has exercised the complete recovery path since the last product and infrastructure changes.

In that situation, RTO and RPO are assumptions, not evidence. A successful backup job or a running secondary cluster proves only one part of recovery. Disaster recovery testing must show that a critical business service, its data and dependencies, and the team operating it can recover together. This guide explains what to test, what to measure, and how to turn gaps into a remediation roadmap.

Key takeaways

  • Backups and replicas do not prove that an application is recoverable.
  • Test complete critical business flows, not only individual infrastructure components.
  • Measure actual RTO and RPO during the exercise instead of inferring them from configuration.
  • A failover test without a safe failback test leaves part of the recovery path unvalidated.
  • Dependencies, capacity, observability, permissions, and people can fail even when infrastructure starts correctly.
  • Every exercise should produce owned remediation work, an updated recovery plan, and a retest.

What should disaster recovery testing actually prove?

A disaster recovery test should prove that the business service can recover, not simply that infrastructure starts. Confirm five things:

  1. The critical service can be restored to a usable state.
  2. Recovered data is sufficiently current, complete, and consistent.
  3. Required internal and third-party dependencies operate after recovery.
  4. The recovery environment sustains the required workload.
  5. The team can execute and verify recovery within the agreed time.

Define the user-visible result before choosing the technical scenario. “The Kubernetes cluster is healthy” is insufficient. “A customer can authenticate, place an order, pay, and receive confirmation within operational thresholds” is testable evidence.

Microsoft's reliability testing guidance notes that an individual component can recover within its target while downstream dependencies cause the complete flow to miss its RTO.

Start with business recovery objectives

Begin with a business impact discussion, not a list of cloud resources. Identify the flows whose loss would stop revenue, breach obligations, harm customers, or prevent operations. For each flow, document:

  • an owner and recovery priority;
  • acceptable downtime and the corresponding RTO;
  • acceptable data loss and the corresponding RPO;
  • minimum acceptable functionality during recovery;
  • dependencies and recovery order;
  • explicit pass/fail criteria.

RTO should describe the maximum acceptable time until the defined flow works again. RPO should describe the maximum acceptable amount of data loss, expressed as time between the disruption and the latest usable recovery point. Neither target is meaningful without a scope. A database may meet a 15-minute RPO while files, search indexes, queued messages, or an external system of record remain inconsistent.

Use the targets to design the exercise. Start the RTO clock at the agreed event—often service disruption—and stop it only when the flow passes functional and operational checks. Define these timestamps before the test.

For financial entities within the scope of the EU Digital Operational Resilience Act (DORA), this work also has a regulatory dimension. DORA Article 11 requires testing ICT business continuity and response and recovery plans for ICT systems supporting all functions at least yearly, and after substantive changes to systems supporting critical or important functions. Its switchover provisions apply as specified to covered financial entities; they are not a universal requirement for every European company.

Choose the right level of DR test

Testing depth should follow service criticality and exercise risk. No format proves everything.

Tabletop or walkthrough

Participants talk through a severe but plausible incident. This exposes unclear roles, missing decisions, broken escalation paths, outdated contacts, and undocumented assumptions. Ask the incident commander when DR would be activated, who can authorize it, and what evidence would confirm recovery.

A walkthrough is useful, but proves neither that data can be restored nor that the recovery environment works.

Technical recovery test

Engineers restore backups, provision infrastructure, start applications, and test connectivity in an isolated environment. This can validate automation and individual recovery mechanisms without redirecting production traffic.

Its limitation is scope: a technically healthy environment may still fail the customer journey, omit a dependency, or lack representative load.

Full failover or switchover

The workload runs in the recovery environment and traffic follows the intended recovery route. Validate DNS, client reconnection, data consistency, application behavior, observability, and sustained capacity. Control blast radius with approved safeguards, rollback conditions, and a communication plan.

Failback test

Return operation safely to the primary environment. Verify data synchronization direction, conflict handling, connection changes, queued work, and monitoring. Failback is not an administrative afterthought: Microsoft recommends testing the complete failover and failback sequence because coordination failures can remain hidden when components are tested separately.

What must be tested beyond backups?

A backup completion notification answers “did a job run?” Recovery testing must answer “can the service operate on the restored state?”

Data recovery

Restore data into an isolated environment and check integrity, completeness, schema compatibility, encryption keys, and application behavior. Reconcile representative records across stores. Check databases, object storage, queues, caches that require reconstruction, search indexes, and external systems of record. Record the latest valid transaction to calculate actual RPO.

Application and business-flow recovery

Run functional probes through the full flow. Synthetic transactions should verify meaningful outcomes, not just HTTP 200 responses. Include background processing and scheduled jobs: an API can appear healthy while workers duplicate, lose, or process events out of order.

Dependencies

Map authentication, DNS, certificates, secrets, databases, queues, APIs, and third-party services to each critical flow. Confirm that recovery configuration uses the right endpoints and credentials. Test degraded behavior where your team cannot recover an external dependency.

Capacity

Apply representative production load and observe latency, errors, saturation, quotas, and scaling lag. A warm standby sized last year may not support today's traffic or data volume. AWS Well-Architected guidance explicitly warns that secondary capacity that passed a previous test may no longer tolerate the workload.

Observability

Confirm that logs, metrics, traces, dashboards, health checks, and alerts follow the recovered service. Generate a known error and verify that it reaches the on-call path. Monitoring that continues to query the failed primary environment creates false confidence at precisely the wrong time.

Permissions and operational access

Verify that assigned responders can reach recovery accounts, consoles, repositories, secrets, and communication channels using emergency procedures. Do not rely on the credentials or memory of one specialist. Include access approval time in the measurement when it is part of the real recovery path.

How to measure RTO and RPO during a DR test

Treat the exercise as an observable timeline. Record disruption, detection, declaration, DR activation, data availability, application availability, dependency recovery, business-flow validation, and recovery confirmation. This separates technical delay from decision, access, and coordination delay without excluding any of them from the end-to-end result.

Measure RTO at the business-flow boundary. If infrastructure starts in 40 minutes but authentication becomes usable after 95 minutes, the relevant recovery time is 95 minutes. Agree whether the objective includes detection and decision time, document that boundary, and use it consistently.

Measure RPO from recovered evidence. Identify the disruption timestamp and the newest valid, committed business record available after recovery. A configured five-minute replication interval does not prove a five-minute RPO: replication lag, corruption, an incomplete snapshot, or cross-system inconsistency can move the usable recovery point backward.

The figures below are illustrative test data, not recommended industry baselines.

Recovery objective validation

TargetAssumptionTest evidenceResult
RTO2 hoursCritical checkout flow restored in 1h 35mPass
RPO15 minutesLatest valid restored transaction was 8 minutes before failurePass

Keep the timeline, transaction IDs, integrity checks, load-test results, logs, and approver names with the test record. A pass/fail label without evidence is difficult to audit or compare.

Why failover success is not enough

Failover is one transition inside a longer recovery system. Common partial successes include:

  • Secondary instances start, but quotas or scaling lag prevent them from carrying production load.
  • The application responds, but its identity provider, DNS path, or certificate does not.
  • The database restores, but workers replay messages incorrectly or indexes remain stale.
  • DNS changes succeed at the control plane, but client caching delays effective cutover.
  • Dashboards stay green because they still observe the primary environment.
  • The runbook works only when its author interprets undocumented steps.
  • Recovery works, but changes made in the secondary environment cannot be reconciled safely during failback.

Design acceptance tests for these seams. Verify the flow from the client edge through identity, application, state, asynchronous processing, and external integrations. Then keep the service in the recovery environment long enough to expose capacity and operational issues. A five-minute smoke test cannot show that batch work, certificate renewal, autoscaling, or an on-call handover will function.

Controlled fault injection can help explore specific failure behavior before a larger DR exercise; Mad Devs' guide to chaos engineering discusses that broader practice. The scopes differ: chaos engineering investigates system behavior under injected faults, while DR testing proves restoration after a catastrophic disruption against defined recovery objectives.

Test the runbook and the team, not only the infrastructure

Run the procedure as it would operate during an incident. Assign command, technical, communications, and recovery-validation roles. Test backup communication channels. Make declaration, escalation, and stop conditions explicit.

Give the runbook to a qualified engineer who did not write it. IBM's DR testing guidance recommends this check because it reveals missing or ambiguous instructions and reduces dependence on the author. Observers should record every verbal hint, improvised command, inaccessible credential, and decision that the document did not cover.

Exercise automation through its documented operational entry point. A script that exists only on its creator's laptop, lacks current permissions, or has no rollback path is not reliable recovery.

Afterward, compare the actual command and communication sequence with the runbook. Update ownership, prerequisites, validation checks, estimated durations, and escalation contacts while the evidence is fresh.

What to do when the DR test fails

A failed exercise is useful when it exposes risk safely and produces corrective work. Classify findings by owner:

  • architecture gap;
  • capacity or quota gap;
  • data recovery or integrity issue;
  • dependency failure;
  • observability gap;
  • documentation or automation gap;
  • permissions issue;
  • decision, communication, or staffing issue.

For every finding, record severity, affected flow, evidence, owner, remediation, due date, and retest criteria. Prioritize by business impact and the likelihood that the gap blocks recovery—not by which fix is easiest.

Update the plan after remediation, but do not close a finding on documentation alone when the correction changes technical behavior. Retest the failed step and then the complete flow if the change can affect other dependencies. The result should be a versioned trail from assumption to evidence, gap, corrective action, and verified outcome.

This is where an assessment can accelerate progress. Mad Devs can review recovery architecture, operational dependencies, observability, and runbooks, then turn findings into a risk register and prioritized implementation roadmap through its DevOps and Cloud Engineering services. Assessment is the start; confidence comes from implementing the changes and retesting them.

How often should you test disaster recovery?

There is no universal cadence. Set it from service criticality, rate of architectural change, data growth, regulatory obligations, staff turnover, and the severity of previous findings.

Trigger additional testing after material changes to topology, data stores, identity, networking, deployment tooling, traffic, or recovery personnel. Smaller restore, access, dependency, and runbook checks can run more frequently than a full switchover. Automate repeatable checks where possible, but preserve periodic human execution for decisions and coordination that automation cannot prove.

IBM suggests at least one full annual DR test when no other compliance requirement applies, with smaller tests during the year. Treat that as vendor guidance, not a universal standard. Covered EU financial entities must apply DORA's requirements, including the annual testing provisions relevant to their ICT systems.

Disaster recovery validation matrix

The following Mad Devs editorial synthesis is a practical review model, not an external standard. Use it to distinguish evidence that confirms a component exists from evidence that a service can recover.

Disaster recovery testing checklist

  • Are critical business flows documented and prioritized?
  • Are RTO and RPO defined for each in-scope flow?
  • Are test pass/fail criteria explicit?
  • Have backups actually been restored and verified?
  • Has the complete failover path been tested?
  • Has failback been tested?
  • Is recovery environment capacity validated with representative load?
  • Are identity, DNS, data, queues, APIs, secrets, certificates, and third-party dependencies included?
  • Do monitoring and alerting work after failover?
  • Can the assigned team access recovery infrastructure?
  • Can someone other than the runbook author execute the procedure?
  • Are actual RTO and RPO results recorded with supporting evidence?
  • Does every finding have an owner, severity, remediation, and due date?
  • Is remediation followed by a retest?
  • Has the plan been updated after recent architecture and staffing changes?
AreaWeak evidenceStronger evidence
BackupBackup job succeededApplication works on verified restored data
FailoverSecondary instances startedCritical business flow works through the recovery path
RTOInfrastructure is onlineFull critical flow is restored within target
RPOReplication is configuredActual recovered, consistent data meets target
CapacityDR environment existsIt sustains representative production load
DependenciesCore application is reachableAuthentication, database, DNS, APIs, and queues work
RunbookDocument existsAnother qualified engineer can execute it
MonitoringMonitoring platform runsDR failures and recovered service health are visible
FailbackFailover succeededReturn to primary works safely with consistent data

FAQ

What is disaster recovery testing?

How often should disaster recovery be tested?

What is the difference between failover testing and disaster recovery testing?

How do you test RTO and RPO?

What should a disaster recovery test include?

Does testing a backup count as disaster recovery testing?

Turn recovery assumptions into evidence

A DR document describes intent. Confidence requires a repeatable result: critical flows restored, actual RTO and RPO measured, dependencies and capacity verified, another engineer able to follow the runbook, and failback completed safely. Treat each gap as engineering work, then retest until the evidence supports the business objective.

DEVOPS & RELIABILITY ASSESSMENT
Do you know whether your recovery plan will work under real failure conditions?
Mad Devs can assess your recovery architecture, dependencies, runbooks, and operational risks, then help turn DR gaps into a prioritized reliability improvement plan.
Assess your recovery setup →

Latest articles here

Two synchronized database environments connected during a safe production cutover

Zero-Downtime Database Migration: How to Plan a Safe Production Cutover

A production database must move to a new environment, but the application cannot stop serving users or processing transactions. A conventional export...

Data Migration Testing: How to Prove Your Data Is Ready for Cutover

Data Migration Testing: How to Prove Your Data Is Ready for Cutover

A migration job has finished. The source and target are available, the pipeline reports no critical errors, and headline record counts look...

AI Test Automation: Where It Adds Value and How to Introduce It into QA

AI Test Automation: Where It Adds Value and How to Introduce It into QA

Software delivery can accelerate while the QA feedback loop becomes the constraint. AI test automation can reduce test design, maintenance, and...

Go to blog