Skip to content

BFCM countdown calendar

The readiness program counts back from the event date. If Black Friday is November 28, you start on October 10 (T-7 weeks). If you start later, compress the schedule, but keep every go/no-go gate.

Each milestone below lists what to run, how to run it in MaxoPerf, and the passing criteria.


Goal: Set the reference numbers the rest of the readiness program builds on.

  1. Open the MaxoPerf console → Tests → New test.
  2. Name it bfcm-{year}-baseline. The rest of the program refers back to this name.
  3. Upload the full-funnel Taurus YAML covering browse → search → PDP → cart → checkout.
  4. Set failure criteria: p95 (global) > 1000ms and error rate > 1 %.
  5. Run for 20 minutes at modeled peak VU count.
  6. If the run passes, tag it as the year’s baseline run. You compare against this run at T+1.
  7. If the run fails, open the per-label breakdown and find the endpoint that causes the failure before you continue.

All failure criteria green. p95 for each funnel stage within SLO. Error rate < 0.5 % across all labels.


Goal: Hit every endpoint that will be under load at least once at low load.

  • Smoke tests (1–5 VUs) for every BFCM-specific endpoint. Include new features, promotion pages and integrations that did not exist last year.
  1. Create a smoke-test variant of the full-funnel scenario: bfcm-{year}-smoke.
  2. Set concurrency to 1–5 VUs, duration 2 minutes.
  3. Run once per environment change or new deployment.
  4. Check these closely: a new checkout step, a new loyalty/points integration, a new recommendation engine, the flash-deal landing page.

No errors. All endpoints respond within 2× their SLO threshold at 1 VU.


Goal: Show that the system handles the modeled peak load within SLO on every critical path.

  • Load test at 1× modeled peak. The same test as the T-6 week baseline, with any fixes applied.
  • Load test at 1.25× modeled peak. A small stretch to confirm headroom.
  1. Duplicate the bfcm-{year}-baseline test and rename to bfcm-{year}-load-1x.
  2. Run at modeled peak VU count. Confirm it passes all failure criteria.
  3. Duplicate again, set VUs to 1.25× modeled peak. Run for 15 minutes. Confirm passing.
  4. Review the per-label latency breakdown. Flag any label with p95 > 80 % of its SLO at 1× as a risk.

Both load tests pass failure criteria. Headroom confirmed between 1× and 1.25× runs.


Goal: Find the exact breaking point and confirm your modeled peak sits well below it.

  • Stress test: gradual ramp to 200 % modeled peak. Find the inflection point.
  • Spike test: doorbuster profile. Find the shock-load recovery time.

For the stress test:

  1. Create bfcm-{year}-stress.
  2. Use the staged ramp from spike and stress for sales: 25 % → 50 % → 100 % → 150 % → 200 % of modeled peak, 10 minutes at each stage.
  3. Set failure criteria to fail at error rate > 5 % or p95 > 3000 ms.
  4. After the run, note the VU count at which the failure criterion fires. That is the breaking point.

For the spike test:

  1. Create bfcm-{year}-spike-doorbuster.
  2. Use the doorbuster Taurus YAML: idle baseline → near-instant jump to 5× modeled peak → 10-minute hold → drop and recovery window.
  3. Watch the recovery time after the VU drop and any errors that persist.

Stress test: breaking point > 150 % of modeled peak. Spike test: system recovers (error rate < 0.5 %) within 3 minutes of VU drop.


Goal: Close the gaps found at T-3 weeks before the dress rehearsal.

  • Targeted re-tests of bottleneck endpoints. Test the changed components, not the full suite.
  • Regression smoke test after fixes are deployed.
  1. For each bottleneck identified at T-3 weeks, create a targeted test covering only that endpoint and the dependencies that interact with it.
  2. Set the VU count to 120 % of modeled peak, just above the previous breaking point.
  3. Confirm the bottleneck is resolved.
  4. Run the full baseline test again to confirm the fix did not cause a regression.

Every re-tested bottleneck now passes at 150 % of modeled peak. Baseline regression test result matches the T-6 week baseline within 10 %.


Goal: Run the whole event profile from start to finish with the war-room staffed.

  • Multi-hour soak test (8 h minimum). See Soak and stability.
  • Multi-wave dress rehearsal. The full doorbuster + email wave + sustained profile, 3+ hours.
  • War-room exercise. The full team is in position, and you inject an amber condition mid-run on purpose.
  1. Schedule the 8-hour soak to start the night before: Schedules tab → New schedule → fire at 22:00.
  2. Review the soak result the next morning before starting the dress rehearsal.
  3. If the soak shows drift > 10 %, do not start the dress rehearsal until you find the root cause.
  4. Run the multi-wave dress rehearsal: create bfcm-{year}-dress-rehearsal, use the multi-wave profile YAML.
  5. Run for 3+ hours with the full team in the war-room.
  6. Inject an amber event at the 90-minute mark: disable the mock payment gateway for 5 minutes and have the team follow the runbook.

Soak: no drift > 10 %, no errors in final 2 hours. Dress rehearsal: all failure criteria green throughout all waves. War-room exercise: team detects and responds to injected amber event per runbook within the expected time window.

Go/No-Go gate. The engineering lead and the business lead review the results together and sign off before game day.


Goal: Run the event with full visibility and a tested runbook in hand.

  • Pre-sale smoke test (T-60 min): 1–5 VUs against the full checkout journey. Must finish with no errors before sale starts.
  • Synthetic monitoring run (throughout the event): a low-VU continuous run against checkout that acts as a heartbeat. Set failure criteria so the war-room gets an alert as soon as any step fails.
  1. Open the MaxoPerf Active runs page in the war-room browser window.
  2. Keep the current run’s Overview tab open in a second window for per-label latency visibility.
  3. Check every 5 minutes per the monitoring assignment matrix.

Goal: Close the program and set up for next year.

  • Year-over-year comparison. Open the game-day peak run → Compare → select last year’s baseline. Document the delta chips.
  1. Tag the game-day run: open run detail → add tag bfcm-{year}-game-day.
  2. Tag the dress rehearsal run: bfcm-{year}-dress-rehearsal.
  3. Set the dress rehearsal or game-day peak run as the pinned baseline for next year.