Jmeter Testlerinde Assertion Kullanımı

Buse Kaya
Odeal-Tech
Published in
5 min readApr 21, 2020

Merhaba arkadaşlar,

Bildiğiniz üzere Jmeter en çok kullanılan opensource bir tool’dur. Ancak Jmeter aynı zamanda feature testleri içinde çok sık kullanılmaktadır. Bugün ki serimizde Jmeter ile feature testleri yaparken Assertion’ların kullanımı hakkında sizleri bilgilendireceğim.

Testlerimizi yaparken beklediğimiz sonucu verip vermediğinin kontrolünü yapmamız gerekmektedir. Bunu ise Jmeter’in bize sunduğu Assertion’lar ile yapacağız. Görevine göre farklılaşmış bir çok Assertion türü bulunmaktadır. Her bir Assertion farklı bir sonuç elde etmek için oluşturulduğu için, bu Assertion’ları nasıl, ne için kullanılacağını anlamak ilerleyen aşamalar için önemli bir adımdır.

Biz en sık kullanılan aşağıdaki Assertion’ları öğreneceğiz:

  • Response Assertion
  • JSR223 Assertion
  • Duration Assertion
  • Size Assertion
  • JSON Assertion

Jmeter Assertion’ları Nedir ve Neden Kullanmalıyız ?

JMeter Assertion’ları, bir kullanıcının JMeter yanıtının aldığı kriterleri beklenen ölçütlerle eşleştirdiğini doğrulamasına izin veren bir test bileşenidir. Kullanıcının hedef uygulamadaki tutarsız veya beklenmedik yanıtlardan haberdar olmasını sağlarlar. Ve otomasyona bağlı bir şekilde çalışmasını sağlar.

Bu eğitimde ise en çok tercih edilen 6 JMeter Assertion’larına değineceğiz.

Response Assertion

Response Assertion en çok kullanılan assertion’lardan biridir. Hedef projenizin dönen cevaplarına(response) bu assertionlar eklenebilir. Cevap içerisinde gelen; Text, response kodları veya response header gibi değerlerde görmeyi umduğunuz dataları Response Assertion sayesinde kontrol edebilirsiniz.

Gönderdiğimiz bir isteğin(request), istenen metni döndürüp döndürmediğini hızlı bir şekilde doğrulama imkan sunar (kayıt işleminden sonra kayıtın onayı gibi). Ayrıca, hedef projenizden dönen yanıt kodlarının (400,503,504 vb.) doğrulunu kontrol edebilirsiniz.

Mesela, https://medium.com/@buseeky adresine bir istek attığımızda, dönecek olan response bilgilerinin doğrulunu kontrol edebiliriz. Field to Test alanında, dönen responsedaki hangi değeri karşılaştırmak için kullancağımızı belirliyor olacağız. Ben bu test için dönen cevap içerisinde yer alan “Response Message” parametresinin üzerinden testimizi yapmayı seçtim.Jmeter arayüzü içersindeki Patterns to Test alanında ise vereceğimiz kontrol datasının dönen response içinde nasıl kontrol edildiğini gösterir. Aşağıda bahsetmiş olduğum örneği görebilirsiniz. Testimiz şunu yapacak; yukarıda belirttiğimiz siteye istek atıp response message’ın OK dönüp dönmediğine bakacak. Eğer OK dönmüş ise success, OK dışında bir message içinse fail edecektir.

JSR223 Assertion

JMeter’da biraz daha tecrübeli olan kullanıcılar, karmaşık test ihtiyaçları için JSR223 Assertion’ın onlara sunduğu esneklik daha çok kullanabilirliğini arttıracaktır. Bu assertion’ı kullanabilmek için Groovy dili bilgisi gerektirir. Doğru komut dosyası çalışırken, yanıtların istenen kalıplarla eşleştiğini doğrulamak için karmaşık dönüşümler gerçekleştirebilir ve yanıtları ayrıştırabilirsiniz. Diğer assertionlardan tek fark performanstır. JSR223, Groovy dili ile birlikte, yerel Java kodu ve Beanshell ile neredeyse aynı performansı verirken, diğer dillerde performans kısıtlamaları vardır. Daha dinamik ve hızlı testler istiyorsanız Groovy ve Beanshell kullanabilirisiniz. Fakat JSR223 Assertion, Beanshell Assertion’dan daha hızlıdır.

