Testing Series

JMeter ile REST API Yük/Load Testi

Onur Dayıbaşı
Cloud And Servers
Published in
4 min readDec 14, 2016

--

Rest API geliştirdiniz ve bunu bir ortama deploy ettiniz, Kaç kişi geldiğinde sisteminizin çöküp çökmediğini , gelen kişiye göre istek/cevap süresinin ne seviyelerde olduğunu önceden ölçmenizi sağlar. Yük testleri hem maliyet hesabı, hem uygulamanızın ölçeklenip , ölçeklenmediğini görebilmenizi sağlar.

Sisteminizi public bir sistem ise canlıya almadan önce tahmini kullanıcı sayınınıza göre sisteminizin nasıl davranacağını nerden bileceksiniz ? Keşke bir araç olsa da kişileri simule etsek :)

JMeter yazdığınız uygulamanız üzerinde load testi yaparak performansını ve sınırlarını ölçmeye sağlayan açık kaynak kodlu bir araç. JMeter bir çok protokolü desteklediği için farklı amaçları güden load testleri tanımlayabilirsiniz.

REST API load testine gelince bizim buradaki amacımız;

  • Sistemin %90, %95 %99 en geç ne kadar sürede response verdiği
  • Ortalama , Min, Max response süreleri
  • Kaç kullanıcı req/resp AutoScale devreye giriyor ve yeni instance oluşturuluyor veya öldürülüyor.

JMeter Çalıştırma

  1. http://jmeter.apache.org/download_jmeter.cgi adresinden binary dosyayı localinize indirin. zip’i localinizde açın.
  2. sh jmeter.sh ile JMeter localinizde çalıştırın.
  3. İlk olarak kaç kişi, kaç saniyede bir request/response ekliyeceğini ayarlıyoruz.

4. Thread Grubu tanımlıyoruz. 100 kullanıcımız olsun sürekli sisteme req göndersin bu kullanıcılar response alınca tekrar bir request göndersin demek.

  • Ramp-Up tanımlarsak kullanıcı sayısı belirli saniye aralıkları ile artsın ilk saniye 0, ikinci saniye 10, üçüncü saniye 20 gibi ..

5. Istersek bu gönderme işlemini Timer’lara bağlayarak farklı zaman dağılımlı req/resp gönderimi gerçekleştirebiliriz. Aşağıdaki Const Timer bu gönderimlerin 300 ms bekletilmesini sağlatacaktır.

6. Preprocessor ve PostProcessor gönderilen Req ve dönen Resp bir script vb yöntemle değiştirek Exel’den veya dışardan parametrelerinizi güncelleyerek daha dinamik Load Testi yapmanızı sağlar.

7. Sampler oluşturacağız. Bu sampler bizim HTTP Request sample ederek sanki isteğin kullanıcıdan gelmiş gibi davranır.

8. HTTP Request yazarken ServerName http:// kısmını koymadan server ismini girin çünkü bu bilgiyi Protocol kısmından alarak kendisi oluşturacak

Endpoint: Protocol + ServerName + Path

Body Data kısmında göndermek istediğiniz JSON verinizi girin. Veriniz JSON değilse Text, Parameter vb.. bilginizi girebilirsiniz.

9. Eğer Body JSON gönderiyorsanız. Test Plan >Add > Config Element > HTTP Header Manager oluşturup “Content-Type” olarak application/json girin.

10 . Run düğmesine basın ve Req gitmesini sağlayın. Fakat Response’ların nasıl davrandığını anlamak için Thread Group Listener’lar eklememiz gerekiyor.

  • Aggregate Graph
  • View Result in Table
  • View Results Tree gibi…

JMeter Sonuçlarını Nasıl Yorumluyacağız.

  1. Aggrate Graph içerisinde gönderilen Samples sayısını görebilirsiniz 100 kişi sürekli istekte bulunuyor. SLA (Service Level Aggrement) yazarken bunlar önemli olacak.
  • Toplam Gönderilen istek 20475
  • Ortalama Cevap verme süresi 192 ms
  • %90 istek 247 ms altında, %95 istek 258 ms altında, %99 istek 277ms altında cevap vermiş.
  • En yüksek cevap verme süresi 563 ms , en düşük 2 ms
  • Throughput ise saniye 513.9 istegi sistemin şu anda karşılayabildiğini gösteriyor.

2. View Results in Table Request için Latency . Gönderilen Byte ve Alınan Byte kısımlarını görebilirsiniz.

3. Her bir isteğinizin detayını görmek icin View Result Tree Listener eklemeniz yeterli.

Not: Burada dikkat edeğiniz bir kaç durum var. Thread(users) sayınız çok fazla olunca JMeter çalıştırdığınız makine uçuyor 500 kişilerde falan sınırlara ulaşıyorsunuz. 1000 ‘de benim Macbook restart etti mesela zaten bu tip bir test ihtacınız varsa JMeter cluster kurmanızda fayda var.. İkinci konuda Network durumunu herzaman önemli sizin Network hızınınz/ karşı tarafın Network hızı nedir çünkü çok büyük dosyalar transfer ederek testler gerçekleştiriyorsanız network hızı bu durumu direk etkileyecektir.

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--