CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/load-testing-overview

Teaches load and performance testing from zero: a tool-selection table choosing between k6, JMeter, Gatling, Locust, and Artillery from observable project facts; the six load profiles (smoke, average-load, stress, spike, soak, breakpoint); open vs closed workload models; why percentiles beat averages; turning a run into a pass/fail CI gate with a first runnable k6 script; a performance-incident triage workflow (confirm with a k6 smoke run, flame-graph the hot path, check slow queries, localize the cause); and full Gatling (Simulation DSL, injectOpen/injectClosed, setUp().assertions()) and Locust (HttpUser + @task locustfile, headless / distributed runs, CSV gating) deep dives in references. Use when a service needs performance coverage and the tool, load profile, or pass/fail threshold has not been decided yet, or when a live performance incident needs cause localization.

75

Quality

94%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

tool-executors.mdreferences/

How each tool expresses open vs closed workload models

Open holds arrival rate constant; closed holds concurrency constant. This table maps the two models onto the five tools, with the exact executor / injection names each one uses.

ToolOpen (arrival rate held constant)Closed (concurrency held constant)
k6constant-arrival-rate, ramping-arrival-rateconstant-vus, ramping-vus, shared-iterations, per-vu-iterations (k6 executors)
GatlinginjectOpen(...) with atOnceUsers(nbUsers), rampUsers(nbUsers).during(duration), constantUsersPerSec(rate).during(duration), rampUsersPerSec(rate1).to(rate2).during(duration), stressPeakUsers(nbUsers).during(duration)injectClosed(...) with constantConcurrentUsers(nbUsers).during(duration), rampConcurrentUsers(fromNbUsers).to(toNbUsers).during(duration) (Gatling injection)
ArtilleryarrivalRate (new VUs per second), rampTo, arrivalCount (Artillery test script)not the native model
JMeternot the native modelThread Group: a thread count, a ramp-up period, and a loop count, where "Each thread will execute the test plan in its entirety and completely independently of other test threads" (JMeter test plan)
Locustapproximated with constant_throughput wait time, "an adaptive time that ensures the task runs (at most) X times per second" (Locust locustfile)the default: a fixed user count plus wait_time

The Gatling trap, spelled out

rampUsers(n).during(d) and atOnceUsers(n) are open model profiles despite the word "users": they inject n users into the system over the window and never cap how many are inside at once. The closed equivalents are the ones with "Concurrent" in the name, constantConcurrentUsers and rampConcurrentUsers, and they live under injectClosed (Gatling injection). The two families cannot be mixed in one injection profile.

SKILL.md

tile.json