Three execution tiers: Local (your machine), RedLine13 (cloud, modest), and Production-Scale (distributed, multi-region).
- Apache JMeter installed. Either add
<JMETER>/bintoPATH, or setJMETER_HOME(e.g.C:\apache-jmeter-5.6.3). - Java 17+ (
java -version).
- Open JMeter GUI →
File → Open→jmx/SmokeTest.jmx. - Enable View Results Tree (currently disabled) temporarily.
- Click Start. Confirm green results and passing assertions.
Never run Load/Stress/Spike/Soak in the GUI — GUI is for editing/debug only.
# From PerformanceFramework/
.\scripts\run-test.ps1 -Plan SmokeTest -Env qa
.\scripts\run-test.ps1 -Plan EndToEndFlow -Env qa
# Small local load with overrides:
.\scripts\run-test.ps1 -Plan LoadTest -Env qa -Props @{users=20; rampup=30; duration=120}chmod +x scripts/run-test.sh
./scripts/run-test.sh SmokeTest qa
./scripts/run-test.sh LoadTest qa -Jusers=20 -Jrampup=30 -Jduration=120jmeter -n -t jmx/SmokeTest.jmx \
-q config/env/qa.properties \
-p config/user.properties \
-l results/smoke.jtl -j results/jmeter.log \
-e -o reports/smoke \
-Jtestdata_file=data/testdata.csvresults/<run-id>/results.jtl— raw samples (CSV).reports/<run-id>/index.html— JMeter HTML dashboard (open in browser).results/<run-id>/jmeter.log— engine log.
Do not attempt 5k/50k threads locally. One laptop ≈ a few hundred light threads before the generator itself becomes the bottleneck. Scale on RedLine13.
- Validate locally first (Section A) — only upload green plans.
- RedLine13 → New Test → JMeter Test.
- Attach files:
- Plan:
jmx/LoadTest.jmx(or any plan). - Additional file:
data/testdata.csv.
- Plan:
- JMeter Properties box — paste your environment + load profile, e.g.:
base_url=app-perf.internal.company.com protocol=https port=443 users=500 rampup=180 duration=900 think_time_min=1000 think_time_range=3000 testdata_file=testdata.csv - Generators: instance type + count + region (start: 1 ×
c5.large). - Start and watch live RPS / response time / error% / active threads.
- Download the JTL when done; regenerate the HTML dashboard locally:
jmeter -g results/redline13-results.jtl -o reports/redline13-run
Because the JMX uses filename-only data references and
${__P()}everywhere, no field needs editing after upload — change behaviour via the Properties box.
For 5k → 50k VUs. Treat as a coordinated event, not an ad-hoc run.
- AWS configured per
docs/AWS-Setup.md(IAM key, EC2 quota, SGs). - SUT allows generator IP ranges (network/firewall change approved).
- Change window / sign-off obtained (especially anything touching PROD).
- Test data volume sufficient (unique users/bookings) — expand
data/testdata.csvso threads don't collide unrealistically. - Monitoring ready on the SUT side (APM, infra metrics, DB, logs).
- Baseline captured (a Smoke/Load run for comparison).
- Configure multiple generator groups, one per region, with
userssplit by the traffic-share table (RedLine13-Guide.md§4). - Match instance type/count to the scaling table (
RedLine13-Guide.md§5). - Stagger ramp: set
rampupto ≥ 300–600s for 10k+ so you observe degradation curves, not a thundering herd. - Start; monitor both RedLine13 (client-side) and SUT APM (server-side). Correlate response-time inflection with server CPU/DB/queue saturation.
- For Stress, let the staged thread groups climb until error% spikes — that inflection is the breaking point. For Soak, hold steady for hours and watch for slow memory growth / GC pressure / connection-pool exhaustion.
- Confirm all generators terminated in EC2 (cost hygiene).
- Archive JTL + HTML dashboard with the run metadata (date, build, profile).
- Compare P95/P99, throughput, and error% against the baseline and SLAs.