// Interview Prep/Prep plans/14-Day Performance Tester Prep Plan
๐๏ธ 14-Day Performance Tester Prep Plan
Mid-to-senior performance testers preparing for a structured interview loop. Assumes you have run at least one load test before โ this plan sharpens your test design reasoning, builds coded interview-ready artefacts, and targets the specific question banks interviewers use for performance testing and results-analysis rounds.
// GOAL
Arrive at the Performance Tester interview with working JMeter and k6 scripts on GitHub, a structured findings report, and confident answers to questions on load test design, NFR validation, bottleneck diagnosis, and results communication.
// THE PLAN
Build precise vocabulary and mental models before touching any tool
// STUDY
- Performance test taxonomy: load, stress, spike, soak, volume, and capacity tests โ what question each answers, when to run each in a release cycle, and how to explain the difference to a stakeholder who just says 'run a load test'
- Non-functional requirements: how to define, document, and validate response time SLAs โ the difference between SLA (contractual), SLO (internal target), and SLI (the measured metric), and why confusing them causes reporting failures
- Why averages lie: p50, p75, p95, and p99 percentile metrics, the long tail of user experience, and how to explain to a product manager why a 300 ms average response time coexists with a 12 s p99
- Baseline testing: measuring the system's current performance profile under zero synthetic load so you have a meaningful comparison point before any load test begins
// PRACTISE
- Read the Performance Tester role page and note the 3 topic areas where your vocabulary is least precise โ these become your re-study targets for Days 12โ14
- Given the NFR '1,000 concurrent users, p95 response time < 2 s, error rate < 0.5%, sustained for 10 minutes', write a one-paragraph test approach: test type, ramp-up shape, hold duration, and pass/fail criteria
- Write a 2-minute verbal explanation of why a reported average response time of 300 ms is insufficient information for a go/no-go decision โ what additional percentiles and error rates you would require, and why
Deliverable
A written test approach paragraph for the 1,000-user NFR and a written percentile-metrics explanation you could deliver confidently to a non-technical stakeholder.
Write realistic, parameterised load test scripts in both JMeter and k6
// STUDY
- JMeter: thread groups, ramp-up periods, HTTP Sampler configuration, CSV Data Set Config for parameterised user data, Response Assertion for status and body, Listeners (Aggregate Report, Summary Report) for interpreting raw results
- k6: VU lifecycle stages (init, setup, default, teardown), stages config for ramp-up/hold/ramp-down shapes, thresholds as machine-readable pass/fail criteria, checks for per-request assertions, and the k6 cloud results dashboard
- Correlation: extracting dynamic values (CSRF tokens, session IDs, auth tokens) using JMeter's JSON Path Extractor or Regular Expression Extractor, or k6's response.json() โ without correlation, your test silently fails to represent real user behaviour
- Think time and pacing: simulating realistic user cadence with sleep() or JMeter's Constant Throughput Timer โ why omitting think time creates an artificial thundering-herd scenario that overstates load and invalidates results
// PRACTISE
- Write a JMeter test plan against reqres.in or httpbin.org: thread group of 50 users, 60-second ramp-up, 3-minute hold, HTTP Sampler with a Response Assertion on status code and response body โ run it and screenshot the Aggregate Report
- Write the same scenario in k6: 50 VUs, stages array for ramp-up/hold/ramp-down, thresholds set to fail if p95 > 2 s or error rate > 1%, and a check on status code for every request
- Add parameterisation to both scripts: load test usernames and email addresses from a CSV file so no two virtual users send identical request bodies โ verify the CSV is consumed correctly in the Aggregate Report
Deliverable
Working JMeter and k6 scripts for the same 50-VU scenario, both with CSV parameterisation โ committed to a public GitHub repository with a README that includes the exact command to run each.
Run a test against a realistic target, read the results, and diagnose what the numbers mean
// STUDY
- Workload modelling: identifying the user journeys to simulate, their relative transaction mix (e.g. 60% browse / 30% search / 10% checkout), and how to convert real traffic data or business estimates into a k6 or JMeter scenario
- Bottleneck identification: CPU and memory saturation, database connection pool exhaustion, GC pause spikes, external dependency latency โ the signal each leaves in the results (throughput plateau, error spike, p99 spike while p50 stays stable)
- Reading results: Grafana + InfluxDB real-time dashboards, JMeter Aggregate Report columns (average, median, p90, p95, p99, error%), and k6 end-of-run summary โ how to correlate a throughput plateau with an error spike
- Findings report structure: observed metric vs NFR threshold, likely root cause, how you would confirm the root cause, and remediation options โ written for both an engineering audience and a product manager
// PRACTISE
- Run a stress test that intentionally exceeds the target system's capacity: ramp VUs beyond the point where p95 exceeds 2 s or errors appear โ capture the breakdown point (VU count, throughput, error rate, p99) in your Aggregate Report or k6 summary
- From the raw results, write a structured 1-page findings report: what degraded, at what user count, what the likely bottleneck is, and what further investigation you would request from the engineering team
- Given this fabricated results table: at 200 VUs p50 = 180 ms / p99 = 420 ms / error = 0.0%; at 400 VUs p50 = 210 ms / p99 = 4,200 ms / error = 2.3%; at 500 VUs p50 = 230 ms / p99 = 12,000 ms / error = 8.7% โ write a diagnosis paragraph identifying what the numbers indicate and the first 3 things you would check
Deliverable
A 1-page findings report from your stress test plus a written diagnosis of the fabricated results table โ both structured as you would present them to an engineering team.
Consolidate gaps, work through the question banks, and simulate the results-presentation interview
// STUDY
- Performance bank: test type selection reasoning, NFR definition and validation, percentile metrics, JMeter Listeners interpretation, k6 thresholds and checks syntax, and bottleneck diagnosis patterns
- CI/CD bank: integrating k6 or JMeter into a GitHub Actions pipeline, threshold-gated build failures, publishing HTML results as artifacts โ increasingly common in senior performance interviews
- Behavioural bank: critical bottleneck found two days before release, a stakeholder dismissing p99 data as 'edge cases', a test environment too small to simulate production traffic โ practise structured STAR answers
- Revisit any tool syntax (JMeter JSON Path Extractor, k6 stages, thresholds format) that felt shaky or caused errors during Days 4โ7
// PRACTISE
- Answer 10 questions aloud from the performance testing and CI/CD question banks โ time yourself at 90 seconds per answer and flag every question where you gave a definition rather than a concrete example
- Identify your 5 weakest answers and write a worked example for each, referencing the scripts and findings report you produced during the plan
- Run a 30-minute timed mock: given an NFR brief, design a load test on paper โ scenario, ramp shape, duration, parameterisation strategy, and pass/fail threshold definitions โ then present it aloud in 5 minutes as you would to a senior engineer
Deliverable
Written answers to your 5 weakest questions and a complete load-test design document from the mock exercise โ ready to use as talking points in the interview.
Capstone: simulate the technical interview task
Mock task
Set a 45-minute timer. Part 1 โ test design (20 minutes): you receive the following NFR โ 'The checkout API must handle 500 concurrent users at peak, p95 response time < 1.5 s, error rate < 0.1%, sustained for 10 minutes.' On paper or in a document, design the load test: identify the test type, ramp-up shape and duration, user journey (POST /cart โ POST /checkout โ GET /order-confirmation), parameterisation strategy (unique user IDs and basket contents per VU), the k6 thresholds or JMeter assertions you would use, and the monitoring data you would collect alongside the test. Part 2 โ results analysis (20 minutes): you are shown this results table โ at 200 VUs: p50 = 180 ms, p95 = 850 ms, error rate = 0.0%; at 400 VUs: p50 = 210 ms, p95 = 4,100 ms, error rate = 2.3%; at 500 VUs: p50 = 230 ms, p95 = 12,000 ms, error rate = 8.7%. Write a structured findings report: state whether the NFR is met, describe what you observe at each threshold, name the most likely bottleneck, list the first 3 things you would investigate to confirm it, and state your recommendation. Part 3 (5 minutes): write a 3-sentence executive summary that a product manager could act on before tomorrow's release call.