Why k6?
k6 is a modern load testing tool that uses JavaScript instead of JMeter's XML. Built in Go for performance, runs locally.
Quick Start
brew install k6
import http from "k6/http"
import { check, sleep } from "k6"
export const options = {
vus: 50,
duration: "30s",
}
export default function () {
const res = http.get("https://your-api.com/users")
check(res, {
"status is 200": (r) => r.status === 200,
"response time < 500ms": (r) => r.timings.duration < 500,
})
sleep(1)
}
Ramping Scenarios
export const options = {
stages: [
{ duration: "2m", target: 100 },
{ duration: "5m", target: 100 },
{ duration: "2m", target: 200 },
{ duration: "5m", target: 200 },
{ duration: "2m", target: 0 },
],
thresholds: {
http_req_duration: ["p(95)<500"],
http_req_failed: ["rate<0.01"],
},
}
API Testing with Auth
export function setup() {
const res = http.post("https://api.example.com/auth/login",
JSON.stringify({ email: "test@example.com", password: "pass" }),
{ headers: { "Content-Type": "application/json" } }
)
return { token: res.json("token") }
}
export default function (data) {
const headers = { Authorization: "Bearer " + data.token }
const res = http.get("https://api.example.com/users", { headers })
check(res, { "200 OK": (r) => r.status === 200 })
}
k6 vs Alternatives
| Feature | k6 | JMeter | Gatling |
|---|---|---|---|
| Language | JavaScript | XML/GUI | Scala |
| Engine | Go | Java | Scala |
| Resources | Low | High | Medium |
| CI/CD | Easy | Complex | Medium |
Need to extract data from any website at scale? I build custom web scrapers — 77 production scrapers running on Apify Store. Email me at spinov001@gmail.com for a tailored solution.
Check out my awesome-web-scraping collection — 400+ tools for extracting web data.
Top comments (0)