The verdict in three sentences
To prove that a B2B SaaS can handle a new client with 20,000 users, a load testing campaign costs EUR 6,000 to 15,000 excl. VAT in 2026, and the database optimisation that almost always follows EUR 5,000 to 20,000. The target to put in the contract is measurable: p95 under 400 ms at 2,000 requests per second, with errors below 0.1%. The whole effort takes 3 to 6 weeks if the test environment is ready at kick-off.
What a serious load testing campaign includes
A useful load test is not about hammering the home page. It reproduces the real behaviour of the future client's users: login, dashboards, exports, concurrent edits, API calls from integrations. The deliverable an enterprise client expects is a quantified, reproducible report with the identified limits and the plan to remove them.
| Step | Duration | 2026 cost (excl. VAT) | Deliverable |
|---|---|---|---|
| Traffic analysis and journey modelling | 3 to 5 days | EUR 2,000 to 4,000 | 6 to 10 scenarios weighted by real usage |
| Writing k6 or Gatling scripts | 3 to 6 days | EUR 1,500 to 4,000 | Versioned scripts, realistic test data |
| Isolated test environment | 2 to 4 days | EUR 1,000 to 2,500 + cloud | Copy sized like production |
| Execution: ramp-up, plateau, spike, soak | 3 to 5 days | EUR 1,000 to 3,000 | p50, p95, p99 curves, error rate |
| Bottleneck analysis and report | 2 to 3 days | EUR 500 to 1,500 | Prioritised report, costed recommendations |
| Total campaign | 3 to 4 weeks | EUR 6,000 to 15,000 | Performance evidence you can show the client |
APM (Datadog, Grafana Cloud, New Relic, Sentry) is essential during the runs: without traces, you know the platform slows down but not why. Budget EUR 100 to 500 a month depending on volume.
Where it breaks, and what fixing it costs
In most B2B SaaS products aged 3 to 8 years, tests reveal the same bottlenecks. Fixing them often costs less than buying bigger servers.
| Common bottleneck | Measured symptom | Fix | Indicative cost (excl. VAT) |
|---|---|---|---|
| N+1 queries and missing indexes | p95 above 2 s on lists | Indexes, ORM query rewrite | EUR 3,000 to 8,000 |
| Saturated connection pool | 500 errors above 800 req/s | Pooler (PgBouncer), tuning | EUR 1,500 to 3,000 |
| No caching | Database hit on every view | Redis cache on hot reads | EUR 3,000 to 7,000 |
| Synchronous exports and reports | 30 s timeouts | Asynchronous job queue | EUR 4,000 to 10,000 |
| App not horizontally scalable | Single server at 95% CPU | Externalised sessions, autoscaling | EUR 5,000 to 15,000 |
| Monthly cloud cost before / after | EUR 3,800 before | EUR 2,900 after optimisation | Saving of about 24% |
The last line often surprises CTOs: an optimised platform handles more load with less infrastructure. In the example above, moving from 6 oversized instances to 4 instances with autoscaling and caching lowers the bill while doubling capacity.
Method in 4 types of runs
A complete campaign chains four profiles. The progressive ramp-up from 100 to 2,500 requests per second reveals the breaking point. The plateau at 2,000 requests per second for 30 minutes checks stability. The spike simulates 5,000 users arriving at once on a Monday at 9 am. The soak test, 4 to 8 hours at average load, detects memory leaks. Each run is replayed after fixes to measure the gain.
Mini case study
Sarah, CTO of an Amsterdam scale-up selling a scheduling SaaS to healthcare networks, has just signed a group with 20,000 users, worth EUR 180,000 in annual recurring revenue. The contract requires a performance demonstration before go-live.
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
She invests EUR 11,000 excl. VAT in the testing campaign and EUR 14,000 in fixes (indexes, Redis cache, asynchronous exports), EUR 25,000 in total. The p95 drops from 1,450 ms to 320 ms at 2,000 requests per second. The cloud bill falls by EUR 900 a month, EUR 10,800 a year. Infrastructure savings alone cover almost 14% of the project in year one, and it secures a EUR 180,000-a-year contract. An estimate to adapt to your architecture.
FAQ
k6 or Gatling?
k6 is scripted in JavaScript and fits easily into CI, which suits 70% of SaaS teams. Gatling, in Scala or Java, is better suited to JVM teams and very complex scenarios. Both are open source.
Can you test directly in production?
It is not advisable: a run at 2,000 requests per second can degrade service for current clients. An isolated environment costs EUR 300 to 1,500 in cloud for the campaign.
What performance target should go in the contract?
A commitment on p95 rather than the average, for example 400 ms on key journeys, with fewer than 0.1% errors at the target load.
Should tests be repeated regularly?
Yes, an automated regression run in CI at each major release costs EUR 1,000 to 3,000 to set up and avoids discovering a regression in production.
How long before you can reassure the client?
3 weeks for a first report, 6 weeks with fixes and the validation run.
Let's scope your project. We prepare your load testing campaign and the matching optimisation plan (indicative budget of EUR 6,000 to 15,000 excl. VAT for testing, 3 to 6 week timeline). Detailed quote within 48 h. WhatsApp +221 77 596 93 33.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.