JMeter ile Performans Testi
Ugur Saglam
Last updated
Ugur Saglam
Last updated
Herkese merhaba,
Bu yazımda sizlere Apache JMeter hakkında bilgi vereceğim.
Apache JMeter, uygulamarımızın performansını ölçmek ve analiz etmek için kullanabiliceğimiz bir açık kaynaklı test aracıdır. JMeter ile hedef sunucuya istek gönderip isteğe bağlı olarak çok sayıda kullanıcı varmış gibi simüle ederek uygulamanın performansını ve işlevselliğini test eder. Bu testler ile beraber uygulamamızın yük altında nasıl çalıştığını, hangi zaman aralıklarında hata ile karşılaşıldığı ve yük altında stabil olarak çalışabilip çalışmadığı gibi bir çok bilgiyi edinmemizi ve bunu raporlayabilmemizi sağlar.
Adım 1
JMeter ‘ı yükleyebilmek için ilk öncelikle Java sdk yüklememiz gerekmektedir. JMeter sistem gereksinimi için JDK 1.6 veya üstü yeterlidir.
Aşağıdaki linkten indirme işlemini gerçekleştirebirsiz.
Eğer bilgisayarınızda java yüklüyse ve versiyonunu kontrol etmek istiyorsanız komut satırına sizin sisteminize uyan komutu çalıştırıp öğrenebilirsiniz.
Windows: c:\> java –version
Linux: $ java –version
Mac: machine: $ java –version
Örneğin;
Kurulumu tamamladıktan sonra kurulumun başarılı olup olmadığını yine yukarıdaki java –version komutu ile kontrol edebiliriz.
Adım 2
JMeter ‘ın son sürümünü aşağıdaki linkten indirebilirsiniz.
Adım 3
JMeter ‘i kuralım;
İndirdiğimiz zip dosyasını çıkartalım. Sizlere içindeki klasörlerin neleri içerdiğini aşağıda açıklanmıştır.
/bin : JMeter’i başlatmak için kullanılan JMeter komut dosyasını içerir.
/docs : JMeter dökümantasyon dosyalarıdır.
/extras : İlgili ek dosyaları içerir.
/lib/: JMeter için gerekli Java kütüphanelerini içerir.
/lib/ext : JMeter ve protokoller için temel .jar dosyalarını içerir.
/lib/junit : JMeter için kullanılan Junit kütüphanesidir.
Adım 4
JMeter’I 3 farklı modda başlatabiliriz.Bunlar;
GUI Modu
Server (Sunucu) Modu
Command Line (komut satırı) Modu
JMeter’i GUI Modu ile Başlatma
JMeter ‘ın bulunduğu klasörün içindeki bin klasörü altındaki sisteminize bağlı olarak aşağıdaki dosyalardan birini çalıştırmalısınız.
Windows : jmeter.bat
Linux : jmeter.sh
Mac : jmeter.sh
Windows için jmeter.bat dosyasını çalıştırıyoruz ve JMeter GUI mod ile başladığını görebiliriz.
JMeter’i GUI Olmayan Modu ile Başlatma
1-JMeter’i Server Modu ile Başlatma
Sunucular, client makinelere oranla uygulamalarımıza daha çok stres uygulayabilirz. Tek bir JMeter istemcisi ile birden fazla jmeter makinesini control etme imkanı sağlar. JMeter’i uzaktan çalıştırarak, birçok alt uç bilgisayar arasında bir testi çoğaltabilir ve daha büyük bir yük simüle edebilirz.
JMeter’i sunucu modunu başlatmak için, bat dosyasını aşağıdaki şekilde çalıştırmalıyız. (jmeter-server.bat)
C:\Users\ugur.saglam\Downloads\apache-jmeter-5.5\apache-jmeter-5.5\bin>jmeter-server.bat
2-JMeter’i Komut Satırı Modu ile Başlatma
JMeter GUI modda çalışırken çok fazla Memory ve CPU tüketebilir. Bu sebepten dolayı testimizi olumsuz etkileyebilir ve doğru sonuçlar alamayabiliriz. Bunu engellemek için GUI olmayan modda çalıştırabiliriz. Örnek olarak;
JMeter ile performans testi yapmak için Jmeter GUI ‘yi açıp test planı oluşturmalıyız. Jmeter’da test planları .jmx formatında kaydedilir ve saklanır. Test planına yeni bir element eklemek için test planı alanında sağa tıklanır. Add listesi altından yeni bir element seçilir ve test planına eklenir. Testimizi yapmadan önce uyglamamızın yükü ne kadar olacak ? Kullancı sayısı en ortalama ve en fazla kaç kişi olacak? gibi soruları cevaplamamız gerekir. Test planımızın ismini belirleyip Thread oluşturarak işe koyulalım.
Thread Group: Her thread aslında test edilen uygulamayı kullanan bir kullanıcıyı temsil eder. Temel olarak, her thread server’a bir gerçek kullanıcı isteği simüle eder.
Action to be taken after a Sampler error: Hata oluşması durumunda ne yapılmasını istediğimizi seçtiğimiz alandır.
Continue: Testin bir sonraki adımına ilerlemesini sağlar. Performans testlerinde bu seçeneği daha çok kullanırız.
Stop Thread: Geçerli thread ‘i durdurur.
Stop Test: Testi durdurur.
Number of Threads (users): Hedef adrese kaç kullanıcı isteği olacağını belirlememize yarar.
Ramp-up period (seconds): Belirlenen kullanıcı sayısının saniyede kaç istek atacağını ve testi bitirme süresini belirlediğimiz alandır.
Loop Count: Test senaryolarını kaç kez koşacağının belirlendiği alandır.
Thread Properties i görseldeki gibi ayarladım. 100 kullanıcı ile 10 istek 1 kez yapacaktır.
HTTP Request: Web sunucusuna request göndermemizi sağlayan samplerdir. Sampler; JMeter’in belirli sunuculara istek göndermesine yarar.
HTTP Request Defaults: Request işleminde varsayılan ayarları belirleyebilmemize yarar.
HTTP Request Defaults ve HTTP Request ekranlarında istek yapacağımız adresi, portu ve protocol’ü belirtelim.
Şimdi Listener (Yapılan isteklerin sonuçlanı görüntülemeye yarar.) ekleyelim.
Şimdi Ctrl + R tuşlarına ya da yukarıdan yeşil oynat butonuna basarak ilk testimizi başlatalım.
Test sonuçlarımızı bu Listener’lardan görebiliriz.
Şimdi de testimizde kullanabileceğimiz diğer özelliklere göz atalım.
User Defined Variables: Bu ekranda test senaryolarında kullanacağımız sabit değişkenlerimizi belirleyebiliriz.
Simple Controller: Testlerimizi klasör gibi ayırmamıza yarar.
Aggregate Graph: İsteklerimiz sonuçlarını görebileceğimiz bir başka listenerdır.
Duration Assertion: İsteğimiz kaç saniyede gerçekleşmesini istiyorsak onu belirliyoruz. Belirlenen saniyeyi geçerse fail oluyor.
JMeter’da GUI mod ile yapılan testler sonucunda bazen doğru veriler gösteremeyebiliyor. Bu yüzden test sonuçlarımızı rapor haline çevirmek için GUI mod olmadan test senaryolarımızı koşmalıyız. Bunun için;
Örnek olarak;
Cmd’yi yönetici olarak çalıştırın. Komut satırına şu komutları kendinize göre yazabilirsiniz.
jmeter -n -t "C:\Users\ugur.saglam\Downloads\jmeter test\TestDemo.jmx" -l "C:\Users\ugur.saglam\Downloads\Result1.csv" -e -o "C:\Users\ugur.saglam\Downloads\Reports"
-n = JMeter’in komut satırı modunda koşulacağını belirtir.
-t = Oluşturulan jmeter(.jmx) dosyasının adresini belirtir.
-l = Sonuçları içericek olan csv dosyasının nereye oluşturulacağının adresini belirtir.
-e -o = hmtl raporunun hangi klasör isminde nereye oluşturulacağının adresini belirtir.
Excel ve Html raporumuzu oluşturmuş olduk.
Yazımızı okuduğunuz için teşekkür ederiz. Bir sonraki yazımızda görüşmek üzere. Herkese keyifli ve sağlıklı haftalar :)
Uğur Sağlam
Arksoft Bilişim