Stop 10 · Performance TestingTopics · 5/8

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.

The purple blob stands under a bus shelter writing in a notebook as buses arrive, one far behind.

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)

120
0
130
1
140
2
150
3
160
4
170
5
180
6
200
7
900
8
3000
9

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

python
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

~25 min

Quick check

Average response time is 300 ms but p99 is 6 seconds. What does this tell you?

Go deeper

  1. 1Review a sample performance test result and identify the 95th percentile response time.
  2. 2Learn why percentiles (not just averages) matter for understanding worst-case user experience.
  3. 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.

Download
InsideEdge