๐ 30-Day Challenge
Performance Testing 30-Day Challenge
You cannot train performance testing out of a slide deck. Concepts like connection pool exhaustion and garbage collection pressure only click when you watch the metrics degrade in front of you during an actual load run.
This challenge is tool-agnostic. Use JMeter, k6, Gatling, Locust, or LoadRunner. Run one scenario per day. Each builds on the last. Watch your tool output and correlate it with infrastructure metrics. By Day 30, you will have a reusable test library and real debugging instincts.
Foundations
Days 1โ6Install your chosen tool, record or script a single GET request, and run it once.
Run a single-user loop for 5 minutes and capture min / avg / p90 / p95 response times.
Add realistic think time between steps and compare throughput with and without it.
Add response, status, and body assertions. Intentionally break one to watch it fail.
Build a results summary (table + simple graph) and interpret what the numbers mean.
Drive one input from a CSV or data file so each iteration uses different data.
Load Patterns
Days 7โ12Ramp users from 1 to 50 over time and watch where response time begins to bend.
Hold a fixed concurrency for 15 minutes and check for stability drift.
Jump from idle to high load instantly, then drop. Watch errors and recovery.
Run a moderate load for 1โ2 hours to surface leaks and exhaustion.
Increase load in fixed steps and record throughput at each plateau.
Compare '50 concurrent users' against a fixed requests-per-second target.
Correlation & Realism
Days 13โ18Extract a dynamic token or ID from a response and reuse it downstream.
Script an authenticated flow with per-user sessions.
Feed large and varied datasets; avoid data starvation.
Model a target requests-per-minute using pacing or arrival-rate mode.
Combine multiple user journeys at realistic ratios (e.g., 70/20/10).
Generate load from multiple injectors or locations.
Bottleneck Hunting
Days 19โ24Drive enough concurrency to starve the app or DB connection pool.
Sustain load until GC pauses appear in the infrastructure metrics.
Push CPU toward 100% and observe system behavior beyond saturation.
Load a DB-heavy endpoint and find the slow query causing throughput collapse.
Test cold vs warm cache; then bust the cache mid-test.
Add latency or bandwidth limits and observe the impact.
Advanced & Capstone
Days 25โ30Wire a smoke load test into a pipeline with pass/fail thresholds.
Run a test while watching APM / metrics dashboards side-by-side.
Kill a node or inject a failure mid-test; observe resilience.
Use your test results to estimate maximum safe capacity and headroom.
Turn one test into a clear stakeholder report with a recommendation.
Given a deliberately degraded scenario, run load, find the bottleneck, and propose a fix.
โ ๏ธ Never run load tests against infrastructure you do not own or have explicit written permission to test. Always use a dedicated test environment. Unauthorized load injection can cause outages, trigger legal liability, and violate terms of service.