Bir örnek yapmak gerekirse, bizim testimizden beklentimiz response message’dan dönecek olan cevap Not Found olduğu zaman test case’in fail etmesidir. Aşağıda bunu yapan kod parçacığını görebilirsiniz.

Ben fail sonucunu görmeniz için fail edecek bir case oluşturdum. Aşağıda göreceğimiz resimde fail ederse göremeyi beklediğimiz görüntü olacak. Ben sizinle gitHub hesabım üzerinden bütün assertionlar için kodları paylaşıyor olacağım. Oradan indirerek kendiniz de deneyip aynı sonucu aldığınızı görebilir ve inceleyebilirsiniz.

Duration Assertion

Duration Assertion, server response’larının ne kadar süre içinde alındığını test eder. Belirtmiş olduğumuz süreden daha uzun sürdüğü takdirde testimiz hata verir.

Örnekleyecek olursak; https://medium.com/@buseeky adresine attığımız istediğin bize maksimum 1000 milisaniye içinde dönmesini bekliyoruz. Server’a attığımız istek 1000 milisaniye içinde döner ise test case geçer, aksi takdirde test durumu başarısız olur. Response’da Load Time’dan servera atmış olduğunuz isteğin kaç milisaniyede döndüğünü görebilirsiniz.

Size Assertion

Size Assertion ise response boyutunu byte değerlerinde limitlerimiz dahilinde testini gerçekleştirmemizi sağlar. Boş bırakıldığı zaman ise hata olarak bildirilmek yerine 0 bayt olarak bildirilir.

Bu size’lar;

Be equal to : verilen değerin birebir eşit olmasını istediğimiz durumlar için kullanırız.

Greater than : verilen değerden daha büyük olmasını istediğimiz durumlar için kullanırız.

Less than : verilen değerden daha küçük olmasını istediğimiz durumlar için kullanırız.

Or not equal to : verilen değerden farklı olmasını istediğimiz durumlar için kullanırız.

Örneklersek ; https://medium.com/@buseeky adresine attığımız istekten dönen response’un boyutunun değeri 100000 byte’dan küçük eşit olduğu taktirde test case geçer, aksi takdirde test durumu başarısız olur. Response’da Size in Bytes’dan servera atmış olduğunuz istek sonucu dönen response boyutunun kaç byte olduğunu görebilirsiniz.

JSON Assertion

JSON Assertion, bir JSON response doğrulamanızı sağlar. En çok tercih edilen assertionlardan biri budur ki hali hazırda benim de en çok tercih ettiğim assertion’dır.

Örnek bir json response’nu ele alalım;

Buradaki response’da status ve firstName için dönen değerleri kontrol edelim. Bu değerleri buradan çekmek için kullanacağımız dataları öncelikle hazırlamalıyız.

  • status için $.Result.status,
  • firstName için $.Result.merchant.firstName kullanmalıyız.

Assert JsonPath Exists: Response’dan istediğimiz datayı çekmek için yukarıda yazdığımız değerleri yazmalıyız. ($.Result.status, $.Result.merchant.firstName vb.)

Additional Assert Value: Eğer ki bu checkbox’ı seçerseniz Expected Value’a girdiğiniz değere eşit olacağını bildirmiş oluruz.

Expected Value: Beklediğimiz değeri girmeliyiz. (OK, Buse vb.)

Bu blog’umuzun ikinci serisi olan yazı için çok uğraştım. Umarım sizlerde beğenirsiniz ve faydalı bulursunuz. Burada bahsettiğim assertionlar dışında anlatmamı istediğiniz ya da daha detaylı öğrenmek istediğiniz konular için yorum atabilir ya da mail adresimden bana ulaşabilirsiniz. Belirleyeceğimiz konular için bir sonraki serilerde de o konulara açıklık getirebilirim. Tekrar görüşmek üzere.

--

--