1. JMETER ile Web Uygulamalarında Yük,
Stress ve Performans Testi
Uygulamaların (web siteleri, web servisleri vb) gerçek kullanıcılar ile etkileşime geçmeden önce bazı
öngörülen performans değerlerine ulaşıp ulaşmadığını tespit etmek ve kullanılabilirlik sınırlarını belirlemek
için yapılan birtakım testler, yük, stress ve performans testi olarak adlandırılır.
Aralarında ufak farklılıklar olsa da bu testler, “uygulamam aynı anda kaç kullanıcı ile etkileşimde sorunsuz
şekilde hizmet verebiliyor” sorusunun cevabını bulmaktır.
Önemli olan diğer konu tüm bu hizmetin hangi altyapı imkanları ile verileceği.
Performans testleri, önceden belirlenen servis altyapı, kaynak ve imkanlar göz önünde bulundurularak
maksimum değeri elde etmek veya kabul edilen yani önceden belirlenen performans hedefi için nasıl bir
altyapıya ihtiyaç olduğunu belirlemek için de yapılır.
Bu servis altyapısı temel olarak;
-Bandwith miktarı
-Donanım (kaynak) miktarı
-Lisans ihtiyacı
Unsurlarından oluşmaktadır.
Bu süreçte gerçeğe yakın en doğru sonuçları almak için etkili bir Web Performance Test aracına ihtiyaç
duyulur. Gerçeğe yakınlık için birden fazla farklı test senaryoları ile uygulama test edilerek, HTTP yanıt
süreleri, kullanılan kaynakların artış-iniş miktarı, memory leak izlenimi gibi elde edilen test sonuçlarıyla
raporlar analiz edilir ve mantıksal bir davranış aranır.
Test senaryoları şu şekilde olabilir:
-Belirli bir sayıda sanal kullanıcının uygulama üzerinde random veya belirli bir gecikme süresiyle site
linklerine tıklaması.
-Belirli bir sayıda sanal kullanıcının hepsinin aynı anda belirli bir site linkine tıklaması.
-Sayısı artan şekilde sanal kullanıcının site linklerine tıklaması.
-GET harici, POST içeren linklere sanal kullanıcıları username&pass ile log in edilerek site linklerinin test
edilmesi.
Tüm bu test senaryolarının imkanını sağlayan Apache Jmeter oldukça etkili ve gerçekçi test aracıdır.
Jmeter ile PHP, ASP.NET gibi dillerde yazılmış web uygulamaları stress ve yük testine tutulabilir. Linux ve
Windows platformlarına kurulabilir.
2. http://jmeter.apache.org/ adresinden güncel sürümlerine ulaşılabilir.
Jmeter, web stress&performans test sunucusu olarak ayrıbir sunucuya kurulup çalıştırılması daha uygundur.
GUI bazlı ve komut satırından test senaryoları çalıştırılabilir. Bunlar arasındaki kullanım farkını açıklıyor
olacağız.
1- GUI ile JMETER çalıştırma:
Test senaryosu hazırlamak için BIN klasörü altındaki jmeter.bat dosyasını çalıştıralım:
Bir adet hazır Test Plan karşımıza gelir.
İlk olarak kullanıcıları belirlemek için Thread Group ekliyoruz.
3. 100 kullanıcı ile test etmeyi tercih ediyoruz.
Ramp-Up Periyot değeri farklı varyasyonlarda testler için önemli bir değer. Saniye türünden girilen değer
ile kullanıcı yükünün ne kadar sürede artarak devam edeceğinin belirtilmesini sağlar.
Sonra test edilecek URL’yi belirlemek için Sampler ekleyeceğiz. Sampler, HTTP Request olacak.
4. Server name (site adı) ve Path kısmına (burada anasayfayı göstermek için / kullanıldı) /urlismi-
urlismidevam.html benzer tanım giriyoruz.
Bir de rapor grafiği oluşturalım. Listener ile Response Time grafiği ekliyoruz.
5. Test senaryosunda kullanılacak bir çok unsur ve seçenek var. Bu şekilde en basit haliyle start edelim.
Grafikten görüleceği üzere testtekullanılan uygulamada anlık 100 kullanıcı ile sonuç iç açıcı değil. 11 saniye
süren response time’ları görüyoruz.
2- Komut Satırı ile JMETER çalıştırma:
Eğer testler daha fazla kullanıcı ve URL’ler ile yapılacaksa (örneğin 10000 anlık kullanıcı) testin performans
probleminin önüne geçmek için Jmeter komut satırından parametrelerle çalıştırılmalı. Response Time
6. haricinde başka Listener’lar ile uçtan uca raporlama için GUI modda Jmeter fazlaca RAM ve CPU
tüketmekte.
GUI modda istenen değerleri girdikten sonra bu defa start demeden bu test planını kaydedelim. (BIN
klasörünün altında kopyalayacak)
Ek olarak JMeter’a kullanabileceği max RAM ayarı yapalım.
Jmeter klasöründe – BIN klasörünün altında jmeter.bat dosyasını notepad ile editleyelim.
Aşağıdaki satırı bulup default değeri 4GB, 8GB, 16… olacak şekilde değiştirelim.
set HEAP=-Xms16384m -Xmx16384m
Şimdi Jmeter’in bulunduğu path’te BIN klasörüne komut satırından ulaşalım.
Burada şu komutu çalıştıracağız:
jmeter -t testplan.jmx -n -l c:testplan.csv
jmx dosyasında test senaryosu, oluşacak testplan.csv dosyasında ise test sonuçları çıkacak.
csv dosyasını okumak için test bittikten sonra Jmeter’ı GUI modda açarak;
Response Time adlı listener’a gözat ile dosya konumunu gösteriyoruz.
7. Raporu elde etmiş olduk.
Jmeter, çeşitli test senaryo-varyasyonlarda kullanılabilecek etkili ve gerçekçi bir stress aracıolup ücretsizdir.