23
Jmeter ile Uygulama Katmanında Yük Testi Gerçekleştirme

Jmeter Ile Uygulama Katmanında Yük Testi Gerçekleştirme

Embed Size (px)

DESCRIPTION

Apache-Jmeter aracı kullanılarak yük testi gerçekleştirme.

Citation preview

  • Jmeter ile Uygulama Katmannda Yk

    Testi Gerekletirme

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    1

    Temel Admlar Apache Jmeter Java tabanl, ortam bamsz statik ve dinamik kaynaklar test etmek iin

    kullanlan bir yk testi aracdr. Apache Jmeter uygulamas ile gerekletirebileceiniz baz

    sunucu veya protokol trleri aadaki gibidir:

    Web - HTTP, HTTPS

    FTP

    SOAP

    DBMS

    LDAP

    Mail - SMTP(S), POP3(S)ve IMAP(S)

    MongoDB (NoSQL)

    TCP

    ncelikle makalemize giri yapmadan Jmeter.org adresinden yk testimiz iin gerekli olan Apache Jmeter uygulamasn indirilelim. ndirdiimiz apache-jmeter-2.12.zip ariv dosyasn klasre kartp, klasr ierisinde bulunan bin klasr ierisindeki ApacheJMeter.jar uygulamasn altralm.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    2

    Web Sunucu Test Senaryosunun Hazrlanmas

    Web sunucu test senaryosunu hazrlamak iin birden fazla farkl yntem bulunmaktadr. Bu

    makalemizde en temel admlardan balayacaz ve sonraki admlarda yeri geldike dier

    yntemlerden bahsedeceiz.

    Bir web sunucusunu uygulama katmannda yke kar dayankln test etmek iin, ncelikli olarak kullanc saysn belirlememiz gerekmektedir.

    Test Plana farenin sa tk butonuna basarak Add mensnden Thread (Users)

    ksmndan, Thread Groupu seelim.

    Eklemi olduumuz Thread Groupa ilikin ekran grnts aadaki gibidir:

    Thread Group ierisinde yer alan alan baz parametre alanlarna gz atalm, Name:Thread Groupu adlandrmak iin kullanlr. Action to be taken a Sampler error: Test yapldnda hata durumundaki davrann ifade eder.

    "Continue" - Hata oluursa bile test etmeye devam et

    Start Next Thread Loop Hata alndnda bir sonraki dizi dngsne ge

    "Stop Thread" letim diziyi durdur

    "Stop Test" - Testi durdur

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    3

    Number of Threads (users): Oluturulacak sanal kullanc (virtul user(s) veya concurrent user(s) deeri bu alana girilir. Ram-up period (in seconds): Number of Threads ksmnda belirlenen kullanc saysna ka saniye eriilmek isteniyorsa buraya o deer yazlr. Loop Count: Testin ka defa tekrarlanaca bu alanda belirlenir. Frover seenei seilirse kullanc tarafndan test durdurulana kadar yk testi devam edecektir. Scheduler: Testin belirtilen zaman aralnda gerekletirilmesini salar.

    HTTP sayfa yk testi iin ayarlar konfigre etmek iin Thread Groupa farenin sa

    tuuna basarak Add mensnden, Config Element ksmndan HTTP Request

    Defaultsu seelim.

    Server Name or IP: Bu alana test yapmak istediimiz Http sunucusu alan (domain) adn veya IP adres deerini yazalm. Port Number: Bu alana Http sunucuna balanlmak istenen port numarasn yazalm. Timeouts: Connect (Balant) ve Respons (Yant) alanlarna mili saniye cinsinden deerler girerek zaman am deerlerini tanmlayabilirsiniz.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    4

    Path: Http sunucusu dizininde yer alan yol (iz) bilgisini tanm yaplabilinir.

    blog.btrisk.com sitesi iin aadaki gibi parametre tanmlar yaplmtr.

    HTTP isteini (HTTP Request) Thread Groupa farenin sa tuuna basarak Add

    mensnden, Sampler ksmnda HTTP Request i aadaki gibi ekleyebiliriz.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    5

    Karmza kan HTTP Request sayfas aadaki gibidir.

    rnek olarak blog.btrisk.com sitesine ynelik yk testi iin HTTP Request ierisinde

    yer alan ilgili parametreleri aadaki gibi dzenleyelim.

    Path alan yukarda da grlecei zere ana sayfaya giri olduu iin / deeri girilmitir.

    Ayrca Blog.btrisk.com sitesinde yer alan dier bir sayfaya yaplacak istek iinde yeni

    bir HTTP Request ekleyip ierisindeki parametre alanlarna aadaki gibi bilgiler

    girilmitir.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    6

    Yaplan isteklere karlk alnan yant srelerine ilikin deerleri grafiksel olarak

    grntleyebilmek iin Thread Groupa farenin sa tuuna basarak Add

    mensnden, Listener ksmndan Response Time Graph seelim.

    Bu admda Thread Group sayfasndan kullanc saysn, belirlenen kullanc saysna

    ka saniyede ulaacan ve testin ka defa tekrar edileceini belirleyelim.

    Son adm olarak Run mensnden Start veya Crtl+R tu kombinasyonunu

    kullanarak yk testini balatalm.

    Test baladnda Test sresince sa st kede yeil kare yanacak ve kullanc says tanmlanan deere kadar artacaktr.

    Test bitiminde veya test devam ederken Response Time Graph seip Graph

    sekmesinden yant srelerinin deiimini gzlemleyebiliriz.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    7

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    8

    Gelimi Seeneklerin Kullanm

    Bu admda Http ve Https temelli senaryolarmz daha kolay bir ekilde oluturmay ve

    Jmeter-Plugin eklentisi ile daha fazla grafik elde ederek yk testi analizlerimizin daha anlaml

    ve anlalr olmasn salayacaz.

    Makalemize balamadan nce Jmeter-Plugin.org sayfasndan Extras Set eklentisini indirelim.

    ndirdiimiz Extras Set ariv dosyasn bir klasre karp ierisindeki dosyalar Apache-

    Jmeter ana dizine kopyalayp, var olan dosyalar yenileri ile deitirilmesine izin verelim.

    Yukardaki anlatlan ilemleri doru bir ekilde gerekletirdiinizde Apache-Jmeter/bin dizini

    ierisinde yer alan ApacheJMeter.jar uygulamasn altrdnzda aadaki gibi deiikler

    olduunu greceksiniz.

    rnein Listener sekmesine tkadnzda seeneklerin aadaki gibi art grlmekte.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    9

    HTTP(S) Test Script Recorder ile Yk(Stres) Testi Senaryosunun

    Hazrlanmas

    Apache-Jmeter uygulamasnn bulunduu klasr ierisinden ApacheJmeter.jar

    uygulamasn altralm.

    Test Plana sa tklayp Add sekmesinden Thread (user) alanndan Thread Group

    bileenini seelim.

    Thread Group ierisinde yer alan daha nce temel admlarda deindiimiz parametreler alanlarn yk testimizin ihtiyalar dorultusunda dzenleyelim

    rnein biz yk testimizi 100 sanal kullancya 10 saniyede ulaabilecek ve senaryoyu 4 defa tekrarlayacak ekilde dzenleyelim.

    Thread Group bileenine sa tklayp Add sekmesinden Logic Controller ierisinden

    Recording Controller seelim. Recorder Controller bileenini kullanmamzn amac,

    yapacamz istekleri bu bileen aracl ile test senaryosu ierisine kayt etmek.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    10

    Thread Group bileine sa tklayp Add sekmesinden Timer ierisinden Constant

    Timer seelim.

    Constant Timer bileeni ile yaplan her bir istek arasndaki bekleme sresini belirleyebiliriz. Bu test senaryosu iin yaplan istekler arasndaki bekleme sresi 300 mili saniye olarak belirlenmitir.

    WorkBenche sa tklayp Non-Test Elements sekmesinden HTTP(S) Test Script

    Recorder bileenini seelim.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    11

    HTTP(S) Test Script Recorder bileeni bizlere tanmlayacamz proxy aracl ile herhangi bir internet taraycs ile gerekletriceimiz istekleri, Thread Group altnda yer alan Recoring Controller bileeni ierisine eklenmesini salayacaktr.

    HTTP(S) Test Script Recorder zerinde yer alan Global Settings alanndaki Port numarasn proxy aracal ile dinlemek istediimiz Port numarasn yazalm ve Test plan content altnda yer alan Target Controller alanndan yk testi senaryomuzu oluturacamz Recoring Controllern adn aadaki gibi seelim.

    Bunlara ek olarak test senaryonuz ierisinde olmasn istemediiniz, sayfalar ierisinde yer alan uzantlar URL Patterns to Exclude alanndan belirleye bilirsiniz.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    12

    Taraycmzn Ayarlar ksmndan Balant ayarlarndan yukarda tanmladmz port

    numarasn 8080 ve domain balna localhost veya 127.0.0.1 yazalm.

    Yukar anlatlan btn ayarlar yapldk sonra WorkBenchin altnda yer alan HTTP(S)

    Test Script Recorder seilip Start butonu tklanp proxy ayarlar yaplm tarayc

    zerinden yk testi yapacamz ilgili web sayfasnn test senaryosu kapsamnda ilgili

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    13

    alanlarnda gezinerek test senaryosunu oluturalm.

    Kontrol Notu: Test senaryosunun kayt edildiinden emin olabilmek iin Test Plann

    altnda yer alan Thread Groupun altndaki Recording Controller sekmesi geniletelim

    ve gezilen sayfalara ait ilgili linklere gz atalm.

    Gelimi seeneklerinin kullanm admnda bahsediimiz Jmeter-Plugin eklentisi ile

    gelen grafiklerin ne anlama geldiine ksaca gz atalm.

    Therad Group sa tklayp Add Listener sekmesinden aada kullanm amalar yer alan baz bileenleri ekleyelim;

    Response Codes per Second: Yaptmz isteklere karlk gelen yant balndaki

    mesajlarn istatistiksel dalmn grafiksel olarak gsterir.

    Response Latencies Over Time: Yaplan isteklere karlk alnan yantlarn gecikme

    (Latencies) deerlerinin istatistiksel dalmn grafiksel olarak gsterir.

    Response Times vs Threads: Yaptmz isteklere karlk gelen yantlarn sresini ve o

    andaki kullanc saysnn istatistiksel dalmn grafiksel olarak gsterir.

    Hits per Second: Bir saniyede iletilen istek saysnn istatistiksel dalmn grafiksel

    olarak gsterir.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    14

    Son adm olarak testimizi Ctrl + R veya Run sekmesinde Start butonuna basarak

    balatalm.

    rnek grafik ktlar aadaki gibidir:

    Response Codes per Second

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    15

    Response Latencies Over Time

    Response Times vs Threads

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    16

    Hits per Second

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    17

    HTTPS steklerinin Proxyden Geirilmesi

    Jmeter fonksiyonaliteleri ierisinde yer alan HTTP(S) Test Script Recorder kullanarak 443

    portundan yayn yapan yani HTTPS ile iletiim kuran sayfalar proxyden geirmek iin Jmeter

    sertifikasn yklemeniz gerekmetedir.

    Apache-Jmeter Sertifikasnn Web Taraycsna Yklenmesi

    Apache-Jmeter sertifikasn taraycmza yklemek iin aadaki admlar uygulayalm:

    ncelikle ApaceheJmeter.jar uygulamasn aalm ve WorkBenche sa tklayp Add->Non-

    Test Elements->HTTP(S) Test Script Recorder ekleyelim.

    HTTP(S) Test Script Recorder zerinde yer alan Start butonu tklayalm ve karmza kan

    uyarda OK butonuna basalm,

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    18

    Oluturulan sertifikay Mozilla taraycya yklenmesi:

    Taraycmzn Aralar sekmesinde Seenekler->Gelimi->Sertifikalar

    blmnden Sertifikalar Gster butonuna tklayalm ve Yetkili sekmesine

    tklayalm.

    Onay belgesi yneticisinden e aktar butonuna tklayarak ApacheJmeterin kurulu

    olduu dizin ierisindeki bin klasrnn yolu gsterelim.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    19

    ApacheJMeterTemporaryRootCA.crt dosyasn seip ykleyelim.

    Tm alanlar yukardaki gibi kutucuklar iaretleyip onaylayalm. Artk HTTPS istekleri

    HTTP(S) Test Script Recorder bileeni aracl ile kaydedebilirsiniz.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    20

    Komut Satrnda Yk Testi Gerekletirme

    Lokalde yaplacak yk (rnein 1000 ve zeri sanal kullanc ile) testinde performans

    probleminin nne gemek iin Jmeter, komut satrnda parametrelerle altrlmal. Birden

    fazla eklenen grafik bileenleri yksek kullanc saysnda arayz kullanlarak yaplan

    testlerde, yk testinin gerekletrildii sunucuda bellek ve ilemci kullanmn byk oranda

    artrmaktadr.

    Jmeter arayz modunda istenilen test senaryosu ve grafikler ekledikten sonra yk testini

    balatmak yerine File sekmesinden Save Test Plan seeneini kullanarak test senaryosunu

    Apache-Jmeter uygulamasnn bulunduu dizindeki bin dosyas ierisine kaydedelim.

    Ayrca Apache-JMetern kullanaca Ram miktarn aadaki gibi konfigre edelim:

    Apache-Jmeter dizininde Bin klasrnn altnda yer alan jmeter.bat dosyasna sa tklayp

    birlikte a seeneini kullanarak ile notpad uygulamasyla aalm.

    Alan sayfada set HEAP parametresini bulalm ve parametre ierisinde yer alan megabyte

    cinsindeki bellek miktarn deitirelim.

    rnein: set HEAP=-Xms1024m Xmx1024m

    Yukarda anlatlan ilgili konfigrasyonlar yaptktan sonra komut satrndan Apache-Jmeter

    dizini ierisindeki bin klasrne ulaalm.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    21

    Komut satrna jmeter -t TestPlan.jmx -n -l c:\Test_Plan_Data.csv yazalm.

    .jmx uzantl dosyada test senaryosu yer almaktadr, c dizini altnda

    oluacak Test_Plan_Data.csv dosyasna ise test sonular yazlacaktr.

    .csv uzantl dosya ierisindeki verileri ilemek iin test bittikten sonra Apache-Jmeter

    uygulamas ile oluturduumuz test senaryosunu ap ilgili grafik bileenlerine aarak

    Browse seeneindenTest_Plan_Data.csv dosyasnn bulunduu yeri gsterelim.

  • blog.btrisk.com @btrisk /btrisktv /btrisk

    22

    Hakkmzda

    2009 ylnda kurulmu ve sadece bilgi gvenlii hizmetlerine odaklanm olan BTRisk Bilgi

    Gvenlii ve BT Ynetiim Hizmetleri bilgi gvenlii problemine ynetim kurulu seviyesinden

    sistem odas uygulamasna kadar uzanan alanda zm retmektedir.

    BTRisk bilgi gvenlii problemini grnr hale getirerek alglanmasn, anlalmasn ve

    dolaysyla ele alnmasn mmkn hale getirmektedir.

    BTRisk bilgi gvenlii problemine kar gelitirdii yaklamlar gerek hayat koullarnda test

    etmi ve uygulanabilir hale getirmitir.

    Bilgi gvenlii ve BT ynetiim hizmet alanlarmz aadaki gibidir:

    Pentest Hizmetleri

    Bilgi Gvenlii ve BT Ynetiim Hizmetleri

    Bilgi Gvenlii Operasyon Hizmetleri

    Teknik Gvenlik Denetim Eitimleri

    Ynetiim ve Denetim Eitimleri

    zgn rnlerimiz aadaki gibidir:

    5651 Uyumlu Wi-Fi ve Kablolu Bilgi Gvenlii Risk Analizi Tek Kullanmlk Parola

    A Hotspot zm ve Denetim Uygulamas zm

    Jmeter ile Uygulama Katmannda Yk Testi GerekletirmeTemel AdmlarWeb Sunucu Test Senaryosunun Hazrlanmas Web sunucu test senaryosunu hazrlamak iin birden fazla farkl yntem bulunmaktadr. Bu makalemizde en temel admlardan balayacaz ve sonraki admlarda yeri geldike dier yntemlerden bahsedeceiz.

    Gelimi Seeneklerin KullanmHTTP(S) Test Script Recorder ile Yk(Stres) Testi Senaryosunun Hazrlanmas

    HTTPS steklerinin Proxyden GeirilmesiApache-Jmeter Sertifikasnn Web Taraycsna Yklenmesi

    Komut Satrnda Yk Testi Gerekletirme

    Hakkmzda