Yazılım Test Mühendisliği Dersleri

YTM Dersleri: Bölüm 12

Uygulamalı JMeter | Thread Group, Sampler, Listener ve Deney Sonuçları | yazilimtestmuhendisligi.com

Uygulamalı JMeter: Thread Group, Sampler, Listener ve Deney Sonuçları

Bir önceki bölümde performans ve yük testi kavramlarını gördük; bu sayfada Apache JMeter ile bunu uygulamaya döküyoruz. Bir test planının üç temel yapı taşını (Thread Group, Sampler, Listener) ve örnek bir deneyin sonuçlarının nasıl okunup yorumlanacağını adım adım ele alıyoruz.

Apache JMeter Thread Group HTTP Sampler Listener Aggregate Report

i Uygulamalı JMeter’e Giriş

Apache JMeter, Java tabanlı, açık kaynaklı ve en yaygın kullanılan performans/yük test araçlarından biridir. Bir JMeter test planı, hiyerarşik bir ağaç yapısında üç temel bileşenden oluşur:

  • Test Plan
    • Thread Group
      • HTTP Request – Giriş Yap
      • HTTP Request – Ürün Listesi
      • HTTP Request – Sepete Ekle
    • Listeners
      • View Results Tree
      • Summary Report
      • Aggregate Report

Thread Group “kaç kullanıcı, ne kadar sürede, kaç kez” sorusunu yanıtlar; Sampler‘lar gerçek istekleri (HTTP, JDBC, FTP vb.) temsil eder; Listener‘lar ise bu isteklerin sonuçlarını toplayıp görselleştirir. Şimdi her birini detaylı inceleyelim.

1 Thread Group Yapılandırması

Thread Group, bir JMeter test planının başlangıç noktasıdır ve sanal kullanıcıları (thread’leri) temsil eder. Üç temel parametresi vardır:

Thread Group – “Sepetim Akışı Yük Testi”
Number of Threads (users)100
Ramp-up period (seconds)60
Loop Count10
Toplam İstek Sayısı (hesaplanan)100 × 10 = 1.000
ParametreAnlamı
Number of Threads (Users)Simüle edilecek eş zamanlı sanal kullanıcı sayısı
Ramp-up PeriodTüm kullanıcıların kademeli olarak devreye girmesi için geçecek süre (saniye). 100 kullanıcı, 60 saniyede devreye girerse saniyede ortalama ~1.6 yeni kullanıcı başlar.
Loop CountHer sanal kullanıcının test senaryosunu kaç kez tekrarlayacağı
Scheduler (opsiyonel)Testin belirli bir başlangıç/bitiş zamanında veya süre boyunca (duration) koşmasını sağlar
İpucu: Ramp-up süresini çok kısa tutmak (örn. 100 kullanıcıyı 1 saniyede başlatmak), gerçek dünyada asla olmayan yapay bir “anlık patlama” yaratır ve spike testine dönüşür. Gerçekçi bir yük testi için ramp-up süresini, kullanıcıların gerçek dünyada siteye kademeli olarak gireceği süreye yakın tutun.

2 Sampler Türleri

Sampler, JMeter’da gerçek bir isteği temsil eden bileşendir. Thread Group içindeki her sampler, tanımlanan thread ve loop sayısı kadar çalıştırılır.

🌐
HTTP Request

En sık kullanılan sampler; web sitelerine ve REST API’lere istek göndermek için kullanılır.

🗄️
JDBC Request

Doğrudan veritabanına SQL sorgusu göndermek ve performansını ölçmek için kullanılır.

📁
FTP Request

Dosya sunucularına yükleme/indirme işlemlerinin performansını test etmek için kullanılır.

✉️
SOAP/XML-RPC Request

SOAP tabanlı web servislerine istek göndermek için kullanılır.

Örnek HTTP Request Sampler Yapılandırması

# Sampler: "HTTP Request - Sepete Ekle"
Protocol      : https
Server Name   : api.ornek-magaza.com
Method        : POST
Path          : /v2/sepet/ekle
Body Data     : {"urunId": "URN-4521", "adet": 1}
Headers       : Content-Type: application/json
                Authorization: Bearer ${authToken}
Değişken kullanımı: JMeter’da ${degisken} sözdizimi, Postman’deki {{degisken}} yapısına karşılık gelir. Bir CSV Data Set Config bileşeniyle her sanal kullanıcıya farklı test verisi (kullanıcı adı, ürün ID) atanabilir — bu, gerçekçi ve tekrar etmeyen bir yük senaryosu oluşturur.

3 Listener’lar ile Sonuç İzleme

Listener, sampler’lardan gelen sonuçları toplayan ve görselleştiren bileşendir. Farklı listener’lar, farklı analiz ihtiyaçlarına hizmet eder.

