Untuk menguji beban pada server menggunakan K6, Anda dapat menggunakan beberapa skenario pengujian yang umum. Berikut adalah beberapa jenis skenario pengujian beserta contoh script untuk masing-masing skenario:

1. Ramp-Up Load Testing (Uji Beban Meningkat)

Mengukur bagaimana aplikasi menangani peningkatan beban secara bertahap.
Script:
import http from 'k6/http';
import { check, sleep } from 'k6';

export let options = {
  stages: [
    { duration: '2m', target: 50 }, // Meningkatkan ke 50 pengguna dalam 2 menit
    { duration: '5m', target: 50 }, // Tetap di 50 pengguna selama 5 menit
    { duration: '2m', target: 100 }, // Meningkatkan ke 100 pengguna dalam 2 menit
    { duration: '5m', target: 100 }, // Tetap di 100 pengguna selama 5 menit
    { duration: '2m', target: 0 }, // Menurunkan ke 0 pengguna dalam 2 menit
  ],
};

export default function () {
  let res = http.get('https://yourwebsite.com');
  check(res, {
    'status was 200': (r) => r.status == 200,
  });
  sleep(1);
}

2. Soak Testing (Uji Rendam)

Mengukur kinerja aplikasi di bawah beban tertentu untuk jangka waktu lama.
Script:
import http from 'k6/http';
import { check, sleep } from 'k6';

export let options = {
  stages: [
    { duration: '10m', target: 200 }, // Meningkatkan ke 200 pengguna dalam 10 menit
    { duration: '3h', target: 200 }, // Tetap di 200 pengguna selama 3 jam
    { duration: '10m', target: 0 }, // Menurunkan ke 0 pengguna dalam 10 menit
  ],
};

export default function () {
  let res = http.get('https://yourwebsite.com');
  check(res, {
    'status was 200': (r) => r.status == 200,
  });
  sleep(1);
}

3. Spike Testing (Uji Lonjakan)

Mengukur bagaimana aplikasi menangani lonjakan mendadak dalam lalu lintas.
Script:
import http from 'k6/http';
import { check, sleep } from 'k6';

export let options = {
  stages: [
    { duration: '2m', target: 50 }, // Meningkatkan ke 50 pengguna dalam 2 menit
    { duration: '10s', target: 500 }, // Lonjakan mendadak ke 500 pengguna dalam 10 detik
    { duration: '3m', target: 500 }, // Tetap di 500 pengguna selama 3 menit
    { duration: '10s', target: 50 }, // Menurunkan kembali ke 50 pengguna dalam 10 detik
    { duration: '2m', target: 0 }, // Menurunkan ke 0 pengguna dalam 2 menit
  ],
};

export default function () {
  let res = http.get('https://yourwebsite.com');
  check(res, {
    'status was 200': (r) => r.status == 200,
  });
  sleep(1);
}

4. Stress Testing (Uji Stres)

Mengukur batas maksimum aplikasi dengan terus meningkatkan beban hingga mencapai batas.
Script:
import http from 'k6/http';
import { check, sleep } from 'k6';

export let options = {
  stages: [
    { duration: '2m', target: 100 }, // Meningkatkan ke 100 pengguna dalam 2 menit
    { duration: '2m', target: 200 }, // Meningkatkan ke 200 pengguna dalam 2 menit
    { duration: '2m', target: 300 }, // Meningkatkan ke 300 pengguna dalam 2 menit
    { duration: '2m', target: 400 }, // Meningkatkan ke 400 pengguna dalam 2 menit
    { duration: '2m', target: 500 }, // Meningkatkan ke 500 pengguna dalam 2 menit
  ],
};

export default function () {
  let res = http.get('https://yourwebsite.com');
  check(res, {
    'status was 200': (r) => r.status == 200,
  });
  sleep(1);
}

5. Load Testing (Uji Beban)

Mengukur kinerja aplikasi di bawah beban tertentu selama jangka waktu yang lebih pendek.
Script:
import http from 'k6/http';
import { check, sleep } from 'k6';

export let options = {
  stages: [
    { duration: '1m', target: 100 }, // Meningkatkan ke 100 pengguna dalam 1 menit
    { duration: '2m', target: 100 }, // Tetap di 100 pengguna selama 2 menit
    { duration: '1m', target: 0 }, // Menurunkan ke 0 pengguna dalam 1 menit
  ],
};

export default function () {
  let res = http.get('https://yourwebsite.com');
  check(res, {
    'status was 200': (r) => r.status == 200,
  });
  sleep(1);
}

Dengan menggunakan skenario-skenario di atas, Anda dapat menguji berbagai aspek kinerja aplikasi web Anda. Pastikan untuk menyesuaikan URL, durasi, dan jumlah pengguna sesuai dengan kebutuhan pengujian Anda.