Apache JMeter’da Fonksiyon Kullanımı
JMeter’da esnek ve sürdürülebilir test planları yaratmak için kullanışlı fonksiyonlar mevcuttur. Fonksiyonlar Sampler ve test ağacındaki diğer elamanların alanlarında kullanılabilir. Bu yazıda kullanışlı bazı JMeter fonksiyonlarını tanıtacağım.
Fonksiyonların temel çağrımı aşağıdaki şekilde olmaktadır:
${__functionName(parameters,..)}
Bazı JMeter fonksiyonları:
${__log(param1,param2,param3)}
log fonksiyonu verdiğimiz mesajla JMeter’da raporlama yapma aracıdır.
param1: Loglanacak mesaj içeriğidir; gereklidir.
param2: Log seviyesi belirtir. Varsayılan INFO’dur.
param3: Atılabilir metin
Örnek kullanım:
# Log a static message
${__log("http request made")}
# Log a variable value with a specific level
${__log(${message},DEBUG)}
${__time(param1, param2)}
time fonksiyonu çeşitli formatlarda o andaki zaman degerini verir. Hiç parametre verilmeden ${time} şeklinde de kullanılabilir. Herhangi bir format belirtilmezse, değer milisaniye cinsinden döner.
param1: SimpleDateFormat tipine göre format belirteceğimiz parametredir.
param2: Fonksiyondan dönen değerin atanacağı değişkenin ismini belirtir.
Örnek kullanım:
${__time(yyyy.MMMM.dd GGG hh:mm aaa)}
Çıktı Örneği: 2013.August.19 AD 02:37 PM
${__time(Y/M/dd)}
Çıktı Örneği: 2013/8/19
${__RandomString(param1, param2, param3)}
RandomString fonksiyonu belirtilen uzunlukta rastgele bir karakter dizisi yaratmaya yarar.
param1: Oluşturulacak karakter dizisinin uzunluğunu belirtir. Bu parametre zorunludur.
param2: Burada karakterler belirtilir ve bu karakterler kullanılarak rastgele karakter dizisi oluşturulur.
param3: Çıkan sonucun saklanacağı değişkenin ismi belirtilir.
Örnek kullanım:
${__RandomString(10)}
Çıktı Örneği: ıeqkk5gjjo
${__RandomString(10,kartaca)}
Çıktı Örneği: tarkaaraka
${__property(param1, param2, param3)}
property fonksiyonu JMeter’ın özelliklerini geri döndürür. Eğer özellik bulunamadıysa o özelliğin adı geri döner. Genelde mantıksal kontrollerde JMeter’ın özelliklerine göre test durumlarını işletmeye yarayabilir.
param1: Değerine bakılmak istenen özelliğin ismidir.
param2: Özelliğin değerinin saklanacağı değişkenin ismidir.
param3: Eğer özellik tanımlı değilse veya bulunamadıysa bu değer geri döndürülür.
Örnek kullanım:
${__property(user.dir,userstring)}
Değişken: ${userstring}
Çıktı Örneği: /home/ahmetcan/apache-jmeter-2.9/bin
${__property(hede,property,kartaca)}
Değişken: ${property}
Çıktı Örneği: kartaca
(hede diye bir özellik olmadığı için bizim atadığımız varsayılan değer değişkenimize atanıyor.)
Bir IF koşulu ekleyerek eğer kullanıcı dizini home/ahmetcan/apache-jmeter-2.9/bin ise sorguyu çalıştırsın istiyorsak bunu şöyle gösterebiliriz:
${__split(param1, param2, param3)}
split fonksiyonu verilen karakter dizisini belirli bir şablona göre parçalayacak olan fonksiyondur.
param1: Parçalanacak karakter dizisidir.
param2: Fonksiyonun çalışması sonucunda çıkan değerlerin saklanacağı değişkenin ismidir.
param3: Parçalama işleminin yapılacağı şablonu belirtir.
Örnek kullanım:
${__split(www.kartaca.com,url,.)}
Burada http://www.kartaca.com’u “.” işaretine göre ayırdık ve ayrılan herbir dizge aşağıdaki değişkenlerde saklanmış oldu: url_1 -> www, url_2 -> kartaca, url_3 -> com
${__machineIP(param1)}
machineIP fonksiyonu yereldeki makinanın IP adresini döndürür.
param1: IP adresinin atanacağı değişkenin ismidir.
Örnek kullanım:
${__machineIP(my_ip_address)}
Aynı şekilde makine adını almak istersek machineName fonksiyonunu kullanabiliriz.
Yerelimizdeki makinaya istek yapıp hangi URL’ye istek yaptığımızı da loglamak istersek şunu yapabiliriz: