Performance testing basics for manual QA
Nobody expects a manual QA to write JMeter scripts. But knowing the performance testing types and core metrics is expected — because QA is often the first person to see the signal of a problem.
The types:
- Load testing — does the system hold the required response times under expected normal load? (e.g. 500 concurrent users)
- Stress testing — at what point does it break? Increase load until you find the limit. The key question: how does it break — a clean error, or corrupted data?
- Spike testing — a sudden jump in load (e.g. an ad campaign, the year-end policy renewal peak). Does the system recover quickly?
- Endurance / soak testing — steady load over a long period (hours/days). Memory leaks and resource exhaustion show up here
- Scalability testing — does the system get proportionally stronger as resources (servers, instances) are added?
- Volume testing — behaviour with large data volumes (e.g. searching a database of a million policies)
| Metric | What it means | What to watch for |
|---|---|---|
| Response time | Time from sending a request to receiving the response | The average misleads — **p95 / p99** (95th and 99th percentile) give a truer picture |
| Throughput | Requests processed per unit of time (RPS/TPS) | If throughput stops growing as load rises, the system has hit saturation |
| Error rate | Percentage of failed requests | A rise in 500s and timeouts under load — the clearest sign of breaking |
| Concurrent users | Number of simultaneously active users | The number must come from analytics — real peak data, not a guess |
| Resource usage | CPU, memory, disk, DB connections | Steadily rising memory during an endurance test means a memory leak |
What can a manual QA concretely do about performance?
- Measure single-user response times — the DevTools Network tab shows the timing of every request. That isn't load testing, but a finding like "it takes 8 seconds even on an idle system" is very valuable
- Test with large data — not with a test account holding 5 policies but one holding 500; search, filters, export and pagination break there
- Simulate a slow network — with DevTools throttling: is there a loading indicator, are timeouts handled, is double submit possible
- Watch the trend — if the same operation took 1 second last release and takes 4 now, that is a bug (performance regression)
- Demand a number in the requirement — turn "should open fast" into "p95 < 2 seconds" during refinement
When to involve a specialist: real load/stress/endurance testing needs dedicated tools (JMeter, k6, Gatling), a dedicated environment and infrastructure monitoring. It cannot be replaced by "opening 20 tabs manually" — offering that in an interview is a negative signal.
The average-versus-percentile distinction is an excellent detail for standing out in an interview. When you say "the average response time is 1 second", 5% of users may be waiting 10 seconds — and those are the ones who complain. That is why p95 is asked for: 95% of users get a response faster than that. On an insurance portal this is a real difference: the corporate customer with many policies is always inside that slow 5%.
📚 Sources and documentation
- Web Vitalsofficialweb.dev
- Lighthouseofficialdeveloper.chrome.com