15 Aralık 2020

APACHE JMETER İLE YÜK TESTİ

Apache Jmeter uygulaması yük, stres, performans ve fonksiyon testlerini koşturmak için kullanılan, açık kaynak kodlu test yazılım aracıdır.

1.    JMETER NEDİR?

Apache Jmeter uygulaması yük, stres, performans ve fonksiyon testlerini koşturmak için kullanılan, açık kaynak kodlu test yazılım aracıdır. Java programlama dili ile yazıldığı için çalıştırılmak istenen bilgisayarda Java Runtime Environment (JRE) veya Java Development Environment (JDK) kurulu olmalıdır.

Jmeter ile birçok farklı uygulamanın / sunucunun / protokol türünün yük ve performans testi gerçekleştirilebilir. Bunlardan bazıları;

  • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
  • SOAP / REST Web Servisleri
  • FTP
  • JDBC üzerinden veritabanı sürücüleri
  • LDAP
  • JMS ile Message-oriented middleware
  • E-Posta Protokolleri - SMTP(S), POP3(S) ve IMAP(S)
  • Native commands ya da shell scripts
  • TCP
  • Java Objects’dir.

2.    JMETER KURULUMU

Öncelikle Apache JMeter’ın çalışması için bilgisayarda Java SE 7 ve üzeri kurulu olmalıdır. Bu yüzden öncelikle https://www.oracle.com/java/technologies/javase-downloads.html adresinden Java’nın uygun versiyonu indirilerek Jmeter’ın çalıştırılacağı bilgisayara kurulmalıdır.

Java kurulumundan sonra http://jmeter.apache.org/download_jmeter.cgi adresinden tgz ya da zip uzantılı dosyalardan istenilen biri indirilir. İndirilen sıkıştırılmış dosya bir klasörde açılır. JMETER_HOME / bin klasöründe Windows da jmeter.bat ya da MacOSX ve Linux da jmeter.sh dosyaları çalıştırılarak uygulama açılır.

 

 

3.    ÖRNEK PROJE

Jmeter arayüzünde test planı adı belirlenir ve oluşturulacak proje jmx formatında kaydedilir.

Şekil 1.JMeter Arayüzü

JMeter’da test adımları manuel olarak da oluşturulabilmektedir. Ancak örnek uygulama üzerinde test adımları Jmeter’ın recording özelliği kullanılarak oluşturulacaktır.

File→Templates→Recording adımları takip edilerek yeni kayıt oluşturulur.

Şekil 2.JMeter Recording

Yeni kayıt eklendikten sonra ThreadGroup ve HTTP(S) Test Script Recorder alanları projeye eklenir.

Thread Group içerisinde;

  • Number of Threads(users): Sistemde bulunacak kullanıcı sayısı,
  • Ramp-up period (seconds): Belirlenen kullanıcıların sisteme dahil edilme süresi,
  • Loup Count: Her bir kullanıcının belirlenen süre içerisinde sisteme giriş sayısı belirlenir.

User Defined Variables içerisinde host ve scheme parametreleri belirlenir.

  • Host: Test işlemini gerçekleştireceğimiz web sitenin IP ya da host ismi
  • Scheme: Test işlemini gerçekleştireceğimiz web sitesine bağlanırken kullanılacak olan protokol bilgisidir.

Şekil 3.JMeter User Defined Variables Component

User Defined Variables da tanımlanan host ve scheme parametreleri HTTP Request Details içerisinde Protocol ve Server Name or IP alanlarında ${} içerisinde belirtilir. Bu test için Port Number alanını boş bırakılacaktır. Çünkü test edilecek web sitesi 443 portu ile çalışmaktadır ve https protokolü default olarak 443 portunu kullanmaktadır. Eğer web sitesi 443 portu dışında bir port ile çalışıyor olsaydı Port Number alanına, web sitesinde kullanılan port number yazılması gerekirdi.

Şekil 4.JMeter HTTP Request Defaults

