Panduan Dasar K6
K6 Performance Testing: Panduan Dasar Uji Performa Aplikasi Web & API #
Pendahuluan #
Dalam era digital saat ini, kecepatan dan stabilitas aplikasi sangat penting untuk meningkatkan pengalaman pengguna dan mencegah kehilangan pelanggan. Load testing menjadi bagian krusial dalam siklus pengembangan perangkat lunak untuk memastikan aplikasi tetap stabil di bawah beban tinggi.
Salah satu tools terbaik untuk melakukan performance testing adalah K6. K6 adalah tools open-source, ringan, dan dirancang untuk membantu developer serta QA melakukan pengujian performa aplikasi web dan API dengan efisien.
1. Apa Itu K6? #
K6 adalah framework load testing berbasis JavaScript yang dikembangkan oleh Load Impact. Dengan menggunakan K6, tim pengembang dapat:
✅ Mensimulasikan ribuan pengguna virtual untuk menguji skala aplikasi.
✅ Menganalisis response time API dan kinerja backend.
✅ Mengintegrasikan load testing ke dalam CI/CD pipeline.
✅ Memonitor performa aplikasi secara real-time melalui Grafana dan InfluxDB.
2. Jenis-Jenis Pengujian Performa dengan K6 #
🔹 Load Testing #
Mengukur seberapa baik aplikasi menangani beban pengguna normal.
🔹 Stress Testing #
Menentukan titik batas aplikasi sebelum mengalami crash.
🔹 Soak Testing #
Mengamati kestabilan aplikasi dalam jangka waktu lama.
🔹 Spike Testing #
Mensimulasikan lonjakan pengguna dalam waktu singkat.
🔹 API Performance Testing #
Menguji seberapa cepat API merespons berbagai request.
3. Cara Install K6 #
🔹 Instalasi K6 di Berbagai OS #
Windows (Menggunakan Chocolatey):
choco install k6
macOS (Menggunakan Homebrew):
brew install k6
Linux (Menggunakan APT):
sudo apt update && sudo apt install k6
🔹 Verifikasi Instalasi #
Pastikan K6 sudah terinstal dengan menjalankan perintah:
k6 version
4. Membuat Skrip Load Testing dengan K6 #
🔹 Contoh Skrip Dasar #
Buat file baru test.js
, lalu tambahkan kode berikut:
import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
vus: 10, // 10 virtual users
duration: '30s', // durasi 30 detik
};
export default function () {
let res = http.get('https://test-api.example.com');
check(res, {
'status is 200': (r) => r.status === 200,
});
sleep(1);
}
🔹 Menjalankan Skrip Load Testing #
Jalankan skrip dengan perintah:
k6 run test.js
K6 akan memberikan output seperti ini:
data_received..........: 1.5 MB
data_sent..............: 50 kB
http_reqs..............: 5000 (100 req/sec)
vus....................: 10
iteration_duration.....: avg=100ms min=50ms med=80ms max=250ms
5. Parameter Penting dalam Load Testing K6 #
Berikut beberapa parameter utama yang dapat digunakan dalam load testing:
Parameter | Deskripsi |
---|---|
vus |
Jumlah virtual users yang digunakan |
duration |
Berapa lama pengujian dilakukan |
iterations |
Total jumlah request yang dikirim |
thresholds |
Batas performa yang dianggap lulus/tidak |
stages |
Simulasi beban bertahap (ramp-up & ramp-down) |
6. Studi Kasus: Load Testing API dengan K6 #
Misalkan kita ingin menguji API berikut:
- GET:
https://api.example.com/users
- POST:
https://api.example.com/users
(Mengirim data user baru)
Berikut adalah skrip yang lebih kompleks:
import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
stages: [
{ duration: '30s', target: 50 }, // Naik ke 50 virtual users dalam 30 detik
{ duration: '1m', target: 50 }, // Bertahan di 50 VUs selama 1 menit
{ duration: '30s', target: 0 }, // Turun ke 0 VUs dalam 30 detik
],
};
export default function () {
let res = http.get('https://api.example.com/users');
check(res, { 'Status 200': (r) => r.status === 200 });
sleep(1);
let payload = JSON.stringify({ name: 'John Doe', email: 'john@example.com' });
let params = { headers: { 'Content-Type': 'application/json' } };
let postRes = http.post('https://api.example.com/users', payload, params);
check(postRes, { 'Status 201': (r) => r.status === 201 });
}
💡 Penjelasan:
- Simulasi load naik turun (
stages
). - Menggunakan metode GET & POST untuk menguji API.
- Menambahkan header & payload JSON.
Jalankan skrip ini dengan:
k6 run api_test.js
7. Integrasi K6 dengan Grafana dan InfluxDB #
Untuk memvisualisasikan data pengujian, kita bisa menghubungkan K6 ke InfluxDB dan Grafana.
🔹 Menjalankan K6 dengan InfluxDB #
k6 run --out influxdb=http://localhost:8086/k6 test.js
🔹 Menampilkan Hasil di Grafana #
- Tambahkan InfluxDB sebagai data source.
- Buat dashboard baru untuk menampilkan grafik hasil pengujian.
8. Integrasi K6 dengan CI/CD (Jenkins & GitHub Actions) #
🔹 Contoh Jenkins Pipeline dengan K6 #
Tambahkan skrip berikut di Jenkinsfile
:
pipeline {
agent any
stages {
stage('Checkout Code') {
steps {
git 'https://github.com/user/repo.git'
}
}
stage('Install K6') {
steps {
sh 'sudo apt update && sudo apt install -y k6'
}
}
stage('Run Load Test') {
steps {
sh 'k6 run test.js'
}
}
}
}
Dengan pipeline ini, load testing otomatis berjalan setiap kali ada perubahan kode.
9. Best Practices dalam Load Testing #
✔ Mulai dengan jumlah virtual users kecil, lalu tingkatkan bertahap.
✔ Gunakan environment yang mirip produksi untuk hasil yang lebih akurat.
✔ Uji berbagai skenario pengguna (browsing, checkout, API calls, dll).
✔ Gunakan monitoring tools seperti Grafana untuk analisis lebih dalam.
✔ Integrasikan K6 dengan CI/CD untuk pengujian otomatis.
Kesimpulan #
🚀 K6 adalah tools load testing yang ringan, powerful, dan mudah digunakan. Dengan fitur skrip berbasis JavaScript, integrasi dengan CI/CD, serta dukungan monitoring, K6 menjadi pilihan ideal bagi developer dan tim QA.
🔹 Sudah siap mengoptimalkan performa aplikasi Anda? Coba K6 sekarang! 🎯
Belum ada artikel untuk dicantumkan di sini.