Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 17, 2022 07:56 pm GMT

RESTful API zerinde Batan Sona Performans Testi

Balarken;

  • Jmeter kurulumu
  • Jmeter ile test ortamnn hazrlanmas
  • lk sonularn alnmas
  • InfluxDB kurulumu
  • Grafana kurulumu
  • Grafana gsterge paneli zerinde test sonularnn gsterilmesizerinden batan sona bir perfomans testini ayrntl konuacaz.

Performans testi: bir ok yazlm mhendisinin ok defa karlat, zm rettii ve bu testler sayesinde zerinde alt sistemin art ve eksilerini grd bir testtir. Ama ou durumda test ekibi dnda olan yazlm mhendislerinin fazla dikkat etmedii de bir konudur aslnda. Kendi testlerini genel olarak bir ka defa yk veya performans testi yaptktan sonra ki bu da genelde REST Api zerinden olur, yazd kod blounu commit/deploy etme yada bir dier ifadeyle canlya alma yoluna gider. Genel olarak ben de byle yapyordum. nk performans testinin ok etrefilli olduunu, bir ok konfigrasyon yapmam gerektiini bununla zaman kaybedeceime yeni gelitirmeler yapabileceimi dnyordum.
Fakat grdm ki yazdm kodlar, oluturduum sorgular her ne kadar optimize edilmi olsa da canl da yava alan sistemler, almayan web sayfalar olarak karma kyordu. Bu durum beni performans veya yk testini kendi iimde nasl yapabilirimin sorusunun cevabn bulmaya gitti ve renmeye baladm. rendikten sonra, yaklak 1-2 saat ierisinde yazm olduum herhangi bir HTTP Request i rahatlkla test edebilir hale getirdiimi grdm. Bu sebeple sizin de benim gibi performans takntnz varsa ve bunu kolay ve anlalr yoldan yapmak istiyorsanz, bu yaz size gre olabilir.
ncelikle REST Api mizi test edebilecek bir araca ihtiyacmz olacak. Bunlardan yaygn ve cretsiz olanlardan bir tanesi JMeter ile balayacaz. Jmeter nedir ne deildir bu gibi ok ayrntya girmeyeceiz, iimizi grecek kadar bilsek yeterli u an iin. Kronometreleriniz ak m? Bakalm siz ka saat veya dakikada test sisteminizi oluturacaksnz.

Jmeter Kurulumu ve lk Test

Jmeter aracn indirmek iin bu linkten faydalanabilirsiniz. u an ben Apache JMeter 5.4.3 srmn kullanyorum, belki siz bu yazy okuduunuzda srm bilgileri deimi olabilir. lgili sayfada belirttii zere bilgisayarmda Java 8+ olup olmadnda dikkat ediyorum, deilse Java nn 8 veya st srmn indiriyorum. Burada iki kaynak (Source / Binaries) var ben Binaries olan seiyorum ve aadaki resimde grld zere apache-jmeter-5.4.3.zip dosyasn indiriyorum.

Image description
ndirdiim dosyay unzip edip, apache-jmeter-5.4.3\bin\jmeter.bat uzantsna tklayarak Jmeter m ayorum. Jmeter ana sayfam aldktan sonra sizin da karnza aadaki gibi bir grsel kmas gerekiyor. Eer ktysa doru yoldasnz demektir.

Image description
nemli bir hatrlatma: Yukardaki resimde grdnz zere Jmeter 2 numaral cmd.exe den beslendii iin kapatmanz durumunda Jmeter da kapanacaktr. Kapatmadan ilemlerinize devam ediniz.
imdi test planmz (1 numara) oluturmamz lazm. Bir performans veya yk testi yapabilmek iin ihtiya duyduumuz yegane ey sanal kullanclardr. Yani sitemize 10 kii veya 100 kii girdiinde sitemiz nasl tepki veriyor, bu yk kaldrabiliyor mu, performansl alyor mu grmek isteriz. Bu 10,100 veya 1000 sanal kullancy oluturmak iin Test Plan tabna sa tklayarak Add->Threads(Users)->Thread Group sekmesine tklyoruz. Resimde grld zere Thread Group ile ne kadar user ile test etmemiz gerektiine ve hangi saniye aralklarla bunu yapmamza ve dng yapp yapmayacamza karar verebiliyoruz.

