Oluşturulan yazılımların test edilmesindeki alanlardan birisi de ilgili yazılıma yük testi uygulamaktır. Yük testinden kastedilen ise bu yazılım canlı ortama geçtiğinde en fazla ne kadar istek kaldırabilir , amaçlanan request sayısını kaldırabiliyor mu yoksa server çöküyor mu gibi sorulara cevap bulmaktır.

Biz de bu yazıda temel seviyede bir yük testinin Apache Jmeter ile nasıl yapıldığına değineceğiz.

Apache Jmeter Nedir?

Apache JMeter Apache tarafından ücretsiz bir şekilde sunulan, web sitelerini, servisleri, performans ölçümlerini vs. yapmaya yarayan ve bunları grafiğe dökebilen bir yazılımdır. JMeter başlangıçta Apache Tomcat sunucusunun performans ölçümü için geliştirilirken sonraları bu proje açık kaynak haline getirilip bizlere sunulmuştur.

Hazırlık Aşaması

Öncelikle Apache JMeter’ın çalışması için sisteminizde Java SE 7 ve üzerinin kurulu olması gerekmektedir.

http://jmeter.apache.org/download_jmeter.cgi adresinden tgz ya da zip uzantılı dosyalardan birini indirin ve indrdiğiniz sıkıştırılmış dosyayı bir klasöre açın.

Akabinde terminal ya da cmd’yi açıp az önce klasöre çıkarttığınız yere gidin. O klasör içindeki bin klasörüne girin.

Ben OS X üzerinde bu testi anlatıyor olacağım. Bu nedenle ben bin klasörü içindeki jmeter.sh dosyasını çalıştıracağım. Windows’da ise .bat uzantılı dosyanın çalıştırılması gerekiyor.

Bu komutun akabinde JMeter çalışacak karşımıza şöyle bir ekran gelecek:

Uygulama Örneği

Şimdi biz de JMeter ile örnek bir yük testi uygulaması yapalım.

İlk olarak Test Plan’a sağ tıklayalım ve Add -> Threads (Users) -> Thread Group yolundan sistemi test edecek kullanıcı sayısı için ekleme yapalım.

Gelen ekrandaki input’ları şöyle dolduralım:

  • Ekrandaki Number Of Threads alanı kaç kullanıcı ile bu ilgili yazılıma yük testi uygulamak istediğinizi belirtir. Biz şimdilik 10 kullanıcı ile test yapalım.
  • Ram-Up Period alanı Number Of Threads alanında verilen kullanıcı sayısına kaç saniyede çıkılacağını belirtir. Biz 5 saniye dedik. Bu da 10/5 = 2’den her 5 saniyede bir sisteme 2 kullanıcının dahil edilmesi ve 5 saniye sonunda 10 kullanıcının sistem olmuş olmasını sağlar.
  • Loop Count alanı ise bu testin kaç kez tekrarlanacağını belirtir. Eğer forever dersek biz durdurana kadar testi devam ettirir. Ben loop count’a 2 dedim ve bu test 2 defa yapılacak.

Şimdi yük testi uygulayacağımız yazılım için tanımlama yapacağız. Thread Group’a sağ tıklayalım Add -> Sampler -> HttpRequest yolundan bir HttpRequest ekleyelim.

  • Ekranda Server Name or IP alanına test yapacağımız web sitesinin IP ya da domain name bilgisini yazıyoruz.
  • Port kısmına hangi port üzerinden erişeceğimizi yazıyoruz. 80 portu üzerinden erişeceğiz.
  • Method alanını da GET olarak bırakıyoruz.

Şimdi de test sonuçlarını izleyebilmek için eklemeler yapalım.

Yine Thread Group’a sap tıklayıp Add -> Listener kısmından Response Time Graph, View Results in Table, View Results Tree alanlarını ekleyelim.

Bu eklemelerin ardından üst ortadaki yeşil Start butonu ile testimizi başlatalım.

View Results In Table sekmesine baktığımda tüm testlerin başarı ile sonuçlandığını görüyorum. Demek ki test yaptığımız web sitesi ilgili şartları, yükü kaldırabiliyor.

Şimdi testimizi biraz daha büyütelim arkadaşlar. HTTP Request’ten Server Name or IP kısmını kod5.org olarak değiştirelim. Thread Group’a dönelim, Number of Threads’i 500 yapalım ve Ram-Up Period’u 20 yapalım. Loop count aynı kalsın. Bu bizim 1000 kullanıcı ile test yapacağımız anlamına gelir. Akabinde testi tekrar çalıştıralım.

Uyguladığımız yük testi gördüğünüz gibi birçok başarısızlıkla sonuçlandı. Şimdi user sayısını biraz düşürelim ve 100 yapalım. Ram-up periodu da 10 yapalım.

Testin çoğunluğu yine başarısızlıkla sonuçlandı arkadaşlar. Yani kod5.org bu yükü de tam olarak kaldırabilecek seviyede değil demek ki.

Şimdi kullanıcı sayısını 50’ye çekelim ve testi yeniden çalıştıralım.

Son olarak loop count’u 1 yapıp testi tekrar çalıştıralım.

Gördüğünüz gibi hala sorunlar var.

Ben user sayısını 25 yaptığımda testler sorunsuz tamamlandı arkadaşlar. 25’in üzeri için kod5.org yük testi bakımından sorunlu olmaya başlıyor.

Bu yazıda basitçe JMeter ile yük testini anlatmaya çalıştım arkadaşlar. Başka yazıda görüşene kadar sağlıcakla kalın.

Selam ve Sevgilerimle