Skip to content

BFCM countdown calendar

The readiness program works backwards from the event date. If Black Friday is November 28, you start the program on October 10 (T-7 weeks). If you start later, compress the schedule — but do not skip the go/no-go gates.

Each milestone below lists: what to run, what the passing criteria are, and what to do in MaxoPerf.


Goal: Establish the ground truth your entire readiness program will build on.

  1. Open the MaxoPerf console → Tests → New test.
  2. Name it bfcm-{year}-baseline — the name becomes the reference anchor for the rest of the program.
  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 baseline run for the year. This is the run you will compare to at T+1.
  7. If the run fails, open the per-label breakdown and identify which endpoint is causing the failure before proceeding.

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


Goal: Confirm every endpoint that will be under load has been exercised at least once at low load.

  • Smoke tests (1–5 VUs) for every BFCM-specific endpoint. Include any new features, promotions pages, or integrations that were not present 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. Pay special attention to: new checkout step, new loyalty/points integration, new recommendation engine, flash-deal landing page.

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


Goal: Prove the system handles the modeled peak load with acceptable performance across all critical paths.

  • Load test at 1× modeled peak — same as the T-6 week baseline but now with any fixes applied.
  • Load test at 1.25× modeled peak — a modest 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 per-label latency breakdown — any label with p95 > 80 % of its SLO at 1× should be flagged as a risk.

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


Goal: Know the exact breaking point so you are sure your modeled peak is 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 — this 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. Observe: recovery time after VU drop and any persistent errors.

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


Goal: Close any gaps found in T-3 weeks before the dress rehearsal window.

  • Targeted re-tests of any bottleneck endpoints. Not the full suite — focused tests on changed components.
  • 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 no regression introduced by the fix.

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 full event profile from start to finish with the full war-room structure active.

  • 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. Full team in position; amber condition deliberately injected mid-run.
  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 proceed with the dress rehearsal until the root cause is identified.
  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 execute 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. Engineering lead and business lead review results together and sign off on proceeding to game day.


Goal: Execute 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): low-VU continuous run against checkout as a heartbeat. Failure criteria set to alert the war-room immediately if 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.