Image description

lgili RestAPI mizi ka thread veya kullanc ile test edeceimize karar verdikten sonra, rnein ben 200 kullanc ile test edeceim, REST API de arma methodlarmz olarak da bilinen bir HTTP Request oluturacaz. HTTP Request ile belirlediimiz bu 200 kullanc hangi HTTP Requesti ve Requestleri test etsin ona karar vereceiz. Bunun iin aadaki resimde de grld zere Thread Group tabna sa tklayp Add->Sampler->HTTP Request sekmesine tklayp yeni bir HTTP Request oluturuyorum.

Image description

Ben kendi REST Api mi deil de internette free REST Api test edebileceim bir sayfa zerinde test edeceim. Bunun iin reqres.in web sayfasn kullanp, oradan bir HTTP Request semek istiyorum. Aadaki resimde grld zere *https://reqres.in/api/users?page=2 * api sayfasn test edeceim.

Image description

Eer siz kendi oluturduunuz Rest API y test etmek isterseniz ve bir HTTP Header a ihtiyacnz varsa, yine Thread Group a sa tklayp Add-> Config Element-> HTTP Header Manager semeniz yeterli olacaktr. Bir sonraki yazmda kendi REST API mizi oluturup test etmeyi de anlatmay dnyorum.

Test edeceimiz API url ini belirledikten sonra bunu Jmeter ile nasl tanmlyoruz ona bakalm. Jmeter da HTTP Request i sekmesini tkladmzda aadaki gibi bir grsel gelecektir.

Image description
lgili url imin *https://reqres.in/api/users?page=2 * yukardaki resimde nasl datldn grmektesiniz. 7 numaral ksma server veya ip ismi, 8 numaral ksma path imiz, son olarak 9 nolu ksma ise parametremizi yazyoruz, bu da url deki soru iareti ksmndan sonra ksma denk geliyor. u an ufak bir API testi yaptmzdan ve genel bir anlatm olduundan ok detaya giremiyorum. lerleyen zamanlarda bu ksm da detaylandrabiliriz. Ayrca unu da belirtmek isterim ki, biz u an her ne kadar bir HTTP Request le test etsek de normal de daha ok HTTP Requesti de test edebiliriz. Sadece yeni bir HTTP Request oluturmanz ve farkl bir api url i girmeniz gerekecektir.

imdi geldik verilerimizi analiz etmeye. lk grseli grmek isterseniz, Thread Group a yine sa tklayarak Add-> Listener -> ... diyerek istediiniz analiz verilerini grebilirsiniz. Ben rnek olsun diye View Result Tree ve View Result in Table ekleyeceim. lgili listener lar ekledikten sonra testi balatmak iin Jmeter ilk nce kaydedip, daha sonra Run(Play) butonuna basmak yeterli olacaktr. Test bittikten sonra ilgili listener lara tkladnzda sonular grebileceksiniz.

Image description

Hadi gelin imdi bu test sonucunda dnen datay grselletirip, daha iyi analiz edilebilir hale getirelim. Bunun iin test sonu verilerini aktaracamz Influx DB ye ve sonucu grselletireceimiz Grafana ya ihtiyacmz olacak.

Influx DB Kurulumu

Jmeter yapm olduumuz testi daha iyi bir grsel ile analiz etmek istiyorsak bunun en kolay yollarndan bir tanesi, InfluxDB ile Jmeter den gelen analiz verilerini kaydedip, Grafana arac ile bu veriyi gstermek. Bunun iin ihtiyacmz olan Influx DB yi indirmek iin linke tklayabilirsiniz. Fakat burada nemli bir detay vermekte fayda var. Eer InfluxDB nin son srmn indirirseniz, Grafana daki analiz grsellerinizi (dashboard) FluxDB query ile oluturmanz gerekiyor, normalde Granfana da Jmeter analiz grselleri iin hazr yaplar var fakat bunlarn ou FluxDB yi desteklemiyor. O yzden benim amacm FluxDB ile dashboard oluturmak olmadndan InfluxDB'nin 1.8... versiyonunu indirdim. Aadaki resimden InfluxDB'nin eski versiyonunun nerede olduunu grebilirsiniz.

