Jmeter Assertions Kullanımı

Furkan Tunay
Vakıf Katılım Ar-Ge Merkezi
5 min readDec 19, 2023

Jmeter serimin 3. yazısında Assertion kullanımını örnekler ile inceleyeceğiz. Assertionlar, testlerin belirli kriterlere uyup uymadığını kontrol etmek için kullanılır. Response Code: 200 her zaman yeterli olmayacaktır. Başarılı gözüken bir API, beklediğiniz cevabı dönmemiş olabilir. Responseları kontrol etmek ve yönetmek için assertionlardan faydalanılır.

  • Jmeter içerisinde bir çok assertion mevcuttur. Response Assertion, Duration Assertion, Size Assertion, Json Assertion en çok kullanılan assertionlardır.
  • Aşağıda assertionların listesini ve nasıl eklenebileceğini görebilirsiniz.
  • Assertion örnekleri için bir önceki yazımda oluşturduğum jmx ve API leri kullanacağım.
  • JMX’te yer alan 4 API’yi çalıştırıp, responselarını inceleyelim.
Users Apı Response

Response Assertion

Users API için response assertion ekleyelim.

Response assertion içerisinde 3 ana tab görülüyor. “Apply To”, “Field to Test” ve “Patterns to Test”.

  • Apply to ile nerede kontrol sağlanacağı seçilir. Main sample, hem main hem de sub-sample veya sadece sub-sample kontrol edilebilir.
  • Fied to Test ile Request, Response ve bunlara ait body, headers gibi alanlardan hangisinin kontrol edileceği seçilir.
  • Patterns to Test: Seçili alanda beklenen beklenen veya beklenmeyen mesajlar eklenir.
  • Text Response’da, substring olarak kontrol sağlayacak şekilde; “gender” ve “name” ifade ekledim. Bu şekilde response içerisinde iki ifadeyi beklediğimi belirtmiş oldum.
  • Koşum gerçekleştirdiğimde, Users API’nin success döndüğünü görebiliriz. Çünkü bu iki ifade response içerisinde yer alıyor.
  • Son koşum öncesi ise “Not” seçerek “gender” ve “name” ifadelerini response içerisinde beklemediğimi belirttim. Koşum gerçekleştiğinde Users API’nin failed olduğunu ve Assertiona takıldığını View Results Tree üzerinde görebiliriz.
Assertion Message

Bu örnekteki gibi response içerisinde beklenen veya beklenmeyen mesaj kontrolleri yapılabilir.

  • Response Assertion içerisinde Field To Test: Response Code seçip status code kontrolünü sağlayalım.
Response Code Assertion

200 ve 201 codelarını ekledim ve “Or” seçerek iki mesajıda kabul ettiğimi belirttim. Bu koşul altında testimizi çalıştıralım.

Response Code

Users API, 201 mesajını döndüğü için assertion başarılı kabul etti ve sonuç succes gözüktü. Assertion içerisinde 201 dışında bir code ekleseydim Users API failed olacaktı.

Assertiondaki codeları 200 ve 401 yapıp çalıştırdığımızda, API’nin failed olduğunu görüyoruz. Hem 200 hem de 401 mesajını bulamadığı için failed döndü.

Size Assertion

UserDetails için Size Assertion ekleyelim. Size Assertion için öncelikle Sampler Resultı kontrol ediyorum.

Size in bytes
  • Size Assertion ile 3 tab geldiğini görüyorum. Response Assertiona göre daha basit bir işleyişi var.
  • Response Size Filed to Test: Response’un hangi alanının kontrol edileceği seçilir.
  • Size To Assert: Değer girilir ve koşul ifadesi seçilir.
Size Assertion

Response’un tamamı için 1140 değerini referans alarak koşul ekledim. 1140 tan daha fazla boyutta bir response döndüğünde, API failed gözükecektir. İki farklı test sonrası sonuçları aşağıda görebiliriz.

Size Assertion < 1140 = Succes
Size Assertion < 1140 = Failed
  • Farklı testler sonucunda bir eşik değeri çıkarılarak, Size Assertion içerindeki koşul ifadeleri ile assertion eklenebilir.

Duration Assertion

UpdateUsers için Duration Assertion ekleyelim. Duration Assertion için öncelikle Sampler Resultı kontrol ediyorum. Duration Assertion, Sampler Result içerisindeki Load Time / Latency e karşılık gelir.

Duration Assertion ile Apply To ve Duration to Assert alanlarının geldiğini görüyorum. Duration in miliseconds alanında bir eşik değeri girmemiz yeterlidir.

Duration Assertion

Bu koşula göre 500 milisaniye üzerinde gelen response failed gözükecektir. 500 milisaniye altında yanıt dönen response ise success olacaktır. Yük testlerinde, yük altında yanıtı geciken API ler için duration assertion kullanışlıdır.

JSON Assertion

Son olarak Json Assertiondan bahsedelim. Json assertion kullanabilmemiz için öncelikle json formatta dönen bir response olmalıdır. UserDetails API için bir json assertion ekleyelim.

JSON Assertion
  • Assert JsonPath Exists: Belirlenen parametreyi yakalayacak olan Json ifadesi yazılır.
  • Additional Assert Value: Parametrenin değeri de kontrol edilecekse bu seçenek tiklenir. İlgili değer Expected Value içerisinde belirtilir.
  • Expect Null: Null değer yakalamak için kullanılır.

Json Assertion içeriğini doldurmadan önce testimi çalıştırıp UserDetails response u kontrol ediyorum.

UserDetails Response

Response içerisinde dönen “status” parametesinin varlığını ve değerini yakalamak istiyorum. Buna göre Json Assertion içeriğini dolduralım.

Json Assertion
  • Json ifademi ve istediğim parametrenin beklenen değerini belirttim.
  • Şimdi testi koşarak sonucu izleyelim.
Json Assertion

Beklediğim koşullara uygun bir sonuç döndüğü için API success gözüktü. Şimdi failed örneği yakalamak için assertionı aşağıdaki şekilde değiştirelim.

  • Sonuçta gördüğümüz gibi API failed gözüktü. Json Assertion açıklamasına baktığımızda nedenini net bir şekilde görebiliyoruz. Beklenen değer “inactive” belirttim fakat responseta “active” değeri döndü. Bu nedenle de assertion sonucu failed etti.

Bu yazımda assertionların genel mantığından bahsettim ve en çok kullanılan 4 assertionı örnekler ile açıkladım. Faydalı olması dileğiyle.

Keyifli okumalar.

--

--