CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/load-testing-overview

Teaches load and performance testing from zero: how to choose between k6, JMeter, Gatling, Locust, and Artillery based on observable project facts (team language, tests-as-code vs GUI authoring, protocols beyond HTTP, CI gating needs); the six load profiles (smoke, average-load, stress, spike, soak, breakpoint) and the question each one answers; the difference between open workload models that hold arrival rate constant and closed models that hold concurrent users constant; why percentiles rather than averages are the unit of measurement; and how to turn a run into a pass/fail CI gate, with a first runnable k6 script. Use when a service needs performance coverage and the tool, the load profile, or the pass/fail threshold has not been decided yet.

76

Quality

95%

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