Ketika seorang developer membangun sebuah apps dan akhirnyaQA passed, karena dengan bekerja sangat baik di local maupun development server. Tapi ternyata ketika sudah masuk environment production, ada beberapa masalah yang ditemukan. Banyak hal yang menyebabkan hal ini bisa karena environment, heavy usage dan masih banyak lagi. Untuk menyemakan environment tentu bisa diutak - atik sejak di dev, gampangnya samakan saja jenis versi server dan dependensi lainnya. Untuk yang tes heavy usage, bisa melakukan beberapa tes, salah satu load test yang akan dibahas di artikel ini.
K6.io
K6.io adalah sebuah load testing for engineering, berjalan di di environment Node Js, free dan sangat mudah untuk digunakan. K6 tersedia multi platform, mulai dari Windows, Linux hinggal Mac OS, berikut panduan untuk intalasi lintas platform.
Instalasi di Windows
Download master installnya di https://dl.bintray.com/loadimpact/windows/k6-latest-amd64.msi
Instalasi di Mac OS
brew install k6
Pastikan menginstall brew terlebih dahulu.
Instalasi di Linux
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61
echo "deb https://dl.bintray.com/loadimpact/deb stable main" | sudo tee -a /etc/apt/sources.list
sudo apt-get update
sudo apt-get install k6
Mulai Menggunakan K6
Berikut Yussan Academy akan memberikan sample penggunaan K6.io ini, untuk contohnya load testing untuk kompetisi.id versi local, versi local ini menembak API dev yang ada di cloud, dalam kasus ini Kompetisi Id local jalan di port 1470.
Sebelum lebih jauh seputar k6, mari kita coba initial test untuk memastikan k6 bisa jalan di local.
import http from "k6/http";
import { sleep } from "k6";
export default function () {
http.get("http://localhost:1470");
sleep(1);
}
Untuk kemudian simpan di file .js dan jalankan K6 melalui terminal
k6 run 1.initial-test.js
Dari hasil eksekusi diatas didapatkan beberapa parameter awal :
- output : - , karena tidak ada seting output dimasukan ke file tertentu, dalam kasus ini langsung ditampilkan di screen.
- script : script .js yang akan dieksekusi K6
- duration : berapa lama load test akan dilakukan
- iteration : berapa banyak iterasi / perulangan yang dilakukan
- vus : virtual users , berapa banyak user simulasi user untuk load testing
- max : max vus tiap iterasi
Dan dibagian bawah didapatkan berbagai macam status responnya apakah success / error dan berapa lama durasi yang dibutuhkan dari mengirim request hingga menerima response.
Test Dengan K6 Lebih Dalam
Setelah tahu istilah-istilah yang ada di K6 saatnya kita bisa mencoba load test menggunakan K6 ini lebih ekspert, dalam test ini kami ada skenario :
"Test object akan diakses 100 user, jika batasan durasi request dan responsenya total hanya 4 detik, berapa yang sukses dan error ? dan berapa banyak yang menerima response < 500ms?"
import http from "k6/http";
import { sleep, check } from "k6";
export let options = {
vus: 100,
duration: "5s",
};
export default function () {
const res = http.get("http://localhost:1470");
check(res, {
"status was 200": (r) => r.status == 200,
"transaction time OK": (r) => r.timings.duration < 500,
});
sleep(1);
}
Dan ini lah hasilnya, semua request success dengan response code 200, dan 83% diantaranya membutuhkan waktu > 500ms untuk menerima response websitenya.
Kesimpulan
Menarik dan gampang bukan untuk intalasi dan cara penggunaannya, masih banyak sekali fitur K6 yang bisa kamu eksplore untuk mendapatkan testing yang lebih bervariasi, akurat serta sesuai kebutuhkan, silahkan baca-baca saja di https://k6.io/docs/getting-started/running-k6 , terimakasih .