Jmeter ile Selenium Kullanmak

Tufan Uyaroğlu
Vakıf Katılım Ar-Ge Merkezi
5 min readApr 17, 2024

Jmeter, yazılım testi alanında uzunca yıllar çalışmış birisi için isviçre çakısı gibidir. Her şey için kullanabilirsiniz. Yüzgeç takarsanız yüzer, kanat takarsanız uçar. Hem servis testlerinde hem web uygulaması testlerinde kullanırsınız. Hem otomatize test setleri oluşturur hem de performans ve yük testleri yaparsınız.

Java development yapar, JAR olarak paketleyip Jmeter içerisinden çağırıp çalıştırırsınız yada tüm projeyi Jmeter ile birlikte Azure veya Jenkins gibi CI/CD araçları üzerinden çalıştırırsınız. Hiç itiraz etmez Jmeter. :)

Ama bu yazıda Jmeter’a çok daha başka bir şey yaptıracağız.

Selenium kütüphanesini ekleyip UI otomasyonu yazıp çalıştıracağız. :)

Yapacağımız işlemleri aşağıda başlıklar halinde listeledim.

  1. Plugins Manager Eklenmesi ( eğer varsa bu adımı atlayabilirsiniz. )
  2. Selenium Web Driver’ın Jmeter’a Eklenmesi
  3. Chrome Driver Eklenmesi
  4. Jmeter’da Çalıştırılacak Konfigürasyonun Oluşturulması
  5. Örnek senaryonun çalıştırılması ve işlerlik kontrolü
  6. Senaryo yazımını hızlandırmak için plugin eklenmesi (Katalon Recorder)
  7. Katalon Recorder’dan alınan kodun WDS içerisine uyarlanması
  1. Plugins Manager Eklenmesi

Jmeter’da Plugins Manager olup olmadığını Options tabı altından kontrol edebilirsiniz.

https://jmeter-plugins.org/wiki/PluginsManager/

Bağlantıdan JAR dosyasını indirip > Jmeter’da lib/ext klasörü içine atıyoruz.

Sonrasında Jmeter’ı yeniden başlatalım.
Artık Options altında geldiğini görebileceğiz.

2. Selenium Web Driver’ın Jmeter’a Eklenmesi

Jmeter Plugins Manager içerisinde Available Plugins tabına geliyoruz.

Arama kutucuğuna Selenium yazdığımızda gelen Selenium/Webdriver Support’u seçip ;

Apply Changes and Restart Jmeter butonuna basıyoruz.

Böylece Plugins Manager ihtiyaç duyduğumuz paketleri Jmeter’a yüklüyor.

Not : Kütüphanelerin indirilmesi bağlantı/erişim hızına göre biraz zaman alabilir. Sabırlı olalım.

3. Chrome Driver Eklenmesi

Jmeter ve Selenium ile Browser arasında iletişimi sağlayacak olan driver’ları indiriyoruz.

https://chromedriver.com

Sonrasında aşağıdaki bağlantılardan kullandığımız sisteme uygun driver’ı indiriyoruz.

Örneğin M Serisi işlemcili Macbook için aşağıdaki bağlantı.

https://storage.googleapis.com/chrome-for-testing-public/123.0.6312.86/mac-arm64/chromedriver-mac-arm64.zip

İndirdiğimiz driver’ı Jmeter altında licenses klasörü içerisine kopyalayalım.

Not : Bu işlem sonunda Jmeter’ı yeniden başlatalım.

4. Jmeter’da Çalıştırılacak Konfigürasyonun Oluşturulması

Jmeter’ı çalıştırıp gerekli konfigürasyonlarımızı yapalım.

Test Plan > Add > Thread Group diyelim.

Sonrasında ; Thread Group > Add > Config Element > jp@gc — Chrome Driver Config

ve Thread Group > Add > Sampler > jp@gc — WebDriver Sampler

ve Thread Group > Add > Listener > View Results Tree

diyerek Config Element, Listener ve Sampler’ı mızı ekleyelim.

Config Element kısmının düzenlenmesi ;

Burada en önemli ihtiyacımız ; Config Element’e ChromeDriver yolunu göstermek.

Windows’ta daha kolay.

MAC’de tam olarak şöyle eklemek gerekiyor ;

Windows’ta C:/ den başlayacak şekilde pathi yazın

5. Örnek senaryonun çalıştırılması ve işlerlik kontrolü

Tüm ayarlarımızı düzgün yaptıysak eğer ; eklediğimiz sampler’ın düzgün çalışması gerekiyor.

Run butonuna bastığımızda ;

Chrome browser’ın açıldığını ve yukarıdaki “http://jmeter-plugins.org" adresine gittiğini görmeliyiz.

