- 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.
Grafana k6 ve Apache JMeter Karşılaştırması
| Özellik | JMeter | k6 |
|---|---|---|
| Dil ve yazım stili | Java | JavaScript |
| Kurulum ve başlatma | JRE, GUI tabanlı | Node.js, konsol tabanlı |
| Performans ve ölçeklenebilirlik | Büyük yük testleri, kaynak tüketimi yüksek | Hafif, ölçeklenebilir |
| Senaryo tanımlama | XML, GUI veya manuel | JavaScript ile kodlama |
| Dağıtık test | Kapsamlı destek | k6 Cloud veya özel ortamlar |
| Raporlama | GUI, grafikler, Grafana/InfluxDB | Konsol, k6 Cloud, entegrasyonlar |
| Topluluk | Geniş kullanıcı topluluğu | Hızla büyüyen topluluk |
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)
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 ve k6 performans testi sonuçlarının karşılaştırılması
| Özellik | JMeter | k6 |
|---|---|---|
| Test ortamı | Bağımsız test | Yerel ortam |
| Test süresi | Örn. 2 dk 41 sn | Örn. 3 dk |
| Hedef kullanıcılar | Maks. 500 eşzamanlı | 500’e kadar yükselme |
| Toplam istek | Örn. 25.000 | Örn. 180.077 |
| Ortalama yanıt süresi | Örn. 11,44 sn | Örn. 242 ms |
| En yüksek yanıt süresi | Örn. 21,15 sn | Örn. 33,68 sn |
| Hız | Örn. 169,6 istek/sn | Örn. 857,45 istek/sn |