Image description
Direk bir setup linki olmadndan veri tabann Windows iin verdii PowerShell komutuyla indirebilirsiniz. lgili satr kopyalayp PowerShell inize yaptrdnzda srmn inmeye baladn greceksiniz. te bu kadar kolay. InfluxDB nizin indii yere gidip dosyay unzip ediyoruz. Genelde C:\Users[Bilgisayar sminiz] olduu yerde oluyor, dikkat etmekte fayda var.

Unzip ettikten sonra ...\influxdb-1.8.10_windows_amd64\influxdb-1.8.10-1\influxd.exe yi altrarak InfluxDB'imizi ayaa kaldryoruz. Ayaa kaldrdktan sonra yapmamz gereken bir veri taban ve bir kullanc ad oluturmak. Bunu oluturmamzn sebebi, Jmeter veriyi hangi veritabanna yazsn onu sylemek, Grafana hangi veri tabanna hangi kullanc ile balansn onu belirtmek iin. Bunun iin ...\influxdb-1.8.10_windows_amd64\influxdb-1.8.10-1\influx.exe dosyasn altryoruz ve karmza gelen .exe ekranna

CREATE DATABASE test_db

yazyor ve enter a basyoruz. Kullanc oluturmak iin de aadaki kod satrn yazp, enter a basmanz yeterli olacaktr.

CREATE USER root with password 'root'

**

Tekrar hatrlatmak da fayda var, altrdnz .exe file larn ltfen tm test sreciniz bitene kadar kapatmaynz.
**

imdi, InfluxDB yi bu ekilde brakalm ve Grafana nn kurulumuna geelim. Grafana nn kurulumunu yapp veri tabanmz baladktan sonra Jmeter zerinde yaplan testin Grafana da nasl grndne hep beraber bakalm.

Grafana Kurulumu

Ben yukarda ki dier kurulumlar gibi Grafanada da ayn yntemle ilerleyeceim. lgili linke tkladnzda aadaki grselde grld zere Windows Binaries i seip, ilgili zip dosyasn indirip, unzip ediyoruz.

Image description

Unzip ettikten sonra indirdiiniz yolun ...\grafana-8.3.3\bin
** klasrne gidip grafana-server.exe yi altryoruz. lgili .exe dosyasn hi kapamadan **http://localhost:3000
adresine gidiyoruz. lk alta sizi bir login sayfas karlayacak, default user / password olan;
Username: admin
Password: admin

girip devam edebilirsiniz.

imdi sra geldi InfluxDB yi Grafana ya balama ilemine. Bunun iin aadaki grseldeki gibi Configuration-> Data Source sekmesine tklyoruz.

Image description

Gelen sayfadan Add Data Source butonuna tklayp, InfluxDB yi seiyoruz. Karnza bir balamay planladnz InfluxDB nin balant bilgilerini doldurmanz gereken bir form gelecek. imdi srayla bu bilgileri dolduralm.

Image description

  • 13 numaral alana ilgili balantya bir isim veriyosunuz, ben MyTest olarak isimlendirdim.
  • 14 numaral alana sorgu dilinizi seiyorsunuz, biz 1.8 versiyonunu indirdiimiz iin InfluxQL i seiyoruz.
  • 15 numaral alana veritabannzn url sini giriyorsunuz. Burada default olarak bir url yazyordur, fakat doru olsa bile oraya ilgili url nizi yaznz. Url bilginiz yukarda bahsettiim influx.exe yi altrdnzda karnza kacaktr. Default url ekranda grld gibidir.

