JMeter ve Performans Testi

H. Eren Uygun
Innovile
Published in
5 min readJun 13, 2021

Selamlar,

Bu yazımda JMeter’ın ne olduğunu ve ilk testinizi nasıl hazırlayabileceğinizden bahsedeceğim. Hazırsanız başlayalım.

JMeter ilk olarak web uygulamaların test edilmesi amacıyla çıkarılmış bir uygulamadır. Daha sonradan yapılan geliştirmeler ile farklı fonksiyonları da test edebilecek seviyeye ulaştığı görülmektedir.

JMeter’ın çalışma mantığına baktığımızda şöyle bir açıklama yapabiliriz;

Web uygulamalamalarımızda kullanıcıların uyguladığı adımları program içerisine kaydeder ve bu kaydı sizin belirlediğiniz kullanıcı sayısında, belirlediğiniz döngüde ve sürede simüle ederek sizlere bir çıktı verir. Bu çıktıyı arayüz üzerinden bir özet dosyası olarak(.csv formatında ) veya Non-GUI modu ile html formatında elde edebilirsiniz. Bu bahsettiğimiz süreç daha çok sistem performansını test edeceğimiz zamanlarda kullanılacak bir test sürecidir. Bunun dışında fonksiyonel, yük ve stress testlerimiz içinde JMeter’ın etkin bir program olduğunu görülmektedir.

Kurulum İşlemleri

Öncelikle JMeter bir java programıdır. %100 java ile çalışmaktadır. Java Runtime Environment (JRE) veya Java Development Environment (JDK) kurulu olduğu sürece Windows, Linux veya Mac işletim sistemine sahip herhangi bir bilgisayarda sorun yaşamadan kullanılabilmektedir.

https://jmeter.apache.org/download_jmeter.cgi link içerisindeki sayfadan dosyayı indirmeniz yeterlidir. İndirilen dosyayı açtıktan sonra .bat uzantılı JMeter dosyasını çalıştırıyoruz. Bu dosya bize JMeter arayüzünü getirmektedir.

JMeter Kullanımı

JMeter arayüzünü çalıştırdığınızda yukarıdaki gibi bir ekran ile karşılaşmaktayız.

Test plan’a sağ click ile tıkladığımız zaman karşımıza yukarıdaki ekran görüntüsündeki seçenekler çıkmaktadır. İlk olarak Threads ( Users) içerisinden Thread Group ekleyerek başlıyoruz.

Thread Group içerisinde aktif olarak kullandığımız noktalara bakacak olursak “Action to be taken after a Sampler error kısmıdır”. Bu kısımda test süreci ilerlerken bir hata ile karşılaştıktan sonra programın nasıl bir süreç işleyeceğini seçiyoruz.

En önemli kısımlardan biri ise “Thread Properties” kısmıdır.

  1. Number Of Threads (users): Bu kısımda sisteme kaç adet kullanıcı simülasyonu yerleştireceğimizin kararını vermekteyiz. Burda aklımızda kalması gereken nokta arayüz üzerinde belli bir sayıdan sonra arayüzde donma olacak ve testiniz tamamlanamayacaktır. Eğer böyle bir durum ile karşılaşırsak testimizi Non-GUI (command Promp ile) modunda çalıştırmamız gerektiğidir.
  2. Ramp — up period (seconds): Burada bir saniye durup düşünmemiz gerekmektedir. Simülasyon gerçekleştiriyor olsak bile herhangi bir sisteme bir anda 1000 kişinin girmesi gibi bir durum gerçekleşmemektedir. Tabi burada şöyle düşünebilirsiniz, bir alışveriş sitesinde binlerce onbinlerce insan aynı anda giriş yapabiliyor. Fakat şöyle bir durum var bilgisayarlarımızın, serverlarımızın hızını düşünecek olursak yapılan iş hızları milisaniyelere kadar küçülmektedir. Burada saniyenin en küçük birimine karşı aynı anda giriş oluşması anlamına gelmektedir. Birde bunun dışında jmeter’ın test süreci içerisinde kullanılan bilgisayar ve ya server’ın ROM’unu (memory) kullandığını unutmamak da gerekir. Bu sebeple burada gerçekçi süreler kullanmamız gerekmektedir. Burada sisteme 1 saniye içerisinde kaç kullanıcı girdiğini anlamak için şu hesap yapılır: “ Number of Threads (users) / Ramp — up Period (seconds) “ hesaplaması yapılır. Yani bir örnekle açıklayacak olursak eğer 1000 kullanıcının sisteme gireceği bir testte ramp — up Period (second) 20 seçecek olursak sisteme her saniye 50 kişi gireceği anlamına gelmektedir.
  3. Loop Count: Bu kısımı örneklendirerek gidebiliriz; sistemde test başladığı zaman bütün kullanıcıların sistemden çıktığı bir süre vardır. BÜtün kullanıcılar sistemden çıktığında test tamamlanmış olur fakat siz sisteminizin ne kadar zorlamak istiyorsanız kullanıcıları o kadar tekrarda sisteme sokabilirisiniz. Yani loop count’a 3 girerseniz kullanıcı aynı işlemi 3 kez tekrarlar ve ondan sonra çıkış yapar. Fakat bu 1000 kullanıcılı bir testi 3000 kişi girmiş gibi test ettiğiniz anlamına gelmiyor elde edeceğiniz sonuçlar yine 1000 kişilik bir test sonuçları olacaktır. Çünkü bir kullanıcının işi bitmeden tekrar sisteme girmicektir. Yani sistemde maksimum 1000 kullanıcı yer alacaktır.

