Apache JMeter İle REST API Testi

in #tr6 years ago (edited)

Bu yazımda Apache JMeter kullanarak basit bir REST API testinin nasıl yapıldığını anlatacağım.

Gereklilikler

  • HTTP methodları hakkında bilgi sahibi olmak.

1. Kurulum

JMeter'ı indirmek için http://ftp.itu.edu.tr/Mirror/Apache//jmeter/ bağlatantısına gidin. İndirdikten sonra arşivden çıkarın. Karşınıza şöyle bir klasör yapısı çıkacak.

/bin dizinine giderek "ApacheJMeter.jar" veya "jmeter.bat" dosyalarından birini çalıştırarak programı açıyoruz.

2. HTTP İsteği Göndermek

Programı açtıktan sonra ekran görüntüsünde olduğu gibi Test Plan'e sağ tıklayıp Add -> Thread (Users) -> Thread Group seçeneğine tıklayın. İsteğe bağlı olarak isim verebilirsiniz. Ben bu şekilde devam ediyorum.

Yapacağımız istek Thread Group üzerinde çalışacağı için Thread Group'a sağ tıklayıp Add -> Sampler -> HTTP Request seçeneğine tıklayın.

Ben bu anlatımı test için "https://jsonplaceholder.typicode.com/comments?postId=1" üzerinden yapacağım.
Aşağıdaki ekran görüntündeki formu şu şekilde dolduruyorsunuz.
Procol: Örneğimizde https.
Server Name or IP: jsonplaceholder.typicode.com
Path: Server Name veya IP'den itibaren soru işaretine kadar olan kısım. (/comments)
Method: Kullanacağınız HTTP metodu.
Send Parameters With The Request: Örneğimizde parametre de göndereceğimiz için burayı da kullanıyoruz. Paramatre ise soru işaretinden sonraki kısım, yani "postId=1".

Son olarak listener ekleyip yaptığımız isteği dinliyoruz. HTTP Request'e sağ tıklayın. Add -> Listener -> View Result Tree seçeneği ile listener'ı oluşturun.

Buraya kadar geldikten sonra ilk testimizi yapalım. Yukarıdaki Start butonuna basarak isteği gönderiyoruz.

Test planını daha sonra kullanmak üzere kaydetmek isteyip istemediğimizi soruyor. Yes diyerek devam ediyorum.


1 numaralı sekmedeki yeşil onay işareti başarılı bir istek atıp cevap aldığınız gösteriyor.
2 numaralı sekmede gönderilen/alınan veri boyutu, bağlantı süresi gibi sonuçlar,
3 numaralı sekmede gönderdiğiniz isteğe dair ayrıntılar,
4 numaralı sekmede size gelen cevap yer alıyor.

Toplu İstek Gönderme

Kullandığınız API'nın ne kadar isteğe cevap verebileceğini test etmek isteyebilirsiniz. Bu durumda ise Loop Controller kullanıyorsunuz. Thread Group'a sağ tıklayıp Add -> Logic Controller -> Loop Controller seçeği ile controller oluşturup HTTP Requesti sürükleyip controllerın içine koyuyorsunuz. Eğer bu isteklerin belirli bir gecikmeyle yapılmasını istiyorsanız da Controller'a sağ tıklayıp Add -> Timer -> Constant Timer seçeneğini kullanıyorsunuz. Oraya gecikme süresini ms cinsinde yazdıktan sonra yaptığınız istekler timerda yazan değer kadar gecikmeli olarak loop içinde yazan değer kadar yapılır. Eğer baştan itibaren yazıyı takip ettiyseniz nihai test plan yapısı aşağıdaki şekilde oluyor.

XML/CSV Sonuç Alma

Yaptığınız isteklere dair sonuç dokümanı almak için View Result Tree içinde bulunan "Write results to file /Read from the file" yazısının altında bulunan yere kaydetmek istediğiniz yolu ve dosya adını giriyorsunuz. Sağ tarafta bulunan configure seçeneğine tıklayarak doküman içeriğinde neler olmasını istediğinizi yazıyorsunuz. Sonra siz thread'e start dediğinizde dokümanı oluşturup belirlediğiniz yere kaydediyor.


JMeter programının kullanımı bu şekilde. Daha birçok özelliği ve test/sonuç şekilleri var fakat en genel kullanım alanı bu şekilde olduğu için yazıyı burada bitiriyorum. Sorularınızı, katkılarınızı ve yapıcı eleştirilerinizi bekliyorum.

Sort:  

Merhaba, yazınız @try-market ve @kusadasi tarafından yürütülen küratör projesi kapsamında seçilmiştir. Proje yazısı hakkında detaylı bilgiye buradan ulaşabilirsiniz. Sonraki yazılarınızda "cointurk" etiketini kullanarak ailemizi genişletmemize yardımcı olabilirsiniz.

Cointurk Discord Kanalı

Teşekkürler! :)

Congratulations @daxene! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

Are you a DrugWars early adopter? Benvenuto in famiglia!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Congratulations @daxene! You received a personal award!

Happy Steem Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.16
TRX 0.15
JST 0.028
BTC 54260.52
ETH 2284.10
USDT 1.00
SBD 2.30