Image description

  • 16 numaral alana yukarda oluturduumuz veri taban ismi, kullanc ad ve ifre bilgilerini giriyoruz.
  • 17 numaral alan GET olarak seiyoruz ve 18 numaral butona tklayp grseldeki gibi balantnn baarl olduunu gryoruz.

Yukarda yaplanlar ksaca zetlersek, imdiye kadar;

  • Jmeter kurulumu ve konfigrasyonu yaptk.
  • Jmeter da ilk testimizi gerekletirdik.
  • InfluxDB kurulumunu yaptk. Veri taban, kullanc ve ifre bilgilerini oluturduk.
  • Grafana y kurduk, InfluxDB yi veri kayna (Data Source) olarak belirleyip, balantmz gerekletirdik.

Bundan sonra ise;

  • Grafana da Jmeter i grntleyebileceimiz hazr bir dashboard oluturacaz.
  • Jmeter daki verileri InfluxDB ye canl olarak aktarp, Grafana dashboard u zerinde grntlemeye alacaz.

Hadi balayalm...

Grafana da Jmeter Gsterge Paneli (Dashboard) Oluturma

Buradaki amacmz Jmeter dan gelen verileri, log olarak satr satr okumak yerine grsel anlamda zengin bir dashboard kullanp, performans analizimizi yapmak olacaktr. Bunun iin hazr dashboardlar kullanacaz.
Ben linkteki dashbordu kullanacam. Siz isterseniz ilk bata benim setiim dashboard ile ilerleyin, testinizi bitirdikten sonra baka dashboardlar bu sayfadan seebilirsiniz. Burada grdnz zere her dashboardun bir ID si var ve siz bu ID zerinden dashboardunuzu kolaylkla oluturuyorsunuz. lgili ID yi kopyalayp, aadaki grseldeki gibi Import alanna tklyoruz,

Image description
ve _Import via grafana.com _ kolonuna yaptryoruz. Load dedikten sonra, aadaki grseldeki gibi ekrann gelmesini bekliyoruz.

Image description

Image description

Ykleme tamamlandktan sonra, 21 numarada grlen yere Data Soruce muzu seiyoruz ve Import butonuna tklyoruz.

Ve ite ilk dashboardumuz hazr :)

Image description

imdi en son olarak Jmeter mz InfluxDB ye aktarmn yapp canl olarak Grafana zerinden grntleyeceiz.

Burada nemli bir not deyim, verilerinizin canl aktn grebilmeniz iin Grafana daki dashbordunuzda Yineleme zamann Off tan farkl deer vermeniz gerekecek. Bunu aadaki grsele bakarak deitirebilirsiniz.

Image description

Jmeter a tekrar geliyoruz ve yeni bir listener daha ekleyeceiz. Bunun iin yukarda anlattm admlara bakarak Thread Group a sa tklayp Add-> Listener -> Backend Listener ekliyoruz. Ekledikten sonra 22 numaradaki listeye tklayp, benim setiim kayna seiyoruz. 23 numaradaki InfluxDbUrl alann yine benim gibi dolduruyoruz. Burada yaptm tek ey default gelen url alanna localhost ve veri taban ismini eklemek oldu. lemimiz bittikten sonra kaydet butonuna tklyoruz ve test planmz en son haliyle kaydediyoruz.

Hadi test edelim...

Uzun bir yazdan sonra yapm olduumuz emein karln almaya hazrz. Jmeter Bala (Play) tuuna basnz ve hemen ardndan Grafana daki dashbordunuzu anz. Tebrikler, ilk testinizin sonucunu aldnz. Tabii ben az bir kullanc ile yaptmdan kaynak tketimim az oldu ve bu sebeple hataya den hi bir ilemim (thread) olmad :)

Image description

Bu konu ile ilgili takldnz veya yapamadnz bir durum oluursa ltfen yorumlara yaznz, birlikte sorunun zerine gidip zebiliriz. Bir sonraki yazmzda grmek zere, salcakla kalnz.


Original Link: https://dev.to/byksy/restful-api-uzerinde-bastan-sona-performans-testi-3j24

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To