Key Metrics & KPIs

Performance testing produces dozens of data points, but only a handful of metrics truly matter. Master Response Time, Throughput, Hits Per Second, Error Rate, the 90th Percentile, and Pacing Calculations to become a data-driven performance engineer.

Response Time

The round trip of a request — from the moment a user sends a request to the moment the complete response is received back.

Throughput

The amount of data (bits/bytes) received from the server per unit of time. Measures the server's data delivery capacity.

Hits Per Second

The number of successful HTTP requests hitting the server per second. A user action may generate multiple hits.

Connections

The number of active TCP/IP connections between virtual users and the server at any given moment during the test.

Error Rate

The percentage of failed requests out of total requests. High error rates indicate application instability or resource exhaustion.

90th Percentile

90% of all transactions complete within this response time value. This is the standard metric reported to clients.

Response Time — Deep Dive

Response Time is the round trip of a request. It is the most critical metric in performance testing because it directly impacts user experience. Response time is measured in seconds and is broken down into components:

Server Time

Time spent processing the request on the application server (business logic, database queries, computations).

Network Time

Time spent transmitting data across the network between client and server (latency, bandwidth limitations).

Client Time

Time spent rendering the response in the browser (HTML parsing, CSS rendering, JavaScript execution).

Key Distinction: A user action is a request. A successful request is a hit. One request may contain multiple hits (e.g., loading a page triggers requests for HTML, CSS, images, JS files).

Throughput & Hits/sec

Throughput is the amount of data (bits) received from the server. It indicates how much data the server can deliver under load. A healthy test shows throughput increasing proportionally with user load.

Hits Per Second measures per-second how many hits are happening against the server. This metric helps gauge the server's request processing capacity.

What to Watch For

Throughput should increase linearly with user load
Flat throughput with increasing users = bottleneck
Hits/sec dropping = server rejecting requests
Monitor with response time for correlation

Granularity Note: The minimum granularity for Throughput and Hits Per Second graphs is 5 seconds. For all remaining graphs, it is 1 second.

90th Percentile Calculation — Step by Step

90th percentile means that 90% of the transactions are completing within this response time limit. This is the standard metric reported to the client because it filters out extreme outliers while representing the realistic user experience.

Calculation Process

Step 1: Sort Response Times in Ascending Order

Collect all response times for a transaction and arrange them from lowest to highest value.

Step 2: Remove the Top 10% of Values

Take out 10% of the values from the bottom (highest values). These are the outliers that skew the average.

Step 3: Take the Highest Remaining Value

The highest value in the remaining set (after removing top 10%) is the 90th percentile response time.

Example: 90th Percentile Calculation
Response Times (sorted ascending):
  1.2s, 1.5s, 1.8s, 2.0s, 2.1s, 2.3s, 2.5s, 2.8s, 3.1s, 5.2s

Total values: 10
Top 10% to remove: 10 × 0.10 = 1 value (remove 5.2s)

Remaining values:
  1.2s, 1.5s, 1.8s, 2.0s, 2.1s, 2.3s, 2.5s, 2.8s, 3.1s

90th Percentile = 3.1 seconds (highest remaining value)

→ "90% of transactions complete within 3.1 seconds"

Why Not Average?

Averages are misleading because a few extreme outliers can dramatically increase the mean. The 90th percentile gives a more realistic picture of what most users actually experience.

Customizable Percentiles

Based on client requirements, you can generate 80%, 85%, 90%, 95% or any other percentile. The Analyzer Properties panel allows you to configure this. The industry standard is 90%.

Pacing Calculations — Little's Law

Pacing calculations determine the delay between iterations to achieve the target transactions per hour (TPH). This is one of the most important calculations in performance testing and is frequently asked in interviews. Also referred to as Little's Law or "How to calculate TPH."

Example 1: Basic Pacing Calculation

Given: Target 1,800 transactions per hour | 1 script = 30 transactions | 1 iteration = 30 seconds

Step 1: Calculate Total Iterations

Total Iterations = Target Transactions ÷ Script Transactions = 1800 ÷ 30 = 60 iterations

Step 2: Calculate Time for Target Iterations

Target Iteration Time = Total Iterations × 1 Iteration Time = 60 × 30 = 1800 seconds

Step 3: Calculate Remaining Time

Remaining Time = Target Duration − Target Iteration Time = 3600 − 1800 = 1800 seconds

Step 4: Calculate Pacing

Pacing = Remaining Time ÷ Target Iterations = 1800 ÷ 60 = 30 seconds

Reverse Engineering — Verification
Iteration Time = Script Time + Pacing = 30 + 30 = 60 seconds/iteration
Total Transactions = (3600 ÷ 60) × 30 = 60 × 30 = 1800 transactions ✓

