Resilience and failure testing
Injecting failures (timeouts, dependency down, partial outage) to see recovery.
Mandatory for 20 of 46 product types. Usually run by a developer.
What it catches
- cascading failures
- missing retries
- stuck states
What it misses
- normal-path bugs
Which product types need it and why
| Product type | Status | Reason or condition |
|---|---|---|
| accounting and invoicing SaaS | mandatory | Risks: Third-party dependency fails |
| clinical trial management software | mandatory | Risks: Third-party dependency fails |
| crypto exchange | mandatory | Risks: Outage during a demand peak |
| data pipeline | mandatory | Risks: Third-party dependency fails, Records silently wrong |
| ecommerce store | mandatory | Risks: Third-party dependency fails |
| electronic health record system | mandatory | Risks: Physical or psychological harm to a user |
| EV charging app | mandatory | Risks: Third-party dependency fails, Money leaves or fails to arrive |
| government services portal | mandatory | Risks: Outage during a demand peak |
| identity and access management service | mandatory | Risks: Third-party dependency fails |
| smart home or IoT app | mandatory | Risks: Third-party dependency fails |
| LLM-based assistant | mandatory | Risks: Third-party dependency fails |
| messaging app | mandatory | Risks: Third-party dependency fails, Outage during a demand peak |
| mobile banking app | mandatory | Risks: Third-party dependency fails, Fine or enforcement by a regulator |
| mobile game | mandatory | Risks: Outage during a demand peak |
| neobank | mandatory | Risks: Third-party dependency fails |
| software as a medical device | mandatory | Risks: Physical or psychological harm to a user, User actions lost on bad networks or devices |
| SDK or client library | mandatory | Risks: Third-party dependency fails |
| event ticketing platform | mandatory | Risks: Outage during a demand peak |
| stock trading app | mandatory | Risks: Outage during a demand peak |
| wearable companion app | mandatory | Risks: Third-party dependency fails |
| buy now pay later service | recommended | Becomes mandatory when failed instalments are retried automatically. |
| desktop application | recommended | Becomes mandatory when an interrupted-update incident is attached with verified evidence. |
| email marketing platform | recommended | Becomes mandatory when an outbound mail relay outage loses or duplicates queued campaigns. |
| ERP system | recommended | Becomes mandatory when dependency-failure evidence for bank or tax interfaces is attached. |
| fleet and logistics tracking | recommended | Becomes mandatory when routing depends on a third-party maps API. |
| grocery delivery app | recommended | Becomes mandatory when a payment or maps provider outage stops shoppers from booking or paying. |
| insurance app | recommended | Becomes mandatory when quotes are issued automatically without underwriter review. |
| lending platform | recommended | Becomes mandatory when debits are retried automatically after a failure. |
| loyalty program app | recommended | Becomes mandatory when a point of sale or partner outage leaves purchases without points. |
| online marketplace | recommended | Becomes mandatory when payouts are triggered automatically from payment events. |
| machine learning model service | recommended | Becomes mandatory when dependency-failure evidence is attached for the feature store or model host. |
| patient portal | recommended | Becomes mandatory when the record system behind the portal has planned or unplanned downtime during patient hours. |
| pharmacy delivery app | recommended | Becomes mandatory when the risk "Third-party dependency fails" is attached to this product type with verified evidence (see the methodology). |
| ride-hailing app | recommended | Becomes mandatory when a maps or payment provider outage leaves trips stranded or unbilled. |
| subscription box service | recommended | Becomes mandatory when the renewal job charges more than one billing cycle per run. |
| telemedicine app | recommended | Becomes mandatory when the video service is a third-party provider with a history of incidents that blocked visits. |
| travel booking app | recommended | Becomes mandatory when a supplier outage stops travellers from searching or leaves bookings charged without a confirmation. |
| video conferencing tool | recommended | Becomes mandatory when dependency-failure evidence for a media provider or region is attached. |
| expense management tool | optional | If the card processor is unavailable, card controls may not apply; a test shows how the tool behaves. |
| dating app | not needed | Not needed: chat and likes run on the app's own backend. Becomes recommended when real-time chat depends on a third-party messaging backend. |
| e-signature service | not needed | Not needed: no dependency-failure evidence is attached for e-signature services. Becomes recommended when an email or SMS provider outage blocks signing in a recorded case. |
| kids app | not needed | Not needed: activities play on the device, and a server outage stops only chat. Becomes recommended when play requires a server. |
| language learning app | not needed | Not needed: a speech outage blocks only speaking exercises, which can be skipped. Becomes recommended when speech is required to finish a lesson. |
| mental health app | not needed | Not needed while no third-party service sits in the session path. Becomes recommended when video sessions run on an outside provider. |
| peer-to-peer payment app | not needed | Not needed: no dependency outage evidence was found for this product type. Becomes recommended when an outage of the bank or card partner has stranded sends. |
| social network | not needed | Not needed: no dependency outage is evidenced for this type. Becomes recommended when sign-in or media storage depends on one outside provider. |
Done conditions used on playbook pages
Each mandatory cell has its own done condition, written for that product type.
- accounting and invoicing SaaS (Fintech): When the bank feed provider is cut off in a test environment, the account shows a visible stale-feed warning, and the catch-up import after recovery creates no duplicates.
- clinical trial management software (Healthcare): With the randomisation service switched off in staging, the site follows the documented fallback, and entries made during the outage appear with correct timestamps after recovery.
- crypto exchange (Fintech): With one matching engine node or database replica stopped during a load test, orders keep matching and the status page reports degraded service.
- data pipeline (Infrastructure and developer products): With the source stream or warehouse paused mid-run, the job retries, resumes from its last checkpoint and loads each record once.
- ecommerce store (Commerce): With the CDN switched off in staging, the storefront serves from origin or a status page, and no order is charged without being recorded.
- electronic health record system (Healthcare): With the main system taken offline in a test site, clinicians open the downtime view and read current medications, allergies and active orders for a test patient.
- EV charging app (Infrastructure and developer products): With the roaming network or charger link cut mid-session, the app shows the session as interrupted, billing stops, and the receipt matches the energy delivered before the cut.
- government services portal (Public sector): When the identity or case backend is slowed in a test, applicants see a queue or retry message and no submitted form is lost.
- identity and access management service (B2B SaaS): With the session store or quota service behind token validation cut in staging, existing sessions stay valid until expiry, new sign-ins show a clear error, and service returns without a manual restart.
- smart home or IoT app (Infrastructure and developer products): With the vendor cloud blocked, the app marks each device's last known state as stale, and queued schedules run once when the cloud returns.
- LLM-based assistant (Infrastructure and developer products): With the model API returning errors or timeouts, the user sees a retry message in the chat and no half-written answer is saved as final.
- messaging app (Consumer apps): With the network gateway or cache tier throttled, clients back off, connected users keep sending messages, and the service recovers without manual restarts.
- mobile banking app (Fintech): With the core banking test service switched off, the app shows a service message, and a transfer submitted during the outage posts once after recovery.
- mobile game (Consumer apps): When the service-discovery cluster or session store degrades, players see a queue screen and keep their inventory and progress after recovery.
- neobank (Fintech): With the partner bank feed stopped, the app marks balances as delayed instead of showing stale figures as current, and blocks withdrawals it cannot confirm.
- software as a medical device (Healthcare): When the sensor or transmitter is made to fail on the test rig, the app raises the failure alarm, and during a forced app crash loop the paired device's battery level drops no faster than with the app closed.
- SDK or client library (Infrastructure and developer products): With the SDK backend returning errors, timeouts or malformed config, the sample host app keeps running and its own features work.
- event ticketing platform (Commerce): When one seat-map server is shut down mid-onsale, buyers in the queue keep their place and held seats stay held.
- stock trading app (Fintech): When the market data feed or the order router is cut in a test environment, the app shows an outage banner and blocks new orders instead of accepting them silently.
- wearable companion app (Healthcare): With the cloud API blocked, the app still shows readings stored on the band and phone, and queued data uploads once when the cloud returns.
Tools
Alphabetical. Not recommendations.
resilience and failure testing
- Chaos MeshFault injection for Kubernetes. apiopen-source
- GremlinManaged fault injection. apicommercial
- ToxiproxyTCP proxy for simulating network failures. apiopen-source