← Kembali ke Blog

Load Testing dengan k6.io: Beginner's Guide

Load testing adalah skill wajib bagi setiap engineer yang membangun sistem skalabel. Saya menggunakan k6.io untuk semua project di Badr Interactive karena ringan, bisa di-code, dan mudah diintegrasikan ke CI/CD.

Kenapa k6?

  • Scriptable — Test scenario ditulis dalam JavaScript
  • CLI-native — Bisa dijalankan di terminal dan CI/CD pipeline
  • Low resource — Bisa generate ribuan VUs dari satu mesin
  • Integrasi CI/CD — Bisa digabung dengan Jenkins, GitLab CI, GitHub Actions

Contoh Script Dasar

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 100 },  // Ramp-up
    { duration: '5m', target: 100 },  // Stable
    { duration: '2m', target: 0 },    // Ramp-down
  ],
  thresholds: {
    http_req_duration: ['p(95)<2000'], // 95% request < 2s
    http_req_failed: ['rate<0.01'],     // Error rate < 1%
  },
};

export default function () {
  const res = http.get('https://api.example.com/users');
  check(res, {
    'status is 200': (r) => r.status === 200,
  });
  sleep(1);
}

Interpretasi Hasil

Saya selalu fokus pada metrik ini:

  • p95 response time — Waktu response untuk 95% request
  • Error rate — Persentase request yang gagal
  • Throughput — Request per detik yang bisa ditangani

Integration ke CI/CD

Di Jenkins, saya integrasikan k6 dengan threshold check — jika threshold gagal, pipeline otomatis reject build. Ini prevents performance regression sebelum sampai ke production.

Load testing rutin menghemat biaya infrastructure dan mencegah downtime di production.