What is Gatling and why would I use it?
Gatling is an open-source load testing tool that simulates many users hitting your API or website at the same time. You write a small Scala file describing the user journey, run it from the command line, and Gatling produces an HTML report with response times, throughput (requests per second), error rates, and percentile graphs. Use it before launches, after big code changes, or whenever you need numbers (not guesses) about whether your service holds up under traffic.
I have never used Gatling. What do I actually get out of this tool?
You get a complete, runnable Simulation.scala file without learning the DSL first. Pick the target URL, the user injection shape, the requests, and click download. Then install Gatling once, drop the file into the project folder, and run ./gatling.sh. The HTML report tells you how the service behaves under the load you described.
What is the difference between users, ramp-up, hold, and ramp-down?
Users = the peak number of virtual users (VUs) running concurrently. Ramp-up = the time taken to reach that peak (so traffic grows gradually instead of all at once). Hold = how long to sustain the peak load (the steady-state phase that produces the most useful numbers). Ramp-down = the time to wind users back to zero. Together they form a trapezoid shape similar to real production traffic.
What are scenarios?
A scenario is one user journey — a sequence of requests that one virtual user runs. You can have multiple scenarios in one simulation: e.g. one for browsers, one for buyers, one for admins. Each scenario can repeat its requests N times, run for N seconds, or run forever until injection finishes.
What are checks (assertions)?
Checks decide whether each response is a pass or a fail. Common checks: status.is(200), responseTimeInMillis.lt(500), substring("success"). Failed checks count as KO requests in the report — without them, Gatling only knows whether the request returned at all, not whether the response was correct.
What is a feeder?
A feeder pulls parameterized data (login pairs, search terms, product ids) from a CSV/JSON file and injects it into your requests. Use ${columnName} in the URL, headers, or body and Gatling substitutes the value at runtime. Sharing modes: queue (one row per VU), random (sample with replacement), shuffle (shuffle once at start), circular (loop forever).
Does this tool run my simulation?
No. The generator builds the file in your browser. No data leaves the page. You install the Gatling CLI locally and run the simulation yourself.
How do I run the generated simulation?
Install Gatling (Homebrew, choco, or download the bundle from gatling.io). Save the downloaded .scala into src/test/scala/my/gatling/. Run ./gatling.sh -s my.gatling.GeneratedSimulation. The Setup & run tab shows the exact commands per OS.
Can I edit the generated Scala?
Yes. The output is plain Gatling DSL. Edit anything after download — add custom assertions, chained scenarios with shared session variables, dynamic pacing, group blocks, or response capture (.check(jsonPath("$.id").saveAs("id"))). The generator handles the common 80% so you do not start from a blank file.
When should I use Gatling vs k6 vs JMeter?
Gatling is great for HTTP load tests on the JVM with beautiful reports, especially in CI pipelines. k6 (JavaScript) is friendlier for developers who avoid the JVM. JMeter has the broadest plugin ecosystem but a heavier UI. For Spring/Java/Kotlin teams that already use the JVM, Gatling is usually the path of least friction.