The pacing of 30 seconds successfully generates 1,800 TPH.

Example 2: Multi-User Pacing Calculation

Given: Target 3,000 transactions per hour | 1 script = 60 transactions | 1 iteration = 10 seconds | 10 users | Duration = 1 hour

Step 1: Calculate Total Iterations

Total Iterations = Target Transactions ÷ Script Transactions = 3000 ÷ 60 = 50 iterations

Step 2: Calculate Per-User Iterations

1 User Iterations = Total Iterations ÷ Number of Users = 50 ÷ 10 = 5 iterations per user

Step 3: Time for Target Iterations (adjusted)

Time = (Per-User Iterations − 1) × Iteration Time = (5 − 1) × 20 = 4 × 20 = 80 seconds

Step 4: Calculate Remaining Time

Remaining Time = Target Duration − Target Iteration Time = 3600 − 80 = 3520 seconds

Step 5: Calculate Pacing

Pacing = Remaining Time ÷ Per-User Iterations = 3520 ÷ 5 = 704 seconds

Important Note: Whenever you are dealing with a minimal number of users and minimal number of transactions, you must reduce one iteration from the target iteration count in the time calculation (Step 3). This accounts for the fact that the first iteration doesn't need pacing before it.

Complete Pacing Formula Reference

Formula Set 1 — Iteration-Based

Pacing Formula
P = R / I

P → Pacing (seconds)
R → Remaining Time (seconds)
I → Number of Iterations
Remaining Time Formula
R = D - (T × I)

D → Duration (total test time in seconds)
T → Time per iteration (seconds)
I → Number of Iterations
Number of Iterations Formula
I = T / S

I → Number of Iterations
T → Target Transactions (total target)
S → Script Transactions (per script)

Formula Set 2 — User-Based

Number of Users Formula
Users = TP × (R + T)

TP → Throughput per second
R  → Response Time (seconds)
T  → Think Time (seconds)
Pacing (Simple) Formula
P = R + T

P → Pacing (seconds)
R → Response Time (seconds)
T → Think Time (seconds)

Note: This simplified formula works
when targeting a specific throughput
with a known response time.

Complete Metrics Reference Table

Metric Definition Unit What to Monitor
Response Time Round trip time of a request from client to server and back Seconds Should stay within SLA; watch for spikes under load
Throughput Amount of data (bits) received from server per unit time Bytes/sec Should increase with users; flat = bottleneck
Hits Per Second Number of successful HTTP requests per second Hits/sec Should scale with users; drops = server limit
Connections Active TCP/IP connections between VUsers and server Count Watch for connection pool exhaustion
Error Rate Percentage of failed requests out of total requests Percentage Should be < 2%; high rate = instability
90th Percentile 90% of transactions complete within this time Seconds Report to client; more reliable than average
Elapsed Time Total test duration including ramp up + steady + ramp down Seconds Starts when you hit the start button
Transactions/sec Number of completed transactions per second TPS Key goal metric; correlate with response time

Controller Run-Time Metrics

During test execution, the Controller Run tab displays real-time graphs and statistics. Key metrics to monitor during a running test:

Ramp Up

Gradually increasing load against the application. Users are added at a controlled rate.

Steady State

The "duration" or "standalone" period where all users are active and metrics are measured.

Ramp Down

Gradually reducing load from the application. Users exit gracefully after completing iterations.

Elapsed Time

Total test duration that includes ramp up + steady time + ramp down. Starts when you hit start.

Interview Questions — Metrics & Pacing

Q: How do you calculate pacing / TPH?

Use the 4-step formula: (1) Total iterations = target transactions ÷ script transactions, (2) Time for iterations = iterations × iteration time, (3) Remaining time = duration − iteration time, (4) Pacing = remaining time ÷ iterations. Demonstrate with the 1800 TPH example.

Q: What is the difference between a request and a hit?

A user action is a request. A successful request is a hit. One request may contain multiple hits — for example, loading a web page sends one request but generates hits for HTML, CSS, JS, and image files.

Q: Why do we report 90th percentile instead of average?

Averages are misleading — a few extreme outliers can dramatically increase the mean. The 90th percentile filters out the top 10% of extreme values and reports the worst-case experience for 90% of users. Based on client needs, you can also generate 80%, 85%, or 95% percentiles.

Q: What does it mean when throughput is flat but users are increasing?

This indicates a bottleneck. The server has reached its maximum data delivery capacity. Further investigation is needed — check CPU utilization, memory, database connections, or application thread pools to identify the constraint.

Q: What is Little's Law in performance testing?

Little's Law states: Users = Throughput × (Response Time + Think Time). It relates the number of concurrent users to the server's processing rate and the time each user spends in the system. It's the foundation for all pacing calculations.