Skip to main content
Bu yazı, tecrübe gerektirmeden API’ler üzerinde yük testi yapmanın nasıl mümkün olduğunu açık kaynaklı k6 ve JMeter araçlarıyla anlatır.
  • API: Yazılımlar arası iletişimi sağlayan arayüz.
  • Yük Testi: Bir uygulamanın belirli bir yük altında performansını değerlendirmek için yapılan testler; dayanıklılık, hız ve genel performansı ölçer.
  • k6: Açık kaynaklı yük testi aracı; JavaScript tabanlı script, konsol tabanlı. Gerçekçi API trafiği simüle edip sistemin yük altındaki tepkisini ölçer.
  • JMeter: Açık kaynaklı, Java tabanlı yük testi aracı; GUI veya XML ile senaryo tanımlanır. Gerçekçi kullanıcı davranışları simüle edilir.
Aynı testleri hem k6 hem JMeter ile gerçekleştirip karşılaştıracağız.

Grafana k6 ve Apache JMeter Karşılaştırması

JMeter arayüzü grafik raporları, Backend listener, Grafana ve InfluxDB ile görselleştirme sunar. k6 konsol tabanlı olmakla birlikte birçok veri görselleştirme sistemi ve Grafana entegrasyonu ile kullanılabilir.

k6 temel test senaryoları

API endpoint’leri için yük testi, dayanıklılık testi, stres testi ve performans optimizasyonu senaryolarına ait örnekler aşağıdadır.

Yük testi

Aynı anda yüksek sayıda kullanıcı bağlantısını simüle eder.

Dayanıklılık testi

Belirli süre boyunca sabit yük altında uygulamanın stabil çalışmasını simüle eder.

Stres testi

Ani trafik artışları veya kullanıcı sayısındaki hızlı değişimleri simüle eder.

Örnek k6 senaryosu (aşamalı yük)

Çalıştırma: k6 run k6_load_test.js k6 sonuç metrikleri (özet): http_reqs (toplam istek), http_req_duration (yanıt süresi), http_req_failed, iterations, vus/vus_max, checks, data_received/data_sent, p(90)/p(95) (yüzdelik dilimler). Bu metrikler API’nizin yük altındaki performansını ve darboğazları değerlendirmenize yardımcı olur. k6, Prometheus ve Grafana ile sistem metrikleriyle birlikte görselleştirilebilir. Kurulum: k6 kurulum rehberi (Windows, Mac, Linux).

JMeter temel test senaryoları

JMeter’da Threads (istemci sayısı), Loop (döngü sayısı) ve Ramp-up Period (yükleme süresi) değerleri girilir. API performans testi: Threads = API’ye eşzamanlı istek sayısı (örn. 500); Loop = her istemcinin tekrarlama sayısı; Ramp-up = tüm istemcilerin başlatılma süresi. Ek senaryolar: (1) İstek sayısını artırarak yük simülasyonu, (2) Maksimum yük testi, (3) Uzun süreli yük testi, (4) Farklı istek türleri (GET, POST, PUT, DELETE), (5) Ortalama yanıt süresi testi, (6) Hata yönetimi testi, (7) Zamanlayıcı ile periyodik testler. JMeter hem GUI’den RUN hem de terminalden çalıştırılabilir; sonuçlar CSV’ye yazılabilir:
JMeter sonuç metrikleri (özet): summary (toplam istek), total time, ortalama istek/saniye, ortalama/min/max yanıt süresi, hata sayısı ve yüzdesi, aktif/başlatılan/tamamlanan istek sayıları. Kurulum: JMeter kurulum rehberi (Windows, Mac, Linux).

JMeter ve k6 performans testi sonuçlarının karşılaştırılması

Not: Değerler örnek test ortamına göre değişir.

Sonuçlar

JMeter, daha düşük istek hızına rağmen yüksek eşzamanlı kullanıcı sayılarını destekler; büyük ölçekli uygulamalar için uygundur. k6 daha yüksek istek hızı sunar ve başarısız istek oranını minimize etmeye elverişlidir; hızlı yanıt gerektiren senaryolar için tercih edilebilir. Hangi aracın kullanılacağı test gereksinimlerine, hedeflenen metrikler ve uygulama yapısına bağlıdır. Her iki araç da farklı senaryolara uygun olarak kullanılabilir ve performans testlerinde değerli bilgiler sağlar. Bu araçlarla kendi yük testlerinizi yaparak uygulamalarınızın performansını değerlendirebilirsiniz.