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:
${__fonksiyonİsmi(parametreler,..)}
Bazı JMeter fonksiyonları:
* ${__log(param1, param2, param3)}
log fonksiyonu verdiğimiz mesajla jmeterda raporlama yapma aracıdır.
param1 : loglanacak mesaj içeriğidir(gereklidir).
param2 : log seviyesi belirtir(varsayılan INFO’dur).
param3 : Throwable text
örnek kullanım;
${__log(“http request basladi”)}, $__log(${mesaj}, 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: Fonsksiyondan dönen değerin atanacağı değişkenin ismini belirtir.
örnek kullanım;
${__time(yyyy.MMMM.dd GGG hh:mm aaa)} -> 2013.August.19 AD 02:37 PM
${__time(Y/M/dd)} -> 2013/8/19
* ${__RandomString(param1, param2, param3)}
RandomString fonksiyonu belirtilen uzunlukta random 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)} -> ıeqkk5gjjo
${__RandomString(10, kartaca)} ->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,kullanicidizin)}
-> ${kullanicidizin} -> home/ahmetcan/apache-jmeter-2.9/bin${__property(hede,ozellik,kartaca)}
-> ${ozellik} -> 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 burasıysa sorguyu çalıştırsın bunun şöyle gösterebiliriz:
* ${__split(param1, param2, param3)}
split fonksiyonu verilen karakter dizinisi 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 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(ip_adresim)}
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: