Skip to main content

Performance Testing Process

A performance engagement runs through eight phases, from the first client conversation to a signed-off report, with four quality gates in between. As a tester you spend most of your time in phases 4 to 7, but knowing the whole flow tells you where your inputs come from and who uses what you hand over.

Process at a glance​

Performance testing process: eight phases from requirements gathering to reporting and closure, with gates G1 to G4 and a fix-and-retest loop between execution and analysis

Phases 6 and 7 loop until the exit criteria at G4 are met. Monitoring and control runs across every phase, so the client hears about progress and risks early, not only in the final report.

Your part as a tester​

The tester owns phases 4 to 7 and feeds the lead's work in the others.

PhaseWho leadsYour part as a testerYou hand over
1 Requirements gatheringPerf test lead + clientJoin the workshop if invited; note how each flow is really used; flag flows that look hard to scriptOpen questions on flows and data
2 Performance risk assessmentPerf test lead + architectShare what you know about heavy screens, slow queries and integrationsInput to the risk register
3 Test approach and planPerf test leadCheck the workload model can be scripted; estimate your scripting and execution effortEffort estimate, review comments on the plan
4 Environment and test data setupTester + infraPrepare test data; check injectors, monitoring and access; run the environment smoke testEnvironment checklist, test data sets
5 Test design and scriptingTesterScript, get peer review, smoke at 1 user, then sanity checks on all test users in batches as a scaled smoke (client approval)Reviewed scripts, smoke and sanity results (evidence for G3)
6 Test executionTesterRun the booked tests; watch live metrics; log every run with its configRaw results, run log
7 Analysis and tuningTester + devFind bottlenecks, raise defects with evidence, retest fixesDefect log, retest results
8 Reporting and closurePerf test leadSupply results, charts and lessons learned; archive scripts, data and resultsAnalysis input, archived testware

The team also measures its own testing. The run logs, defect counts and retest cycles you record in phases 6 and 7 feed those metrics.

Phases in detail​

Each phase ends with a named output. A gate blocks the next phase until its owner approves.

#PhaseKey activitiesInputsOutputsOwnerExit gate
1Requirements gatheringClient workshop; capture NFRs (response time, throughput, error rate, resource limits); peak and average business volumes; critical user flows; growth forecast; test windows and constraintsClient brief, business volumes, production logs or analytics, architecture diagramSigned NFR sheet, critical flows list, open-question logPerf test lead + client BA/POG1 NFRs signed off by client
2Performance risk assessmentRate each flow by business impact and load risk; flag risky components (DB, integrations, batch jobs); agree what is in and out of scopeNFR sheet, architecture, change list for the releasePerformance risk register, prioritised flow listPerf test lead + solution architectRisks reviewed with client
3Test approach and planChoose test types (baseline, load, stress, soak, spike); build workload model from volumes; set entry/exit criteria; plan schedule, effort, tools, environment and data needsRisk register, NFR sheetPerformance test plan, workload model, entry/exit criteriaPerf test leadG2 Test plan approved by client and PM
4Environment and test data setupConfirm prod-like environment and its gaps; set up load injectors and monitoring (APM, server metrics, DB); generate and load test data; confirm firewall and accessTest plan, environment specsEnvironment readiness checklist, test data sets, monitoring dashboardsPerf tester + infra/DevOpsEnvironment checklist complete
5Test design and scriptingRecord flows; correlate dynamic values; parameterise data; add think time and pacing; peer review scripts; run a single-user smoke test, then sanity checks on all test users in batches, run as a scaled smoke (client approval needed)Critical flows, workload model, test dataPeer-reviewed scripts, smoke results, sanity check results for all test usersPerf testerG3 Test readiness review passed
6Test executionBook the run window with the client; run baseline first, then load, stress, soak and spike as planned; watch live metrics; log every run with its configReady scripts, environment, scheduleRaw results (.jtl), server and APM metrics, run logPerf testerAll planned runs complete
7Analysis and tuningCompare results to NFRs; find bottlenecks from metrics; raise performance defects; retest after each fix (loops back to phase 6)Run results, NFR sheetDefect log, tuning notes, retest resultsPerf tester + dev teamG4 Exit criteria met or accepted by client
8Reporting and closureWrite report against NFRs; give go/no-go recommendation; hold lessons-learned session; archive scripts, data and resultsAll results, defect logFinal test report, client sign-off, archived testware, lessons learnedPerf test leadClient sign-off

The JMeter guides cover the hands-on part of several phases: Understand Requirements (phase 1), Design Load Model (phase 3), Execute & Analyze (phases 6 and 7) and Reporting (phase 8).

From scripts to the real run​

We only book the real run with the client once the scripts have passed the smoke test and sanity checks on every test user. A failed run in the client's booked window wastes their team's time and our credibility.

From test data to the real run: scripting, a 1-user smoke test, sanity checks on all test users with a scaled smoke, gate G3, booking the run with the client, then the real run

  • Smoke test (1 user): proves the script logic. Correlation, parameterisation and assertions all work, and every request returns what we expect.
  • Sanity checks with scaled smoke (all test users): every test user in the data runs through the scripts, batch by batch (for example 100 users at a time for a 5,000-user target). This proves each record can actually be used (accounts log in, IDs exist, nothing is locked or already used up). Because each batch runs concurrently, it also covers what one user cannot: sessions don't collide, injectors cope and monitoring captures server metrics.
  • Client approval for the sanity run: it puts real concurrent load on the client's environment, so agree the time slot and batch size with them first.
  • Booking the run: agree the date and time window, an environment freeze, who is on call from infra and dev, and how test data is reset afterwards.

Tips​

  • Ask for the sanity run approval at G2. If the test plan already names the sanity run with its batch size, you only need to confirm the date later, not ask again.
  • Split test data into batch files for sanity. In JMeter, point the CSV Data Set Config at one batch (for example users_batch_01.csv), set Recycle on EOF to False and Stop thread on EOF to True, so every row is used exactly once. A row that fails an assertion is a bad record, not a script bug.
  • Keep the sanity results per batch. If a user fails in the real run, check its sanity result: passed in sanity means the load caused it, failed in sanity means the data did.
  • Distributed runs need the sanity run most. It is the first time all load generators fire together, and a misconfigured one usually shows up in the first few minutes.