Apache JMeter İle REST API Testi
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.
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.
Teşekkürler! :)
Congratulations @daxene! You received a personal award!
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:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Congratulations @daxene! You received a personal award!
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!