6. Senaryo yazımını hızlandırmak için plugin eklenmesi (Katalon Recorder)

Web uygulaması üzerinde yapacağımız işlemleri ( otomasyon senaryo yazım adımlarını ) hızlandırmak için, Chrome Web mağazasına giderek Chrome browser’a Katalon Recorder eklentisini kuruyoruz.

Bu eklentiyi kullanarak record ettiğiniz test adımlarını kod satırlarına dönüştürebileceksiniz.

Eklentiyi çalıştırdıktan sonra Record butonuna basarak adımlarımızı kaydetmeye başlıyoruz.

İşlemlerimiz tamamladıktan sonra Stop edip, ilgili session’da kaydedilen kısımları Export diyerek dışarıya aktarıyoruz. Dil ve Framework seçimimizi yapıyoruz. Java (WebDriver + JUnit )

Tüm kod bloğu içerisinde yalnızca işlem yapılan satırları içeren kısmı kopyalayıp alıyoruz.

7. Katalon Recorder’dan alınan kodun WDS içerisine uyarlanması

Kodun ihtiyacımız olan kısmını alıp Jmeter’da WebDriverSampler içerisinde ;

WDS.sampleResult.sampleStart()
......
WDS.sampleResult.sampleEnd()

arasında yer alan kısma yapıştırıyoruz.

Ancak bazı kısımlarda değişiklik ve ilaveler yapmamız gerekecek.

driver.get("https://www.amazon.com.tr/"); 
driver.findElement(By.id("twotabsearchtextbox")).click();
driver.findElement(By.id("twotabsearchtextbox")).clear();
driver.findElement(By.id("twotabsearchtextbox")).sendKeys("samsung t7");
driver.findElement(By.id("nav-search-submit-button")).click();
driver.findElement(By.id("sp-cc-rejectall-link")).click();

1 — driver yazan kısımlar ; WDS.browser olmalı

2 — By öncesinde org.openqa.selenium. eklenmeli

Yani kodumuzun nihai hali ;

WDS.sampleResult.sampleStart()
WDS.browser.get("https://www.amazon.com.tr/");
WDS.browser.findElement(org.openqa.selenium.By.id("twotabsearchtextbox")).click();
WDS.browser.findElement(org.openqa.selenium.By.id("twotabsearchtextbox")).clear();
WDS.browser.findElement(org.openqa.selenium.By.id("twotabsearchtextbox")).sendKeys("samsung t7");
WDS.browser.findElement(org.openqa.selenium.By.id("nav-search-submit-button")).click();
WDS.browser.findElement(org.openqa.selenium.By.id("sp-cc-rejectall-link")).click();
WDS.sampleResult.sampleEnd()

şeklinde olmalı

Not : Ekleyeceğimiz WD sampler’ları aşağıdaki gibi parçalara bölmek ve çalıştırmak da mümkün.

Senaryomuzu bu şekilde parçalara bölmek ;

Açık olan session içerisinde boşluk vermek, başka şeyleri kontrol edebilmek, başka işlemler yapmak, doğrulamalar veya tanımlamalar yapabilmek için bize fırsat verecek.

İlk ekleyeceğimiz sampler başlangıcında :

WDS.sampleResult.sampleStart()

Son ekleyeceğimiz sampler bitiminde :

WDS.sampleResult.sampleEnd()

satırını içermeli.

Çalışma Yönteminin Avantaj ve Dezavantajları

Avantajlar

Jmeter gibi test konusunda etkili ve başka yetenekleri de olan bir araçla bunları yapabilmek.

Örneğin bir web uygulamasında test yaparken öncesinde veya sonrasında ; database’e gidip sorgu çalıştıracak, bir servis metodu çağıracak veya Jmeter’ın yapabildiği birçok işle bunu kombin edebileceksiniz. Daha komplike işler yapmak mümkün olabilecek.

Dezavantajlar

WebDriver Sampler içeriği script yazmayı kolay kılacak bir editör formunda değil. Burayı daha çok bir editörle yazdığınız kodları çalıştıracağınız yer olarak görmelisiniz. Yine bir geliştirme ortamı veya fonksiyonel bir editörünüz olmasını tavsiye ederim. :)

Sonuç :

WebUI otomasyonu çalıştırmak için farklı bir yol ve yoğurt yeme şekli bu. Yazının başında da söylediğim gibi Jmeter çok fazla özelliği olan ve tüm test süreçlerini kolaylaştıran bir araç.

Büyük bir kitle Jmeter’i yalnızca “performans/yük” testi aracı olarak tanıyor. Ama o ; otomasyon, servis ve database testlerini de başarıyla yapacak yeteneklere sahip.

--

--