Jmeter ile Public API Testi

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

İlk medium yazımda Jmeter hakkında genel bilgilendirme yapmıştım. Bu yazımda ise public API’leri kullanarak detaylı bir API testi örneği anlatacağım. Bu örnek sırasında User Defined Variables, Http Request Defaults, HTTP Header Manager, Extractor ve değişken kullanmayı ele alacağım.

Birçok farklı public API bulabilirsiniz. Bu örnekte https://gorest.co.in/ deki API leri kullanacağım. Aşağıdaki şekilde 4 farklı API üzerinde çalışacağım.

Değişkenlerimi tanımlayabilmek için Test Plan -> Add -> Config Element

-> “User Defined Variables” elementini ekliyorum.

User Defined Variables

User Defined Variables ile ekrana gelen parametreleri inceleyelim.

User Defined Variables
  • Name: Tanımladığınız değişkene verdiğiniz isimdir.
  • Value: Tanımlanan değişkenin alacağı değerdir.
  • Description: Açıklama alanıdır.
  • Alttaki Add, Delete butonları ile ekleme ve silme aksiyonları alınabilir.

Domain adresini değişken olarak tanımlamak, çok fazla request içeren JMX’lerde kolayca ve tek seferde değişiklik yapmamızı sağlar.

Host ve domain adresimi aşağıdaki şekilde tanımladım.

User Defined Variables

4 API içinde host ve domain adresinin aynı olduğunu görüyorum. Tüm requestlere tek tek bu bilgileri girmemek için “HTTP Request Defaults” elementini kullanacağım.

HTTP Request Defaults
  • HTTP Request içerisinde, host ve domain bilgilerini değişken adlarını kullanarak aşağıdaki şekilde ekliyorum.

Jmeter içerisinde tanımlanan değişken, “${variable}” şeklinde çağrılır. Request body’de bir parametre değeri, http request adı vs. gibi farklı yerlerde değişken kullanılabilir ve syntaxı aynıdır.

  • Userı oluşturan ilk API’yi aşağıdaki bilgiler ile ekliyorum.
Create User API
Create User

HTTP request içerisinde tekrar protocol ve server name bilgilerini girmiyorum. Çünkü bu bilgileri Http Request Defaults ile sağladım. Post seçimini yaptım ve path bilgimi girdim. https://gorest.co.in/ sayfasının sonundaki bilgilerden yararlanarak request body’i dolduruyorum.

Create User

Dökümantasyonda API lerin bazı headers ve authorization istediğini görüyoruz.

Headers tanımlamak için Test Plan -> Add -> Config Element -> “HTTP Header Manager” ekliyorum.

HTTP Header Manager
  • Users API’sine istek atıp, doğru çalışıp çalışmadığına bakalım.

Çok sayıda request içeren çalışmalarda adım adım, test ederek gitmek daha sağlıklıdır.

Create a New User
  • Başarılı bir şekilde istek attığımızı ve beklenen response’u aldığımızı görüyoruz.
  • Oluşturulan user için response içerisinde bir ID değeri dönüyor. Bu ID diğer API lerde lazım olacağı için “Extractor” kullanarak bu ID’yi yakalayacağız ve API ler arası dinamik bir bağlantı kuracağız.
  • Response JSON formatta olduğu için JSON Extractor kullanabiliriz. Response formatına ve isteğe göre farklı extractorlar kullanılabilir.
  • ID parametresini yakalamak için geçerli Json ifadesini, response u test ederek bulacağız. Bunun için View Results Tree de “Json Path Tester” alanını kullanabiliriz.
JSON Path Tester
  • Bu response tek bir ana sampler içerdiği için ve sadece bir tane id parametresi olduğu için “id” yazarak istediğimiz parametreyi direkt yakalayabildim.
  • Alt samplerlarda yer alan bir parametre olsaydı “.id”, birden fazla id parametresi olsaydı “.[0]id” gibi json ifadeleri kullanmamız gerekirdi.
  • Json ifademi bulduktan sonra HTTP Request (Sağ Tık) -> Add -> Post Processors -> “JSON Extractor” ekliyorum.
JSON Extractor
  • Names of Created variables: Değişken adıdır. Bu isim ile değişken farklı yerlerde çarğılıp, kullanılabilir.
  • Json Path Expressions: Belirlediğimiz Json ifadesidir.
  • Default Values: Json ifadesi bir değer yakalayamazsa, değişkenin alacağı default değerdir.

Extractor kullanarak responsetan dönen değeri yakaladık ve artık istenilen yerde değişken olarak çağırıp kullanabilirim.

Şimdi user bilgilerini dönen 2. API yi ekleyelim. Bu bir GET Api ve path içerisinde ID bilgisi içeriyor.

User Details API
User Details
  • Sırasıyla “GET” seçtik, pathi girdik. Path’teki ID bilgisinin dinamik olması için extractor ile yakaladığımız “userId” değişkenini kullandık.

User bilgilerini güncelleyen 3. API’yi de ekleyelim. Bu bir PUT Api, path içerisinde ID bilgisi içeriyor ve request body doldurmamız gerekli.

Update User Details API
User Update

User’ı silen 4. API yi de aynı şekilde ekliyorum. Delete API, path içerisinde yine ID bilgisi içeriyor.

Delete User API
Delete User

Yazımın başında bahsettiğim 4 API yi de jmx’e dahil etmiş olduk. Şimdi tüm requestler aktif bir şekildeyken çalıştırıp, sonuçları kontrol edelim.

  • 4 API’nin başarılı şekilde çalıştığını görüyoruz. Sırasıyla User oluşturuluyor, aynı userın bilgileri getiriliyor, güncelleniyor ve son olarak user siliniyor.
  • API testleri, yük testleri gibi farklı çalışmalarda API ler arası ilişkiler doğru tespit edildikten sonra benzer şekilde değişken tanımları ve extractorlar ile dinamikleştirme sağlanıp, modelleme yapılabilir.
  • Dinamik yapılar sayesinde farklı parametreler, farklı datalar ve koşullar ile testlerinizi gerçekleştirebilirsiniz.

Bu yazımda bahsedeceklerim bu kadar. Faydalı bir örnek olmasını umuyorum.

Keyifli okumalar.

--

--