Website yang terasa cepat ketika dibuka sendirian belum tentu tetap cepat ketika puluhan atau ratusan pengguna mengaksesnya secara bersamaan.
Saya mulai memahami hal ini ketika melakukan performance testing menggunakan k6. Awalnya, angka seperti 200 ms, 500 ms, atau 1.000 request per detik terlihat seperti sekadar hasil pengujian.
Setelah beberapa kali membaca pola hasilnya, saya justru melihat bahwa angka-angka tersebut sedang menceritakan sesuatu: seberapa jauh sebuah sistem mampu bekerja sebelum mulai kehilangan performanya. Itulah fungsi load testing.

Apa Itu Load Testing dan Bagaimana Virtual User Menguji Website?
Load testing adalah proses memberikan beban terukur kepada aplikasi untuk melihat bagaimana sistem merespons kondisi trafik tertentu. Beban tersebut dapat direpresentasikan menggunakan Virtual Users (VU), yaitu pengguna virtual yang menjalankan skenario secara paralel.
Dalam k6, VU dapat dinaikkan secara bertahap menggunakan ramping-vus, sehingga pengujian tidak langsung menghantam server dengan beban maksimum.Bagi saya, bagian terpenting bukan sekadar mengatakan, “website kuat sampai 100 VU.” Pertanyaannya adalah: apa yang terjadi ketika VU bertambah?
Saya biasanya melihat setidaknya empat indikator:
- Response time - berapa lama request mendapatkan respons.
- Throughput - berapa banyak request yang mampu diproses per detik.
- Error rate - persentase request yang gagal.
- Capacity - batas beban yang masih dapat dilayani dengan performa yang dapat diterima.
Response time juga tidak cukup dilihat dari rata-rata. p95 dan p99 lebih berguna untuk melihat pengguna yang mengalami sisi lambat dari sistem. Misalnya, rata-rata 300 ms terdengar bagus, tetapi jika p99 mencapai beberapa detik, tetap ada pengguna yang mendapatkan pengalaman buruk.

Bagaimana Menemukan Bottleneck Website dari Hasil Load Testing?
Di sinilah load testing menurut saya mulai menarik. Ketika VU dinaikkan, saya tidak hanya mencari angka yang semakin besar. Saya mencari perubahan pola.
Misalnya, 20 VU menghasilkan throughput yang stabil. Ketika dinaikkan menjadi 50 atau 100 VU, throughput ternyata tidak lagi bertambah secara proporsional, sementara response time mulai meningkat dan error rate ikut naik. Bagi saya, itu adalah sinyal penting.
Kemungkinan sistem mulai mendekati bottleneck bisa berasal dari database, API, CPU, memory, koneksi jaringan, query yang berat, atau bahkan konfigurasi aplikasi. Dokumentasi k6 juga menjelaskan bahwa ketika throughput berhenti meningkat sementara jumlah VU terus bertambah, sistem kemungkinan sudah mencapai batas tertentu.
Karena itu, saya tidak menganggap angka 100 VU otomatis berarti lebih baik daripada 50 VU. Yang lebih penting adalah mengetahui pada titik berapa sistem mulai kehilangan kestabilannya.

Kapan Developer Perlu Melakukan Load Testing pada Website?
Menurut saya, load testing tidak harus menunggu website memiliki ribuan pengguna.
Justru lebih masuk akal melakukannya sebelum sistem benar-benar ramai: setelah fitur penting selesai, sebelum deployment besar, sebelum campaign yang berpotensi meningkatkan trafik, atau ketika perubahan kode berpotensi memengaruhi performa.
Saya juga belajar bahwa pengujian harus memiliki baseline dan batas keberhasilan. Tanpa baseline, angka hasil test sulit memiliki konteks. Dengan threshold, kita dapat menentukan misalnya p95 response time harus berada di bawah batas tertentu dan error rate harus tetap rendah.
Pada akhirnya, load testing bukan tentang membuktikan bahwa website bisa menerima trafik sebanyak mungkin. Bagi saya, pertanyaan yang jauh lebih penting adalah:
“Pada beban berapa sistem masih mampu memberikan pengalaman yang layak, dan apa yang terjadi setelah melewati batas tersebut?”
Karena developer tidak hanya perlu membuat website bisa berjalan. Developer juga perlu tahu seberapa jauh website tersebut mampu bertahan ketika benar-benar digunakan. Mari diskusikan project dan kebutuhan website Anda sekrang.
