JMeter Kurulum ve Kullanımı
JMeter kurulumu, örnek test senaryoları ve sonuçları üzerine
JMeter başta web uygulamalarına uygulanabilen testler olmak üzere, birçok testi gerçekleştirmeyi sağlayan bir yazılımdır.
Geçtiğimiz günlerde bir web uygulaması üzerinde performans testi yapmam gerekti, bunun için aklıma gelen ilk alternatif Postman oldu (https://www.getpostman.com/). Fakat biraz bakındıktan sonra Postman’in tam olarak istediğim şeyi karşılayamacağını ya da buna ulaşmak için çok fazla düzenleme ile uğraşmam gerektiğini farkettim (Newman CLI kullanıp, bash script ile otomize etmeye çalışmak gibi). Burada benim için en önemli kriter aynı anda birden fazla istek atabilmekti. Öneri üzerine JMeter’a baktım ve bunu yapmanın JMeter’da çok pratik olduğunu gördüm. Daha sonrasında kendimce biraz araştırıp, notlar alırken aldığım notları toparlayıp sizlerle paylaşmaya karar verdim.
Burada paylaştığım notlar JMeter’da deneme sürüşü yaparken aldığım notlar olduğu için, giriş seviyesinde ve kullanıma yöneliktir.
Notları paylaşmadan önce Türkçe kaynak var mı diye göz attığımda Gökhan Şengün’ün çok daha kapsamlı olan JMeter yazısını gördüm, onu da detaylı bilgi almak isteyenler için buraya ekliyorum (https://gokhansengun.com/jmeter-nedir-ve-ne-ise-yarar/).
Kurulum
Bu adresten binary dosyanı (apache-jmeter-5.0.zip) buradan indiriyoruz.
Binary dosyasını istediğiniz dizine taşıyın ve orada unzip edin. Eğer JAVA_HOME environment variable’ı düzgün set edilmişse, kurulum tamamlandı demektir. JMeter saf Java ile yazıldığı için Java geliştirme ortamının kurulu olduğu her ortamda kullanımı mümkündür.
Benim örnekleri kullandığım ortam: “Mac OS Mojave”
Test Çalıştırmak
JMeter’ın kendi sitesinde verilen çalıştırma yöntemlerine bu linkten ulaşabilirsiniz.
Bizim durumumuz için bin/ klasörüne gidip orada ./jmeter ile GUI mode’da başlatabiliriz, bizi aşağıdaki gibi bir ekran karşılayacak:
Hızlı bir test ortamı kurulumu yapmak için template’lardan faydalanabiliriz.
Open > templates > build-web-test-plan.jmx
Template açıldıktan sonra sol menüde bu test ortamının bileşenlerini görebiliriz. Kendi ihtiyaçlarımıza göre configure etmek için aşağıdaki adımları izlemeleyiz.
Konfigurasyon
Öncelikli olarak Scenerio 1 bileşeninde yapmamız gereken değişikler:
- Name
- Comments
- Number of Threads (users): Aynı anda kaç farklı istek atmayı istiyoruz? Bu özellik, istediğimiz sayıda kullanıcının isteklerini simüle etmemizi sağlayacak.
- Ramp-up Period (in seconds): Number of Threads’de tanımlamış olduğumuz kullanıcı sayısına ne kadar sürede ulaşmak istediğimiz. 100 kullanıcı verdik diyelim, Ramp-up Period’u 10'a set edersek saniyede 10'ar user istek atacak gibi. Buradan concurrency için daha detaylı bilgiye ulaşabilirsiniz.
- Startup Delay (in seconds): İsteği atmaya başlamak için ilk başta ne kadar beklememiz lazım. (5 saniye sonra istekler atılmaya başlayacak.)
Sıradan devam edersek, atacağımız isteğe göre bunları da konfigüre etmemiz gerekecek:
- HTTP Request Default: Advanced > timeout eklenebilir.
- HTTP Cookie Manager: options altında “Clear Cookies each iteration?” beklentiye göre seçilebilir.
- HTTP Header Manager: Gerekli header’ları direkt clipboard’umuzdan yapıştırabiliriz.
Daha sonra Home Page’e girip orada asıl request’i oluşturuyoruz. Aşağıdaki gibi gerekli yerlere bilgileri girdikten sonra requestimiz hazır olacak. POST request’i atabilmek için vermemiz gereken Body Data vs. gibi bilgileri de girebiliriz.
Son olarak Home Page section’ını genişletince altında örnek Assertion’ı, test case’i, göreceğiz. Bu test case’i de kendi isteğimize göre düzenleyebiliriz. Ben burada response’un 200: OK olmasını istiyorum.
Buna ek olarak yeni bir test case eklemek istersek, “Home Page” section’ına sağ tıklayıp Add > Assertion > … ile bunu gerçekleştirmemiz mümkün. Ben response time’ı test etmek için yeni bir assertion ekleyeceğim:
Bu bize response time test etmek için güzel bir template verecektir.
Testler ve Sonuçları
Testleri çalıştırmak için yukarıdaki “Run CMD+R” butonunu kullanabiliriz.
Testlerimizin sonuçlarını View Results Tree altında görüntüleyeceğiz. İstersek buradaki çıktıyı bir dosyaya CSV formatında yazdırmak mümkün. Bunun için View Results Tree > Write Results to file / Read from File’da yazmak istediğimiz path’i belirtmemiz yeterli olacaktır.
Testler çalıştıktan sonra en sağ üst köşede ne kadar sürdüğü, kaç tane thread’in aktif edilip çalışır durumda olduğu bilgilerini görürken, asıl pencerede test sonuçlarını göreceğiz. Burada başarısız olan testler kırmızı ile belirtilip, genişletilebilir bir link halinde olacaktır, tıklayınca altında fail eden test case (Assertion) ve sebebi yer alır.
Sonuç
Eğer dinamik, otomotize edilmiş performans testleri, yük testleri, davranış ve fonksiyonel testler yapmak istiyorsanız JMeter kurulumu ve kullanımı oldukça basit olan ve çok kolay konfigüre edilebilen bir yazılımdır.
Bu yazı sadece temel kullanımı ele alır, ve JMeter’ın bundan çok daha fazlasını yapabildiğini üzerine yazılmış güzel bir iki dökumandan anlayabiliriz, daha detaylı bilgi almak, diğer özelliklerini keşfetmek isteyenler için umarım bu yazı güzel bir başlangıç noktası olur.
Sevgiyle kalın.