🌳
View Results Tree

Her isteğin ham request/response içeriğini gösterir. Hata ayıklama (debug) için idealdir, yüksek yükte kapatılmalıdır.

📋
Summary Report

Her sampler için toplam istek, ortalama süre, hata oranı gibi özet istatistikleri satır satır gösterir.

📊
Aggregate Report

Summary Report’a ek olarak medyan, 90/95/99. persentil değerlerini de gösterir — performans raporlarının temelidir.

📈
Graph Results

Sonuçları zaman içinde bir çizgi grafik üzerinde görselleştirir; eğilimleri gözle takip etmeyi sağlar.

Performans uyarısı: Yüksek kullanıcı sayısıyla (örn. 500+ thread) test yaparken “View Results Tree” gibi detaylı listener’ları açık bırakmak, JMeter’ın kendisinin bellek tüketip test sonuçlarını bozmasına neden olabilir. Gerçek yük testlerinde bu tür listener’lar kapatılmalı, sonuçlar yalnızca dosyaya (.jtl) yazdırılmalıdır.

4 Örnek Deney ve Sonuç Analizi

Yukarıdaki yapılandırmayla (100 kullanıcı, 60 saniye ramp-up, 10 döngü) kurgulanan bir “Sepetim Akışı” test planının Aggregate Report çıktısı örnek olarak aşağıdaki gibi olabilir:

Label# SamplesAverage (ms)Median (ms)90% LineError %Throughput
Giriş Yap1.0002101803200.0%48.2/sn
Ürün Listesi1.0003402905100.2%45.7/sn
Sepete Ekle1.0008906201.8503.4%31.4/sn
TOPLAM3.0004803809201.2%41.7/sn

Zaman İçinde Yanıt Süresi Eğilimi (Örnek)

Yatay eksen: zaman (dakika)  ·  Dikey eksen: göreli yanıt süresi  ·  Kırmızı çubuklar: eşiği aşan gecikme noktaları

Sonuçların Yorumlanması

480 ms
Genel Ortalama Yanıt Süresi
%3.4
“Sepete Ekle” Hata Oranı
920 ms
Toplam 90. Persentil
41.7/sn
Genel Throughput
  • “Giriş Yap” ve “Ürün Listesi” istekleri kabul edilebilir sınırlar içinde (ortalama < 500ms, hata oranı ~0%).
  • “Sepete Ekle” isteğinin ortalaması (890ms) ve 90. persentili (1.850ms) diğer isteklere göre belirgin şekilde yüksek — bu bir darboğaz (bottleneck) işaretidir.
  • “Sepete Ekle” için %3.4 hata oranı, kabul edilebilir eşiğin (genellikle %1’in altı) üzerinde — bu bulgu bir hata kaydı (defect) olarak raporlanmalıdır.
  • Grafikteki ani sıçrama (7-9. dakikalar), muhtemelen artan eş zamanlı kullanıcı sayısının veritabanı bağlantı havuzunu (connection pool) zorladığını gösteriyor olabilir — geliştirme ekibiyle birlikte kök neden analizi yapılmalıdır.
Analiz önerisi: “Sepete Ekle” isteğinin yavaşlığının kaynağını bulmak için, aynı anda sunucu tarafında APM (Application Performance Monitoring) araçları (örn. New Relic, Dynatrace) veya veritabanı sorgu loglarıyla çapraz analiz yapmak, JMeter’ın “ne yavaş” bilgisine “neden yavaş” cevabını ekler.

Sonuç ve Öneriler

JMeter ile etkili bir performans testi kurmak, üç temel bileşeni doğru anlamaktan geçer: Thread Group ile gerçekçi bir kullanıcı yükü paterni tanımlamak, doğru Sampler türüyle gerçek istekleri simüle etmek ve uygun Listener‘larla sonuçları hem hata ayıklama hem raporlama amacıyla doğru şekilde toplamak.

Ancak asıl değer, ham sayılarda değil yorumlamada gizlidir: yukarıdaki örnekte olduğu gibi, ortalamanın yanı sıra persentil değerlerine ve hata oranlarına bakmak, gözden kaçabilecek darboğazları ortaya çıkarır.

Altın kural: Bir performans test raporunu asla tek başına “geçti/kaldı” olarak sunmayın. Her zaman hangi sampler’ın, hangi persentilde, ne kadar yavaşladığını ve olası kök nedenini (veritabanı, üçüncü parti servis, ağ) belirten bir yorum ekleyin — rakamlar hikâyeyi anlatmaz, yorumunuz anlatır.
Başa Dön →

yazilimtestmuhendisligi.com — Nihat Ük

Bu içerik eğitim amaçlı hazırlanmıştır. © 2026

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir