DEV Community

Alex Spinov
Alex Spinov

Posted on

Grafana k6 Has a Free Load Testing Tool — Write Performance Tests in JavaScript Not XML

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
Enter fullscreen mode Exit fullscreen mode
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)
}
Enter fullscreen mode Exit fullscreen mode

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"],
  },
}
Enter fullscreen mode Exit fullscreen mode

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 })
}
Enter fullscreen mode Exit fullscreen mode

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)