Threads Group içerisine ekleyeceğimiz diğer maddeler ise Config element’lerdir.

  • Add > Config Element > HTTP Request Defaults
  • Add > Config Element > HTTP Cookie Manager
  • Add > Config Element > HTTP Cache Manager

Bu işlemleri gerçekleştirdikten sonra şimdi bu config elementlerin ne işe yaradığına bakalım.

HTTP Request Defaults, test planımız sürecinde kullanacağımız bütün requestlerin default değerlerini kaydedebilmemize yarayacaktır.

HTTP Cookie Manager, JMeter’ın web sunucudan gönderilen cookie’leri almasını ve sonraki Request’lerde web sunucuya göndermesini sağlayacaktır.

HTTP Cache Manager, JMeter’ın web sunucu tarafından HTTP Header’da set edilen Cache direktiflerine uymasını ve Cache kontrolü bakımından bir browser gibi davranmasını sağlayacaktır. Örneğin, ilk Request sonucunda sunucudan çekilen bir JavaScript dosyası server tarafından bir saat boyunca Cache’lenebilir olarak ifade edilmişse JMeter tarafından ikinci Request’te aynı JavaScript dosyasının gerekli olduğu durumda sunucudan istenmeyecek ve lokal olarak Cache’lenen versiyon kullanılacaktır. Bu da testin gerçeğe yakın olmasını sağlayacaktır. Eğer testi HTTP Cache Manager kullanmadan yaparsak normal senaryoda browser tarafından Cache’lendiği için sunucudan istenmeyen kaynaklar JMeter tarafından istenecek ve sunucu açısından test koşullarının normal koşullardan daha zor olmasına ve testin gerçeklikten uzaklaşmasına neden olacaklardır.

Daha sonra Thread group üzerine sağ tıklayarak Add> Sampler > HTTP Request ekleyerek ilk requestinizi ekleyebilirsiniz.

Burada daha önceden ayarlamış olduğumuz HTTP Request Defaults içerisindeki bilgiler otomatik olarak gelecektir. Gitmek istediğinizi path’i buraya girdikten sonra ilk testiniz için hazır olacaksınız. Burada dikkat edilmesi gereken nokta ise requestinizin türüdür. Get mi post mu ya da farklı bir istek mi olduğunun ayrımını yapabilmeliyiz.

Son olarak Thread group’a yine sağ tıklayarak listener kısmı içerisinden View Results Tree’yi seçiyoruz. View results tree sayesinde test sonucunda testimizde gerçekleşen hataları görebiliyoruz. Bu hataların hata koduna ve html’ine kadar görmemizi sağamaktadır.

Bu yazıyı şimdilik burada sonlandırıyorum. Şunu söylemeliyim ki bu test hazırlık süreci içerisinde yer alan en uzun süreçti. Fırsat bulduğumda hazırlayacağım ilk yazıda sizlere HTTP(S) Test Script Recorder’dan ve bu eklentinin kullanımından bahsedeceğim.

Okuduğunuz için teşekkür eder herkese sağlıklı, güzel günler dilerim.

Faydalandığım ve sizlerinde faydalanabileceğini düşündüğüm kaynaklar :

http://www.proven.com.tr/tr/43617/Performans-Testine-Ilk-Adim-JMeter-ile-Yuk-Testi

https://www.blazemeter.com/jmeter

--

--