Proxy ayarları sırasında kullanılacak proxy port numarası, HTTP(S) Test Script Recorder da Port alanına girilir. Bu proxy port numarası recording işleminde çalıştırılacak olan tarayıcının proxy ayarlarında kullanılacaktır.

Şekil 5.JMeter HTTP(S) Test Script Recorder

HTTP(S) Test Script Recorder çalıştırılmadan önce kullanılacak tarayıcı için proxy ayarları tanımlanmalıdır.

HTTP(S) Test Script Recorder da Start butonuna tıklanır. Bu işlem tarayıcı isteklerini yakalayan bir Jmeter proxy server başlatır. Bu işlem sırasında JMETER_HOME/bin klasöründe ApacheJMeterTemporaryRootCA.crt dosyası oluşacaktır. Tarayıcının proxy server ile iletişimi sırasında sertifika doğrulama hatası almaması için oluşan bu dosyanın tarayıcının güvenilir sertifika deposuna eklenmesi gerekmektedir.

Kayıt sırasında test edilecek tarayıcı ve sayfa açılır. Test adımları sırasıyla uygulanır. Kayıt işlemini sonlandırmak için Stop butonuna tıklanır.

Şekil 6.JMeter Recording Controller

Recording sonlandıktan sonra Thread Group altında Recording Controller’in oluştuğu görülür.

Şekil 7.JMeter HTTP Request

Recording Controller içerisinde tarayıcı üzerinde yapılan her işlem için ayrı ayrı test adımı oluşturulduğu görülür. Login işlemi sırasında kullanıcının username ve parola bilgisinin tutulduğu ilgili test adımının Parameters sekmesinde görülür. Bu test adımları tek bir kullanıcı için koşturulmuştur.

Şekil 8.JMeter CSV Formatı

Yük testi sırasında çok sayıda kullanıcının sistemde işlem yapması beklenir. Csv uzantılı dosya oluşturulup, içerisine test edilecek kadar username ve password bilgisi resimde görüldüğü gibi eklenir ve kaydedilir.

Şekil 9.JMeter CSV Data Set Config

Recording Controller da login test adımından önce CSV Data Set Config eklenir. CSV Data Set Config de kullanıcı bilgilerinin bulunduğu csv uzantılı dosyanın path adresi, Filename alanına yazılır. Kullanıcı dosyasının içerisine virgülle yazılan parametreler, Variable Names alanına yazılır. Delimiter alanına kullanıcı bilgilerinin ayrıldığı seperator yazılır. Oluşturulan örnek cvs dosyasında separator olarak virgül karakteri kullanılmıştır.

Şekil 10.JMeter HTTP Request Login

Login işleminin yapıldığı test adımında username ve password alanlarına CSV Data Set Config/ Variable Name alanında belirlenen değişkenler (csv dosyası içerisindeki parametreler) ${} formatı içerisinde yazılır.

Şekil 11.JMeter Kullanıcı Sayısı

Test koşturulurken sistemde 5 kullanıcı olacağı, csv dosyası içerisindeki kayıtlarda görülmektedir. Thread Group içerisinde Number of Threads alanına 5 yazılmalıdır. Ramp-up period alanına 5 kullanıcının sisteme kaç saniyede dahil olacağı yazılmalıdır.

Şekil 12.JMeter View Result Tree

View Result Tree de login test adımının 5 kullanıcı için koşturulduğu görülür.

4.    TEST RAPORLARI

JMETER_HOME / bin klasörü içerisine proje kaydedilir. Bin dizini içerisine Raporlar isimli yeni bir klasör oluşturulur. Bin dizininde komut ekranı açılır. Aşağıdaki komut çalıştırılarak ilgili dizin içerisinde raporların oluşturulduğu görülür.

Komut: jmeter -n -t examples/SahibindenYükTesti.jmx -l Raporlar/Raporlar.log -e -o Raporlar

Şekil 13.JMeter Raporlama Komut Ekranı

Raporlar dizini içersinde oluşan index.html dosyasına tıklanarak tarayıcı üzerinde test raporları görüntülenir.

Şekil 14.JMeter Rapor Ekranı

5.    KAYNAKÇA

         Sinem AKTAŞ