Belajar Performance Test Engineer - Tools: JMeter & Locust
Episode 5 of 28

Belajar Performance Test Engineer - Tools: JMeter & Locust

Membandingkan tiga tools load testing utama: k6 (script JavaScript ringan), JMeter (GUI-based Java dengan plugin ecosystem luas), dan Locust (Python-based dengan model distributed built-in), termasuk kapan menggunakan masing-masing.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 4 kita menguasai k6 secara mendalam, kini saatnya memahami dua tool alternatif yang juga penting di dunia performance testing: JMeter dan Locust. Di dunia nyata, Performance Test Engineer tidak selalu bisa memilih tools sendiri — tim yang sudah ada mungkin sudah menggunakan JMeter, atau tim data engineering mungkin lebih nyaman dengan Python. Memahami ketiga tools membuat kalian lebih fleksibel dan valuable di organisasi mana pun.

Episode ini bukan tutorial lengkap untuk JMeter atau Locust — melainkan perbandingan praktis yang membantu kalian memahami kapan harus menggunakan masing-masing, kelebihan dan kekurangan masing-masing, serta contoh skenario penggunaan.

Apache JMeter

Apa itu JMeter

Apache JMeter adalah tool load testing open-source berbasis Java dengan antarmuka GUI. JMeter sudah ada sejak 1998 dan menjadi tool performance testing paling banyak digunakan di enterprise. Ia menguji performa pada protocol HTTP, HTTPS, SOAP, REST, JDBC, FTP, SMTP, dan banyak lagi.

Keunggulan JMeter

AspekDetail
GUI visualTest plan dirancang dengan drag-and-drop, cocok untuk non-developer
Plugin ecosystemRatusan plugin untuk protocol dan integrasi tambahan
Multi-protocolHTTP, JDBC, LDAP, SMTP, FTP, WebSocket — satu tool untuk semua
Distributed testingBuilt-in remote testing dengan slave nodes
CommunityKomunitas besar, banyak tutorial, dan dokumentasi lengkap

Kekurangan JMeter

AspekDetail
Resource-heavyJava JVM memakan RAM (200MB-2GB tergantung beban)
GUI-only workflowTest plan sulit di-version control (XML format)
Belajar curveGUI yang kompleks dengan banyak menu dan opsi
KecepatanLebih lambat dari k6 untuk throughput tinggi

Contoh Test Plan

JMeter test plan dibuat di GUI dan disimpan sebagai XML. Berikut contoh sederhana yang divisualisasikan:

xml
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan>
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="API Load Test">
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments"/>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
        testname="User Thread Group" num_threads="100" ramp_time="30">
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController"/>
      </ThreadGroup>
    </hashTree>
  </hashTree>
</jmeterTestPlan>

Kapan Menggunakan JMeter

  • Tim punya non-developer yang perlu merancang test plan tanpa coding
  • Menguji protocol selain HTTP (JDBC, LDAP, SMTP)
  • Organisasi sudah berinvestasi di JMeter
  • Butuh GUI untuk presentasi test plan ke stakeholder

Locust

Apa itu Locust

Locust adalah load testing tool open-source yang menulis test dalam Python. Philosophy Locust adalah "test as code" — semua test ditulis dalam Python tanpa GUI, mirip dengan pendekatan k6 tetapi menggunakan bahasa yang lebih familiar bagi data engineers dan backend developers.

Keunggulan Locust

AspekDetail
Python ecosystemAkses penuh ke library Python: pandas, requests, SQLAlchemy
Distributed built-inMaster-worker architecture tanpa konfigurasi kompleks
Realistic user behaviorModel between() untuk think time yang natural
Web UIDashboard built-in untuk monitoring real-time
ExtensibleCustom classes dan继承 untuk test scenario kompleks

Kekurangan Locust

AspekDetail
Python dependencyButuh Python environment (virtualenv, pip)
Throughput terbatasSingle-threaded Python lebih lambat dari k6 Go
Tidak se-ringan k6Lebih banyak overhead per VU
Protocol terbatasHTTP/HTTPS primarily, ekstensi untuk WebSocket/gRPC

Contoh Test

python
from locust import HttpUser, task, between
 
class WebsiteUser(HttpUser):
    wait_time = between(1, 5)  # Think time 1-5 detik
 
    @task(3)
    def view_products(self):
        self.client.get("/products")
 
    @task(1)
    def checkout(self):
        self.client.post("/checkout", json={"product_id": 1, "quantity": 2})
 
    def on_start(self):
        self.client.post("/login", json={
            "username": "testuser",
            "password": "testpass"
        })

Kapan Menggunakan Locust

  • Tim menggunakan Python secara luas
  • Butuh integrasi dengan data pipeline Python
  • Test scenarios membutuhkan logic Python kompleks
  • Butuh web UI untuk monitoring tanpa tool tambahan

Perbandingan Head-to-Head

Kriteria Evaluasi

Kriteriak6JMeterLocust
Bahasa scriptingJavaScriptXML (GUI)Python
Resource usageRendah (Go binary)Tinggi (Java JVM)Sedang (Python)
KecepatanSangat cepatSedangSedang
Learning curveRendah (JS familiar)Tinggi (GUI kompleks)Sedang (Python)
Distributed testingk6 Cloud atau DockerRemote nodesMaster-worker
Protocol supportHTTP, WebSocket, gRPC, k6 extensionsHTTP, JDBC, LDAP, SMTPHTTP primarily
CI/CD integrationSangat mudahKompleksMudah
CommunityGrowing cepat (Grafana Labs)Sangat besarModerate
LicenseLGPL-3.0Apache 2.0MIT

Rekomendasi

Gunakan k6 jika: tim developer-oriented, butuh performa tinggi, CI/CD integration, dan berfokus pada HTTP/API testing. Ini tool utama di series ini.

Gunakan JMeter jika: tim non-developer, perlu multi-protocol (JDBC, LDAP), atau organisasi sudah berinvestasi di JMeter.

Gunakan Locust jika: tim Python-centric, butuh integrasi dengan data pipeline Python, atau test scenarios membutuhkan logic Python kompleks.

Memulai dengan JMeter

Install

bash
# Download JMeter dari halaman releases Apache
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.6.3.tgz
tar xzf apache-jmeter-5.6.3.tgz
cd apache-jmeter-5.6.3/bin
./jmeter

Menjalankan dari Command Line

JMeter bisa juga dijalankan tanpa GUI untuk CI/CD:

bash
./jmeter -n -t test-plan.jmx -l results.jtl -e -o ./report

Memulai dengan Locust

Install dan Jalankan

bash
pip install locust
# Buat file locustfile.py (contoh di atas)
locust -f locustfile.py --host=https://api.example.com

Buka browser ke http://localhost:8089 untuk web UI Locust.

Distributed Locust

bash
# Mulai master
locust -f locustfile.py --master --host=https://api.example.com
 
# Mulai worker (bisa banyak di mesin berbeda)
locust -f locustfile.py --worker --master-host=192.168.1.100

Penutup

Di episode 5 ini kalian telah memahami tiga tools load testing utama:

  • k6: ringan, cepat, JavaScript-first — tool utama di series ini.
  • JMeter: GUI-based, multi-protocol, ecosystem luas — pilihan enterprise.
  • Locust: Python-first, distributed built-in — pilihan tim Python.

Tidak ada tool yang "paling bagus" secara absolut — yang terbaik adalah tool yang paling cocok dengan konteks tim dan organisasi kalian. Di episode 6 selanjutnya, kita akan mempelajari stress, soak, dan spike testing — genre testing di luar load testing biasa yang menguji batas dan ketahanan sistem. Siapkan lab kalian!