2. blog.btrisk.com @btrisk /btrisktv /btrisk
1
Temel Adımlar
Apache Jmeter Java tabanlı, ortam bağımsız statik ve dinamik kaynakları test etmek için
kullanılan bir yük testi aracıdır. Apache Jmeter uygulaması ile gerçekleştirebileceğiniz bazı
sunucu veya protokol türleri aşağıdaki 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 yük testimiz için gerekli olan
Apache Jmeter uygulamasını indirilelim. İndirdiğimiz “apache-jmeter-2.12.zip” arşiv
dosyasını klasöre çıkartıp, klasör içerisinde bulunan bin klasörü
içerisindeki ApacheJMeter.jar uygulamasını çalıştıralım.
3. blog.btrisk.com @btrisk /btrisktv /btrisk
2
Web Sunucu Test Senaryosunun Hazırlanması
Web sunucu test senaryosunu hazırlamak için birden fazla farklı yöntem bulunmaktadır. Bu
makalemizde en temel adımlardan başlayacağız ve sonraki adımlarda yeri geldikçe diğer
yöntemlerden bahsedeceğiz.
Bir web sunucusunu uygulama katmanında yüke karşı dayanıklığını test etmek için, öncelikli
olarak kullanıcı sayısını belirlememiz gerekmektedir.
Test Plan’a farenin sağ tık butonuna basarak Add menüsünden Thread (Users)
kısmından, Thread Group’u seçelim.
Eklemiş olduğumuz Thread Group’a ilişkin ekran görüntüsü aşağıdaki gibidir:
Thread Group içerisinde yer alan alan bazı parametre alanlarına göz atalım,
Name:Thread Group’u adlandırmak için kullanılır.
Action to be taken a Sampler error: Test yapıldığında hata durumundaki davranışını ifade
eder.
"Continue" - Hata oluşursa bile test etmeye devam et
“Start Next Thread Loop” – Hata alındığında bir sonraki dizi döngüsüne geç
"Stop Thread" – İşletim diziyi durdur
"Stop Test" - Testi durdur
4. blog.btrisk.com @btrisk /btrisktv /btrisk
3
Number of Threads (users): Oluşturulacak sanal kullanıcı (virtul user(s) veya concurrent
user(s) değeri bu alana girilir.
Ram-up period (in seconds): Number of Threads kısmında belirlenen kullanıcı sayısına kaç
saniye erişilmek isteniyorsa buraya o değer yazılır.
Loop Count: Testin kaç defa tekrarlanacağı bu alanda belirlenir. “Frover” seçeneği seçilirse
kullanıcı tarafından test durdurulana kadar yük testi devam edecektir.
Scheduler: Testin belirtilen zaman aralığında gerçekleştirilmesini sağlar.
HTTP sayfa yük testi için ayarları konfigüre etmek için Thread Group’a farenin sağ
tuşuna basarak Add menüsünden, Config Element kısmından HTTP Request
Defaults’u seçelim.
Server Name or IP: Bu alana test yapmak istediğimiz Http sunucusu alan (domain) adını veya
IP adres değerini yazalım.
Port Number: Bu alana Http sunucuna bağlanılmak istenen port numarasını yazalım.
Timeouts: Connect (Bağlantı) ve Respons (Yanıt) alanlarına mili saniye cinsinden değerler
girerek zaman aşımı değerlerini tanımlayabilirsiniz.
5. blog.btrisk.com @btrisk /btrisktv /btrisk
4
Path: Http sunucusu dizininde yer alan yol (iz) bilgisini tanımı yapılabilinir.
blog.btrisk.com sitesi için aşağıdaki gibi parametre tanımları yapılmıştır.
HTTP isteğini (HTTP Request) Thread Group’a farenin sağ tuşuna basarak Add
menüsünden, Sampler kısmında HTTP Request’ i aşağıdaki gibi ekleyebiliriz.
6. blog.btrisk.com @btrisk /btrisktv /btrisk
5
Karşımıza çıkan HTTP Request sayfası aşağıdaki gibidir.
Örnek olarak blog.btrisk.com sitesine yönelik yük testi için HTTP Request içerisinde
yer alan ilgili parametreleri aşağıdaki gibi düzenleyelim.
Path alanı yukarıda da görüleceği üzere ana sayfaya giriş olduğu için “/” değeri girilmiştir.
Ayrıca Blog.btrisk.com sitesinde yer alan diğer bir sayfaya yapılacak istek içinde yeni
bir HTTP Request ekleyip içerisindeki parametre alanlarına aşağıdaki gibi bilgiler
girilmiştir.
7. blog.btrisk.com @btrisk /btrisktv /btrisk
6
Yapılan isteklere karşılık alınan yanıt sürelerine ilişkin değerleri grafiksel olarak
görüntüleyebilmek için Thread Group’a farenin sağ tuşuna basarak Add
menüsünden, Listener kısmından Response Time Graph’ı seçelim.
Bu adımda Thread Group sayfasından kullanıcı sayısını, belirlenen kullanıcı sayısına
kaç saniyede ulaşacağını ve testin kaç defa tekrar edileceğini belirleyelim.
Son adım olarak Run menüsünden Start veya Crtl+R tuş kombinasyonunu
kullanarak yük testini başlatalım.
Test başladığında Test süresince sağ üst köşede yeşil kare yanacak ve kullanıcı sayısı
tanımlanan değere kadar artacaktır.
Test bitiminde veya test devam ederken Response Time Graph’ı seçip Graph
sekmesinden yanıt sürelerinin değişimini gözlemleyebiliriz.
9. blog.btrisk.com @btrisk /btrisktv /btrisk
8
Gelişmiş Seçeneklerin Kullanımı
Bu adımda Http ve Https temelli senaryolarımızı daha kolay bir şekilde oluşturmayı ve
Jmeter-Plugin eklentisi ile daha fazla grafik elde ederek yük testi analizlerimizin daha anlamlı
ve anlaşılır olmasını sağlayacağız.
Makalemize başlamadan önce Jmeter-Plugin.org sayfasından Extras Set eklentisini indirelim.
İndirdiğimiz Extras Set arşiv dosyasını bir klasöre çıkarıp içerisindeki dosyaları Apache-
Jmeter ana dizine kopyalayıp, var olan dosyaları yenileri ile değiştirilmesine izin verelim.
Yukarıdaki anlatılan işlemleri doğru bir şekilde gerçekleştirdiğinizde Apache-Jmeter/bin dizini
içerisinde yer alan ApacheJMeter.jar uygulamasını çalıştırdığınızda aşağıdaki gibi değişikler
olduğunu göreceksiniz.
Örneğin Listener sekmesine tıkadığınızda seçeneklerin aşağıdaki gibi artığı görülmekte.
10. blog.btrisk.com @btrisk /btrisktv /btrisk
9
HTTP(S) Test Script Recorder ile Yük(Stres) Testi Senaryosunun
Hazırlanması
Apache-Jmeter uygulamasının bulunduğu klasör içerisinden ApacheJmeter.jar
uygulamasını çalıştıralım.
Test Plan’a sağ tıklayıp Add sekmesinden Thread (user) alanından Thread Group
bileşenini seçelim.
Thread Group içerisinde yer alan daha önce temel adımlarda değindiğimiz
parametreler alanlarını yük testimizin ihtiyaçları doğrultusunda düzenleyelim
Örneğin biz yük testimizi 100 sanal kullanıcıya 10 saniyede ulaşabilecek ve senaryoyu 4 defa
tekrarlayacak şekilde düzenleyelim.
Thread Group bileşenine sağ tıklayıp Add sekmesinden Logic Controller içerisinden
Recording Controller’ı seçelim. Recorder Controller bileşenini kullanmamızın amacı,
yapacağımız istekleri bu bileşen aracılığı ile test senaryosu içerisine kayıt etmek.
11. blog.btrisk.com @btrisk /btrisktv /btrisk
10
Thread Group bileşine sağ tıklayıp Add sekmesinden Timer içerisinden Constant
Timer’ ı seçelim.
Constant Timer bileşeni ile yapılan her bir istek arasındaki bekleme süresini belirleyebiliriz.
Bu test senaryosu için yapılan istekler arasındaki bekleme süresi 300 mili saniye olarak
belirlenmiştir.
WorkBench’e sağ tıklayıp Non-Test Elements sekmesinden HTTP(S) Test Script
Recorder bileşenini seçelim.
12. blog.btrisk.com @btrisk /btrisktv /btrisk
11
HTTP(S) Test Script Recorder bileşeni bizlere tanımlayacağımız proxy aracılığı ile
herhangi bir internet tarayıcısı ile gerçekleştriceğimiz istekleri, Thread Group altında yer
alan Recoring Controller bileşeni içerisine eklenmesini sağlayacaktır.
HTTP(S) Test Script Recorder üzerinde yer alan Global Settings alanındaki Port numarasını
proxy aracalığı ile dinlemek istediğimiz Port numarasını yazalım ve Test plan content altında
yer alan Target Controller alanından yük testi senaryomuzu oluşturacağımız Recoring
Controller’ın adını aşağıdaki gibi seçelim.
Bunlara ek olarak test senaryonuz içerisinde olmasını istemediğiniz, sayfalar içerisinde yer
alan uzantıları URL Patterns to Exclude alanından belirleye bilirsiniz.
13. blog.btrisk.com @btrisk /btrisktv /btrisk
12
Tarayıcımızın Ayarlar kısmından Bağlantı ayarlarından yukarıda tanımladığımız port
numarasını 8080 ve domain başlığına localhost veya 127.0.0.1 yazalım.
Yukarı anlatılan bütün ayarlar yapıldık sonra WorkBench’in altında yer alan HTTP(S)
Test Script Recorder seçilip Start butonu tıklanıp proxy ayarları yapılmış tarayıcı
üzerinden yük testi yapacağımız ilgili web sayfasının test senaryosu kapsamında ilgili
14. blog.btrisk.com @btrisk /btrisktv /btrisk
13
alanlarında gezinerek test senaryosunu oluşturalım.
Kontrol Notu: Test senaryosunun kayıt edildiğinden emin olabilmek için Test Plan’ın
altında yer alan Thread Group’un altındaki Recording Controller sekmesi genişletelim
ve gezilen sayfalara ait ilgili linklere göz atalım.
Gelişmiş seçeneklerinin kullanımı adımında bahsediğimiz Jmeter-Plugin eklentisi ile
gelen grafiklerin ne anlama geldiğine kısaca göz atalım.
Therad Group’ sağ tıklayıp Add Listener sekmesinden aşağıda kullanım amaçları yer alan bazı
bileşenleri ekleyelim;
Response Codes per Second: Yaptığımız isteklere karşılık gelen yanıt başlığındaki
mesajlarını istatistiksel dağılımını grafiksel olarak gösterir.
Response Latencies Over Time: Yapılan isteklere karşılık alınan yanıtların gecikme
(Latencies) değerlerinin istatistiksel dağılımını grafiksel olarak gösterir.
Response Times vs Threads: Yaptığımız isteklere karşılık gelen yanıtların süresini ve o
andaki kullanıcı sayısının istatistiksel dağılımını grafiksel olarak gösterir.
Hits per Second: Bir saniyede iletilen istek sayısının istatistiksel dağılımını grafiksel
olarak gösterir.
15. blog.btrisk.com @btrisk /btrisktv /btrisk
14
Son adım olarak testimizi Ctrl + R veya Run sekmesinde Start butonuna basarak
başlatalım.
Örnek grafik çıktıları aşağıdaki gibidir:
Response Codes per Second
18. blog.btrisk.com @btrisk /btrisktv /btrisk
17
HTTPS İsteklerinin Proxyden Geçirilmesi
Jmeter fonksiyonaliteleri içerisinde yer alan HTTP(S) Test Script Recorder kullanarak 443
portundan yayın yapan yani HTTPS ile iletişim kuran sayfaları proxy’den geçirmek için Jmeter
sertifikasını yüklemeniz gerekmetedir.
Apache-Jmeter Sertifikasının Web Tarayıcısına Yüklenmesi
Apache-Jmeter sertifikasını tarayıcımıza yüklemek için aşağıdaki adımları uygulayalım:
Öncelikle ApaceheJmeter.jar uygulamasını açalım ve WorkBench’e sağ tıklayıp Add->Non-
Test Elements->HTTP(S) Test Script Recorder’ı ekleyelim.
HTTP(S) Test Script Recorder üzerinde yer alan Start butonu tıklayalım ve karşımıza çıkan
uyarıda OK butonuna basalım,
19. blog.btrisk.com @btrisk /btrisktv /btrisk
18
Oluşturulan sertifikayı Mozilla tarayıcıya yüklenmesi:
Tarayıcımızın Araçlar sekmesinde Seçenekler->Gelişmiş->Sertifikalar
bölümünden Sertifikaları Göster butonuna tıklayalım ve Yetkili sekmesine
tıklayalım.
Onay belgesi yöneticisinden İçe aktar butonuna tıklayarak ApacheJmeter’in kurulu
olduğu dizin içerisindeki bin klasörünün yolu gösterelim.
20. blog.btrisk.com @btrisk /btrisktv /btrisk
19
ApacheJMeterTemporaryRootCA.crt dosyasını seçip yükleyelim.
Tüm alanları yukarıdaki gibi kutucukları işaretleyip onaylayalım. Artık HTTPS istekleri
HTTP(S) Test Script Recorder bileşeni aracılığı ile kaydedebilirsiniz.
21. blog.btrisk.com @btrisk /btrisktv /btrisk
20
Komut Satırında Yük Testi Gerçekleştirme
Lokalde yapılacak yük (örneğin 1000 ve üzeri sanal kullanıcı ile) testinde performans
probleminin önüne geçmek için Jmeter, komut satırında parametrelerle çalıştırılmalı. Birden
fazla eklenen grafik bileşenleri yüksek kullanıcı sayısında arayüz kullanılarak yapılan
testlerde, yük testinin gerçekleştrildiği sunucuda bellek ve işlemci kullanımını büyük oranda
artırmaktadır.
Jmeter arayüz modunda istenilen test senaryosu ve grafikler ekledikten sonra yük testini
başlatmak yerine File sekmesinden Save Test Plan seçeneğini kullanarak test senaryosunu
Apache-Jmeter uygulamasının bulunduğu dizindeki bin dosyası içerisine kaydedelim.
Ayrıca Apache-JMeter’ın kullanacağı Ram miktarını aşağıdaki gibi konfigüre edelim:
Apache-Jmeter dizininde Bin klasörünün altında yer alan jmeter.bat dosyasına sağ tıklayıp
birlikte aç seçeneğini kullanarak ile notpad uygulamasıyla açalım.
Açılan sayfada “set HEAP” parametresini bulalım ve parametre içerisinde yer alan megabyte
cinsindeki bellek miktarını değiştirelim.
Örneğin: set HEAP=-Xms1024m –Xmx1024m
Yukarıda anlatılan ilgili konfigürasyonları yaptıktan sonra komut satırından Apache-Jmeter
dizini içerisindeki bin klasörüne ulaşalım.
22. blog.btrisk.com @btrisk /btrisktv /btrisk
21
Komut satırına jmeter -t TestPlan.jmx -n -l c:Test_Plan_Data.csv yazalım.
.jmx uzantılı dosyada test senaryosu yer almaktadır, c dizini altında
oluşacak Test_Plan_Data.csv dosyasına ise test sonuçları yazılacaktır.
.csv uzantılı dosya içerisindeki verileri işlemek için test bittikten sonra Apache-Jmeter
uygulaması ile oluşturduğumuz test senaryosunu açıp ilgili grafik bileşenlerine açarak
Browse seçeneğindenTest_Plan_Data.csv dosyasının bulunduğu yeri gösterelim.
23. blog.btrisk.com @btrisk /btrisktv /btrisk
22
Hakkımızda
2009 yılında kurulmuş ve sadece bilgi güvenliği hizmetlerine odaklanmış olan BTRisk Bilgi
Güvenliği ve BT Yönetişim Hizmetleri bilgi güvenliği problemine yönetim kurulu seviyesinden
sistem odası uygulamasına kadar uzanan alanda çözüm üretmektedir.
BTRisk bilgi güvenliği problemini görünür hale getirerek algılanmasını, anlaşılmasını ve
dolayısıyla ele alınmasını mümkün hale getirmektedir.
BTRisk bilgi güvenliği problemine karşı geliştirdiği yaklaşımları gerçek hayat koşullarında test
etmiş ve uygulanabilir hale getirmiştir.
Bilgi güvenliği ve BT yönetişim hizmet alanlarımız aşağıdaki gibidir:
Pentest Hizmetleri
Bilgi Güvenliği ve BT Yönetişim Hizmetleri
Bilgi Güvenliği Operasyon Hizmetleri
Teknik Güvenlik Denetim Eğitimleri
Yönetişim ve Denetim Eğitimleri
Özgün ürünlerimiz aşağıdaki gibidir:
5651 Uyumlu Wi-Fi ve Kablolu Bilgi Güvenliği Risk Analizi Tek Kullanımlık Parola
Ağ Hotspot Çözümü ve Denetim Uygulaması Çözümü