← Knowledge hub
Guideby Uptime Room· September 24, 2026· 6 min read

Failover Testing: Prove the Standby Actually Works

Failover testing proves your standby takes over before a real outage runs the experiment for you. Here is how to run the drill and measure it.

Failover testing is a planned outage you run on purpose, to prove the standby takes over before a real failure does the experiment for you. You break the primary, watch the switch, and measure how long a client outside your network waited. Designs that look sound on a diagram fail this test constantly.

What is a failover test?

You deliberately stop or isolate the primary component, then verify the secondary picks up traffic with acceptable data loss and acceptable delay. Trilio's guide frames it as validating whether backup systems can actually handle the load when production goes down, and most teams find gaps the first time they try.

The word covers several drills. Manual failover has a human flip the switch. Automatic failover leaves it to health checks and orchestration. Network failover blocks a path and watches routing react. Each one fails differently, so run them separately rather than as one big event.

Why failover testing finds what a design review does not

A design review checks intent. A drill checks reality, and reality includes the things nobody documented. The standby database was restored from a snapshot six months ago and never re-synced. The DNS record carries a 3,600-second TTL that no runbook mentions. The secondary has the right code but an expired TLS certificate.

We tested a two-region setup where the standby came up in eleven seconds and looked perfect from inside the VPC. From outside, recovery took just over nine minutes, because resolvers were still handing out the old address. The switch worked. The user-visible outage was fifty times longer than the dashboard suggested.

Running the drill end to end

Announce it, schedule it, and put a monitor on it before you break anything. The measurement has to come from outside the system you are about to fail, or you are grading your own homework.

  1. Set a maintenance window. Publish it on your status page so the drill does not read as a real incident to customers or to your own on-call.
  1. Record the baseline. Capture p50 and p95 response times for an hour before the test, so the recovered numbers have something to compare against.
  1. Start an external check at a tight interval. Thirty seconds is a reasonable resolution for a drill that should recover inside a few minutes.
  1. Break one thing. Stop the primary service, drop the route, or detach the instance. One variable at a time.
  1. Watch and time it. Note the first failed check, the first recovered check and the gap between them.
  1. Fail back. The return path is a second test, and it fails more often than the first one.

Steps four through six are where failover testing earns its keep. Nothing in an architecture diagram predicts them.

curl -X POST https://uptimeroom.com/api/v1/monitors \
  -H "Authorization: Bearer urm_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "dr drill - checkout",
    "type": "http",
    "target": "https://example.com/health",
    "intervalSec": 30,
    "regions": ["los-angeles", "london", "singapore"]
  }'

Measuring the switch from outside

An external probe gives you the number that matters, which is how long a real client saw an error. Internal orchestration logs tell you when the standby became ready. Those two timestamps are rarely the same, and the gap between them is where your actual recovery objective hides.

HTTP checks report a full timing waterfall: DNS resolution, TCP connect, TLS handshake, TTFB and content download. That breakdown tells you which part of the failover was slow. A recovery where DNS resolution dominates points at TTL, not at your standby. A slow TLS handshake on the secondary usually means a certificate that was never warmed or a missing chain.

What you measureWhere it comes fromWhat a bad number means
Time to first failed checkExternal probeDetection is slower than you assumed
Time to first recovered checkExternal probeThe true user-visible outage
Standby ready timestampOrchestration logsCompare against the probe to find the gap
DNS phase of the waterfallTiming breakdownTTL is too long for your recovery target
TLS phase of the waterfallTiming breakdownCertificate or chain problem on the secondary

Failover testing across regions

A single-region checker cannot grade a regional failover. If your probe and your primary sit in the same place, losing that region loses your evidence too, and every result afterwards is a guess.

Run the drill from several places at once. Six probe regions are available as of September 2026, covering Los Angeles, Sao Paulo, Bangalore, London, Singapore and Sydney, and the egress addresses are published on the probe IPs page. Watching the recovery arrive in London two minutes before Sydney tells you something a single vantage point never could.

Multi-region observation also stops one bad network path from reading as a failed drill. Confirming a state change across regions before acting on it is the same idea as cross-region quorum confirmation, applied to a planned event instead of an unplanned one.

What the outside view cannot see

Replication lag, transaction loss and split-brain are invisible to a probe fetching a URL. An external check measures the outage a customer experienced, not whether three writes went missing during the cutover. That part needs a query against both databases and a reconciliation you run yourself.

Plan for it explicitly. Write a known row before the drill, read it from the standby afterwards, and count what survived. Azure Site Recovery's documentation makes the same point about validating a recovery strategy without assuming the replication worked.

Treat the two halves as separate results. Failover testing from the outside answers "how long were we down", and a reconciliation query answers "what did we lose". A drill that reports only the first number is half a drill.

Common mistakes

Testing during the quiet hours only. A standby that handles 3am traffic may fold at noon. Trilio's guide and every postmortem you have read agree on this. Run at least one drill under realistic load.

Never testing the fail-back. Returning to the primary is a second cutover with its own risks, and it is usually done in a hurry by a tired person. Rehearse it.

Measuring only from inside. Internal health checks go green the moment the process starts. Customers care about the DNS, the CDN and the certificate, none of which your orchestrator is watching.

Skipping the status page. A drill that looks identical to an outage burns trust and triggers real escalations. Publish the maintenance window.

One drill a year. Infrastructure drifts in weeks. Quarterly beats annually, and a small monthly test beats a large annual one nobody schedules.

Treat failover testing as a recurring measurement rather than a compliance checkbox, and record the outside-in recovery time every run so the trend is visible. Set up a tight-interval check from several regions, break one thing, and write down the number a customer would have seen. You can put that drill monitor together on the free plan, which covers 10 monitors and a 1-minute interval as of September 2026. Start free before your next scheduled window.

FAQ

What is failover testing with an example?

It is a planned drill where you deliberately break the primary and verify the standby takes over. A typical example is stopping the primary database instance during a maintenance window, then timing how long an external check sees errors before the replica serves traffic and the application recovers end to end.

What is the difference between failover and failback?

Failover moves traffic from the primary to the standby when the primary fails. Failback returns traffic to the primary once it is healthy again. Teams rehearse the first and skip the second, which is why failback goes wrong more often. Both directions are cutovers and both deserve a drill.

What are the different types of failover tests?

Manual failover has a person switch traffic to the backup. Automatic failover leaves the decision to health checks and orchestration. Network failover blocks a path and watches routing react. Application failover moves a single service rather than a whole site. Run them separately, because each one fails in a different way.

How do you measure how long a failover actually took?

Compare two timestamps. Your orchestration log says when the standby became ready, and an external probe says when a client outside your network stopped seeing errors. The gap between them is the real user-visible outage, and DNS time to live is usually what makes it longer than expected.

How often should you run a failover test?

Quarterly at minimum, because infrastructure drifts within weeks. A small monthly drill on one component beats a large annual exercise that keeps getting postponed. Run at least one test under realistic load rather than always choosing the quietest hour of the week.

Related reading