Analyzing Performance Test Results
Part of the QA Testing Roadmap
In short
A test that prints 'average 515 ms' sounds fine. Then you notice one in ten users waited three seconds. Reading results well is how you spot the users the average hides.
Interpreting response time percentiles, throughput graphs, and error rates to understand what actually happened during a test — raw numbers alone don't tell the story without context and comparison.

Think of it like this
Timing buses at the stop
You note every bus's arrival for a week. 'Average wait: 10 minutes' sounds great, until you notice some days you waited 45 and missed your exam. Percentiles tell you about those bad days. Averages smooth them away.
Watch it happen
Ten response times, sorted (ms)
1/5Ten requests from a test, sorted from fastest to slowest.
The big ideas
What you need to know
Percentiles over averages
p95 means 95% of requests were this fast or faster. It shows what slow users actually feel.
Read the timeline
Plot response time and users over time. Watch where the line bends upward.
Errors change everything
Very fast errors can make response times look great. Always read times next to error rate.
Compare with a baseline
Numbers mean most next to the last release's run, on the same environment and load.
See it in code
Walk through the code
1import statistics2 3times_ms = [120, 130, 140, 150, 160, 170, 180, 200, 900, 3000]4 5print("average:", statistics.mean(times_ms)) # 5156print("median:", statistics.median(times_ms)) # 165.07print("slowest:", max(times_ms)) # 30008 9slow = [t for t in times_ms if t > 500]10print(len(slow), "of", len(times_ms), "requests took over 500 ms")1/3Raw response times from a test run, in milliseconds.
Same ten numbers as the scene. The average looks fine, the median looks great, and the tail tells the truth.
Save yourself the pain
Common mistakes
Oops
Putting only 'average response time' in the test report.
Do this instead
Report p50, p95, p99, throughput and error rate, with a chart over time.
Oops
Comparing today's run on a laptop with last month's run on a big server.
Do this instead
Compare runs on the same environment, data and load profile, or the comparison means nothing.
Your mission
Find the hidden slow users
Quick check
Average response time is 300 ms but p99 is 6 seconds. What does this tell you?
Go deeper
- 1Review a sample performance test result and identify the 95th percentile response time.
- 2Learn why percentiles (not just averages) matter for understanding worst-case user experience.
- 3Practice writing a short summary interpreting a set of performance results for a stakeholder.
More topics at this stop
Stuck on this topic? Ask an Insider
Get 1:1 guidance from people who've walked this exact path — on the InsideEdge app.