JMeter etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
JMeter etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Jmeter full rehber. Örnek senaryolarla Jmeter nedir? Nasıl kullanılır? Hangi durumlar test edilir? Bileşenleri nelerdir? Ne tür uygulamalar test edilebilir?


Apache JMeter, Java tabanlı, açık kaynaklı bir performans testi aracıdır. JMeter, web uygulamaları, RESTful web hizmetleri, veritabanı sorguları, FTP sunucuları, MQTT protokolü gibi çeşitli servislerin ve protokollerin performansını, dayanıklılığını ve iş yükünü test etmek için kullanılabilir.



JMeter ile özellikle aşağıdaki türden testler yapılabilir:


Performans Testi: Bir uygulamanın belirli bir iş yükü altında nasıl performans gösterdiğini test eder.

Yük Testi: Bir uygulamanın belirli bir yük altında nasıl performans gösterdiğini test eder.

Stres Testi: Sistemlerin yüksek talep altında nasıl tepki verdiğini kontrol eder.

1. Yük Testi (Load Testing):


Yük testi, bir sistem veya uygulamanın belirli bir yük altında nasıl performans gösterdiğini değerlendirmek için kullanılır. Yük genellikle kullanıcı sayısı veya işlem sayısı gibi ölçütlerle ifade edilir. Yük testi, genellikle uygulamanın ölçeklenebilirliğini değerlendirmek ve performansı optimize etmek için kullanılır.


2. Performans Testi (Performance Testing):


Performans testi, bir uygulamanın belirli koşullar altında ne kadar hızlı veya verimli olduğunu belirlemek için kullanılır. Bu, bir sistem veya uygulamanın hızını, yanıt süresini, kullanılabilirliğini, kaynak kullanımını ve güvenilirliğini ölçmeyi içerir. Performans testi, genellikle bir uygulamanın genel kalitesini ve kullanıcı deneyimini değerlendirmek için kullanılır.


3. Stres Testi (Stress Testing):


Stres testi, bir sistem veya uygulamanın aşırı yük veya stres altında nasıl performans gösterdiğini değerlendirmek için kullanılır. Bu genellikle, bir uygulamanın kırılma noktasını bulmak ve uygulamanın aşırı stres durumlarında nasıl başarısız olduğunu anlamak için kullanılır. Stres testi, genellikle bir uygulamanın dayanıklılığını ve hata toleransını değerlendirmek için kullanılır.


JMeter kullanımı genelde birkaç adımdan oluşur:


Test Planı Oluşturma: Bu, testinizin genel yapılandırmasını belirler. Test planı, JMeter'in nasıl davranacağını belirler.

Thread (Kullanıcı) Grupları Ekleme: Bu adımda, kaç tane sanal kullanıcı oluşturulacağını ve bu kullanıcıların hangi hızda talepler göndereceğini belirlersiniz.

Örnekleyiciler Ekleme: Örnekleyiciler, uygulamanın belirli işlemlerini gerçekleştirir. Örneğin, bir HTTP isteği gönderme ya da bir veritabanı sorgusu çalıştırma.

Mantık Kontrolleri Ekleme: Mantık kontrolleri, testinizin akışını kontrol eder. Örneğin, bir döngü içerisinde belirli bir işlemin kaç kere gerçekleşeceğini belirleyebilirsiniz.

Dinleyiciler (Listeners) Ekleme: Dinleyiciler, test sonuçlarını görselleştirir. JMeter, sonuçları çeşitli formatlarda sunar (örneğin tablo, grafik, ağaç görünümü).

Bir örnek senaryo olarak, bir web sitesinin yük altında nasıl performans gösterdiğini test edebiliriz:


Öncelikle JMeter'de bir test planı oluştururuz. Bu planın içerisine bir thread grubu ekleriz ve bu grubun 100 sanal kullanıcıdan oluşacağını belirtiriz.

Bir HTTP Request örnekleyici ekleriz. Bu örnekleyiciye hedef web sitesinin URL'sini gireriz.

Bir döngü kontrolü ekleriz ve bu döngünün 1000 kere çalışacağını belirtiriz. Bu sayede her bir sanal kullanıcının 1000 kere HTTP isteği göndereceğini belirtmiş oluruz.

Son olarak, bir "View Results in Table" dinleyicisi ekleriz. Bu dinleyici, her bir HTTP isteğinin sonucunu bir tablo formatında gösterecektir.

Testi çalıştırdığımızda, JMeter 100 sanal kullanıcı oluşturur ve her biri 1000 kere HTTP isteği gönderir. Test sonuçları dinleyicinin gösterdiği tabloda görüntülenir.

Bu temel senaryo, web siteleri, web uygulamaları, API'ler ve daha pek çok uygulama üzerinde performans testleri yapmak için JMeter'in nasıl kullanılabileceğine dair bir örnektir. Bu senaryo, daha karmaşık testler için temel olabilir. JMeter ayrıca çok çeşitli eklentilerle genişletilebilir ve bu sayede daha spesifik ihtiyaçlara yanıt verebilir.


Senaryo 1: Web Sitesi Performans Testi


Bu senaryoda, bir e-ticaret sitesinin ana sayfasının yüklenme süresini ölçeceğiz.


JMeter'de yeni bir Test Planı oluşturun ve adını "Website Performance Test" olarak belirleyin.

Test Planı altına bir Thread Group ekleyin. Thread count olarak 50, loop count olarak 10 seçin. Bu şekilde, 50 sanal kullanıcının her biri 10 kere web sitesine erişecek.

Thread Group altına bir HTTP Request ekleyin. Server Name veya IP alanına hedef sitenizin adresini, Path alanına "/" yazın.

Thread Group'a bir "Summary Report" listener ekleyin. Bu listener, isteklerin toplam süresi, hata oranı, ortalama süreler gibi genel verileri sağlar.

Testi başlatın ve Summary Report'taki sonuçları analiz edin.

Senaryo 2: RESTful API Yük Testi


Bu senaryoda, bir RESTful API'nin belirli bir endpoint'ine yapılan POST isteklerinin performansını ölçeceğiz.


JMeter'de yeni bir Test Planı oluşturun ve adını "API Load Test" olarak belirleyin.

Test Planı altına bir Thread Group ekleyin. Bu senaryoda, 100 sanal kullanıcının her birinin 500 kere POST isteği göndereceğini varsayalım. Bunun için Thread count olarak 100, loop count olarak 500 seçin.

Thread Group altına bir HTTP Request ekleyin. Server Name veya IP alanına API'nin adresini, Method olarak "POST"u seçin, ve Path alanına hedef endpoint'i girin. Eğer isteğin bir body'si varsa, "Body Data" alanına girin.

Thread Group'a bir "View Results in Table" listener ekleyin. Bu listener, her bir isteğin süresini ve sonucunu detaylı bir şekilde görüntüler.

Testi başlatın ve View Results in Table'daki sonuçları analiz edin.

Senaryo 3: Veritabanı Performans Testi


Bu senaryoda, bir veritabanına yapılan sorguların performansını ölçeceğiz.


JMeter'de yeni bir Test Planı oluşturun ve adını "Database Performance Test" olarak belirleyin.

Test Planı altına bir Thread Group ekleyin. Bu senaryoda, 20 sanal kullanıcının her birinin 1000 kere veritabanı sorgusu göndereceğini varsayalım. Bunun için Thread count olarak 20, loop count olarak 1000 seçin.

Thread Group altına bir JDBC Request ekleyin. Database URL, JDBC Driver, Username, Password alanlarını doldurun ve SQL Query alanına sorgunuzu girin.

Thread Group'a bir "View Results in Tree" listener ekleyin. Bu listener, her bir sorgunun sonucunu ve süresini detaylı bir şekilde görüntüler.

Testi başlatın ve View Results in Tree'deki sonuçları analiz edin.

Bu senaryolar, JMeter'in birçok farklı durumda ve çeşitli protokollerle nasıl kullanılabileceğini göstermektedir. Aslında JMeter, birçok türdeki uygulama ve servisin performansını test etmek için kullanılabilir. JMeter'in bu esnekliği, onu çok popüler bir performans testi aracı yapmaktadır.

Apache JMeter, HTTP, JDBC, JMS, Web Services, LDAP, TCP ve diğer birçok protokol üzerinde yük ve performans testleri yapmayı destekler. JMeter ayrıca çoklu iş parçacığı yoluyla birden çok kullanıcıyı aynı anda taklit edebilir, böylece bir uygulamanın veya hizmetin yük altında nasıl performans gösterdiğini ölçebilir.


Protokoller ve Servisler


JMeter'ın desteklediği protokoller ve hizmetler:


HTTP/HTTPS: Web siteleri ve HTTP/HTTPS tabanlı uygulamalar üzerinde testler yapabilirsiniz. JMeter, HTTP isteklerini oluşturmak, göndermek ve yanıtları almak için kullanılır.

FTP: FTP sunucuları üzerinde yük ve performans testleri yapabilirsiniz.

Database via JDBC: Veritabanı performansını ölçmek için SQL sorguları oluşturabilir ve çalıştırabilirsiniz.

LDAP: LDAP hizmetleri üzerinde yük ve performans testleri yapabilirsiniz.

SOAP: SOAP tabanlı web hizmetlerini test edebilirsiniz.

Mail - SMTP(S), POP3(S) and IMAP(S): E-posta sunucuları üzerinde yük ve performans testleri yapabilirsiniz.

TCP: TCP tabanlı uygulamalar ve hizmetler üzerinde yük ve performans testleri yapabilirsiniz.

Java Objects: Java nesnelerini test etmek için kullanılabilir.

Özellikler


JMeter, kullanım kolaylığı ve geniş özellik seti ile bilinir:


Grafiksel Arayüz: JMeter, test planlarını oluşturmak ve sonuçları görselleştirmek için kullanıcı dostu bir grafiksel arayüz sunar. Bu arayüz, kullanıcıların test sürecini kolayca takip etmelerini sağlar.

Multi-threading framework: JMeter, çoklu iş parçacığı yoluyla birçok sanal kullanıcının yükünü simüle edebilir. Bu, bir uygulamanın veya hizmetin yük altında nasıl performans gösterdiğini ölçmek için esastır.

Ekstra Eklentiler: JMeter topluluğu, JMeter'in işlevselliğini genişletmek için bir dizi eklenti geliştirdi. Bu eklentiler, belirli ihtiyaçları karşılamak için daha fazla özelleştirme ve işlevsellik sağlar.

Distributed Testing: JMeter, dağıtılmış test yeteneği ile birlikte gelir. Bu, aynı anda birden fazla JMeter örneğini çalıştırarak ve sonuçları birleştirerek daha büyük ölçekte testler yapmayı mümkün kılar.

Replay: JMeter, testleri tekrar oynatabilir, bu da hataları tespit etmek ve düzeltmek için çok değerlidir.

Flexible Scripting: Test planlarını oluştururken JMeter, kullanıcıların işlemleri çeşitli sıralamalarla ve koşullarla düzenlemelerine olanak tanır. Bu, oldukça esnek ve ayrıntılı test senaryoları oluşturmayı mümkün kılar.

Sonuç olarak, Apache JMeter, geniş özellik seti ve çok yönlülüğü sayesinde birçok farklı türde uygulama ve hizmet üzerinde yük ve performans testleri yapmak için son derece güçlü ve etkili bir araçtır. İster web tabanlı bir uygulamayı, ister bir veritabanını, ister bir FTP sunucusunu test ediyor olun, JMeter kullanıcılara bu işlemleri kolayca ve etkin bir şekilde gerçekleştirme yeteneği sunar.


Jmeter'in grafiksel arayüzü nasıldır?


Apache JMeter, kullanıcı dostu ve interaktif bir grafiksel arayüz sunar. Bu arayüz, hem test planlarını oluşturmak ve düzenlemek, hem de test sonuçlarını analiz etmek için kullanılır. JMeter'in grafiksel arayüzünün ana bölümleri şunlardır:


Test Plan: Bu, JMeter'deki ana yapıdır. Test Plan, bir veya daha fazla Thread Group, mantıksal denetleyiciler, örnekleyiciler, listenerlar ve konfigürasyon öğeleri içerir.


Workbench: Workbench, testlerinizi oluştururken ve düzenlerken geçici olarak öğeleri saklamak için kullanılır. Bu, özellikle büyük ve karmaşık test planları oluştururken kullanışlıdır.


Thread Group: Thread Group, JMeter'de bir kullanıcı grubunu temsil eder. Her Thread, bir kullanıcının bir web sitesi veya uygulamayla nasıl etkileşime girdiğini taklit eder.


Samplers: JMeter'ın işlemi (örneğin bir HTTP isteği gönderme veya bir veritabanı sorgusu çalıştırma) gerçekleştiren bileşenleridir.


Listeners: Listenerlar, test sonuçlarını farklı formatlarda sunar. Bu, test verilerini çeşitli biçimlerde (örneğin tablolar, grafikler, ağaçlar veya basit metin) görüntülemeyi ve analiz etmeyi mümkün kılar.


Logic Controllers: Mantıksal kontrol elemanları, testlerin akışını denetler. Örneğin, belirli işlemlerin belirli bir sırayla veya belirli bir koşul altında gerçekleşmesini sağlar.


Configuration Elements: Konfigürasyon elemanları, testlerinizde kullanılan örnekleyicilerin veya listenerların davranışını özelleştirir.


Assertion: Assertionlar, test sonuçlarının belirli koşulları karşılayıp karşılamadığını kontrol eder.


JMeter'in bu arayüz bileşenleri, test planlarını düzenlemeyi ve test sonuçlarını analiz etmeyi kolay ve verimli hale getirir. Ancak, JMeter'in grafiksel arayüzü oldukça güçlü ve karmaşıktır, bu yüzden yeni başlayanların öğrenmesi biraz zaman alabilir. Yine de, biraz pratikle, kullanıcılar hızla test planları oluşturma, testleri çalıştırma ve sonuçları analiz etme konusunda yeteneklerini geliştirebilirler.


En popüler eklentiler nelerdir?


Apache JMeter için geliştirilmiş birçok eklenti bulunmaktadır. İşte en popüler ve genellikle kullanılan bazı JMeter eklentileri:


JMeter Plugins Manager: JMeter'in en popüler ve yararlı eklentisi Plugins Manager'dır. Bu eklenti, JMeter'a yeni yetenekler eklemek için diğer eklentilerin kolayca indirilmesini ve yönetilmesini sağlar.


Custom Thread Groups: Standart Thread Groups yerine, daha karmaşık iş yükü modellemelerine olanak sağlayan Custom Thread Groups eklentisini kullanabilirsiniz. Örneğin, "Concurrency Thread Group" eklentisi, belirli bir eşzamanlı kullanıcı sayısını sürdürmenizi sağlar.


Ultimate Thread Group: Bu eklenti, karmaşık yük profilleri oluşturmayı sağlar. Örneğin, belirli bir süre boyunca yükü artırma veya azaltma gibi senaryoları modellemek için kullanılabilir.


Throughput Shaping Timer: Bu eklenti, isteklerin geçiş hızını ayarlamanıza olanak sağlar ve belirli bir süre boyunca belirli bir istek sayısını sürdürmeyi mümkün kılar.


Flexible File Writer: Bu eklenti, standart CSV dosyası yerine daha esnek bir çıktı dosyası oluşturmanızı sağlar.


Precise Throughput Timer: Bu eklenti, çok hassas bir yük profili oluşturmayı ve sürekli bir istek hızını sürdürmeyi sağlar.


JSON Plugins: JSON veri formatıyla çalışmayı kolaylaştıran bir dizi eklenti bulunmaktadır. Örneğin, JSON Path Extractor, JSON yanıtlardan veri çıkarmayı sağlar.


Response Times Over Time: Bu eklenti, test süresi boyunca yanıt sürelerinin grafiğini çizer.


PerfMon Metrics Collector: Bu eklenti, sunucu tarafındaki performans ölçümlerini (örneğin CPU yüklemesi, bellek kullanımı vb.) toplamanıza olanak sağlar.


Bu eklentiler, Apache JMeter'ın çok yönlülüğünü ve özelleştirilebilirliğini artırır, bu da onu çok çeşitli test senaryolarını kapsayabilen güçlü bir yük ve performans testi aracı yapar.


Distributed Testing nasıl yapılır? Örnek bir senaryo ile açıklar mısın?


Apache JMeter ile dağıtılmış (distributed) test yapmak, büyük yük testleri gerçekleştirmek için kullanılır. Bu, tek bir JMeter örneğinin üstesinden gelebileceğinden daha fazla sanal kullanıcı gerektiren durumlar için özellikle yararlıdır. Ayrıca, birden çok lokasyondan test yapmak için de kullanılır.


Dağıtılmış test yapmak için birden fazla JMeter örneği kullanılır. Bunlardan biri "master" olarak işlev görürken, diğerleri "slave" olarak işlev görür. Master, test planını yönetir ve tüm slave'lardan veri toplar. Slave'lar, asıl yük testini gerçekleştirir.


Örnek Bir Senaryo


Aşağıda, dağıtılmış bir yük testi yapma süreci açıklanmıştır:


JMeter Kurulumu: Her bir sistem (master ve slave'lar) üzerinde JMeter'ın kurulu olduğundan emin olun.


Test Planının Hazırlanması: Her zamanki gibi bir test planı oluşturun. Bu test planı daha sonra master üzerinden slave'lara dağıtılacaktır.


Slave Bilgilerinin Girilmesi: Master makinedeki JMeter'da, jmeter.properties veya user.properties dosyasını bulun ve düzenleyin. remote_hosts parametresini slave'ların IP adresleri veya hostname'leri ile doldurun. Eğer birden fazla slave varsa, adresler virgülle ayrılmalıdır. Örneğin, remote_hosts=192.168.0.101,192.168.0.102.


Slave'ları Başlatma: Her bir slave makinede, JMeter'ı slave modunda başlatın. Bunu yapmak için, terminalden veya komut satırından aşağıdaki komutu çalıştırın: jmeter-server veya Windows için jmeter-server.bat.


Master'ı Başlatma: Testi başlatmak için master makinedeki JMeter'ı kullanın. Run -> Remote Start All seçeneğini seçerek, tüm slave'larda testin başlatılmasını tetikleyin.


Testin İzlenmesi ve Sonuçların Toplanması: Test süresince, master makinenin listenerları, tüm slave'lardan verileri toplar ve bunları görselleştirir.


Bu, bir JMeter dağıtılmış testi yapmanın genel bir örneğidir. Bu süreç, bir web sitesinin veya uygulamanın çok büyük ölçekteki performansını test etmek için önemli bir yöntemdir. Ayrıca, dağıtılmış testler, aynı anda birden çok coğrafi konumdan uygulamanın performansını test etmek için de kullanılabilir. Bu, genellikle küresel bir kullanıcı kitlesine hizmet veren uygulamalar için önemlidir.


Multi-threading framework'ün yapısı nasıldır? Örnek bir senaryo ile açıklar mısın?


JMeter, bir multi-threading çerçevesi (framework) olarak tasarlanmıştır. JMeter'deki her "thread" bir kullanıcıyı simüle eder ve bir test planının belirli bir bölümünü uygular. Bu multi-threading özelliği, JMeter'ın aynı anda çok sayıda kullanıcıyı simüle etmesine olanak sağlar, bu da onu yüksekliği ve çok kullanıcılı yük testleri için ideal bir araç yapar.


JMeter'deki bir thread, belirli bir kullanıcı etkileşimini modelleyen bir dizi adımı uygular. Bu adımlar, genellikle HTTP istekleri veya veritabanı sorguları şeklinde "örnekleyiciler" veya "samplers" olarak adlandırılır. Bu adımlar, thread'in belirli bir zamanda yalnızca bir adımı uygulamasını sağlayan bir "Thread Group" içinde düzenlenir.


Örnek Senaryo


Örneğin, bir online alışveriş sitesini test ederken, bir thread grup içindeki thread'lerin aşağıdaki adımları uygulamasını isteyebiliriz:


Ana sayfaya gidin (HTTP GET isteği).

Bir ürün arayın (HTTP POST isteği).

Bir ürünün detaylarını görüntüleyin (HTTP GET isteği).

Ürünü sepete ekleyin (HTTP POST isteği).

Ödeme işlemine devam edin (HTTP GET isteği).

Bu adımları bir Thread Group içinde organize ederiz ve ardından JMeter'da bu Thread Group'u bir dizi thread ile çalıştırabiliriz. Her bir thread, bu adımları uygulayarak bir kullanıcının alışveriş sitesindeki gezinme sürecini simüle eder.


Thread Group, uygulamanın farklı yükler altında nasıl performans gösterdiğini test etmek için kullanılabilir. Örneğin, 10, 100 veya 1000 thread çalıştırarak, uygulamanın farklı kullanıcı sayılarına nasıl yanıt verdiğini görebiliriz.


JMeter'daki bu multi-threading yeteneği, çeşitli yük ve performans testi senaryolarını modelleme esnekliği sağlar. Bu, JMeter'ın hem basit hem de karmaşık yük testleri için güçlü ve esnek bir araç olmasını sağlar.


Replay nedir? Örnek bir senaryo ile açıklar mısın?


"Replay", genellikle bir kullanıcının veya kullanıcıların bir web sitesi veya uygulamadaki etkinliklerini tekrar oynatmak için kullanılan bir terimdir. Replay mekanizması, genellikle kullanıcı etkinliklerini kaydeden ve bu etkinlikleri daha sonra tekrar oynatabilen bir araç veya sistem tarafından sağlanır.


Replay, birçok farklı senaryoda kullanılabilir. Örneğin, bir hata durumunu tekrarlamak veya bir yük testi senaryosunu simüle etmek için kullanılabilir. Replay, genellikle gerçek kullanıcı etkinliğini simüle eder, bu nedenle gerçek dünya senaryolarının daha doğru bir şekilde test edilmesini sağlar.


Örnek Senaryo


Bir online alışveriş sitesini test ettiğimizi varsayalım. Bir kullanıcının siteyi ziyaret etmesi, bir ürün araması, sepete eklemesi ve satın alması işlemini kaydetmek isteyebiliriz. Bu işlemi bir "HTTP(S) Test Script Recorder" aracıyla kaydedebiliriz. Bu araç, kullanıcının tarayıcısındaki tüm HTTP isteklerini kaydeder.


Bu kaydedilmiş işlemi daha sonra tekrar oynatabiliriz. Bu, aynı işlemi defalarca tekrar etme ve her defasında nasıl performans gösterdiğini gözlemleme yeteneği sağlar. Bu, ayrıca yük testi için de kullanılabilir; yani, bu işlemi yüzlerce veya binlerce "kullanıcı" tarafından eşzamanlı olarak gerçekleştirilmesini simüle edebiliriz.


Bu, özellikle web sitelerinin ve web uygulamalarının yük testi için çok değerlidir. Çünkü bu, aynı işlemi gerçekleştiren birçok kullanıcının sisteme ne kadar yük bindireceğini görmemizi sağlar. Ayrıca, belirli bir işlemin yük altında ne kadar hızlı veya yavaş olduğunu belirlememizi sağlar.


Sonuç olarak, replay mekanizması, özellikle web siteleri ve web uygulamaları gibi karmaşık sistemlerin performansını test etmek için önemli bir araçtır.


Flexible Scripting'i örnek bir senaryo ve kodla anlatır mısın?


ChatGPT

Flexible Scripting, JMeter'ın bir özelliğidir. Bu özellik, test planlarının herhangi bir duruma uyum sağlamasını sağlar. Örneğin, bir testin bazı parametrelerini veya işlemlerini çalışma zamanında değiştirmek isteyebilirsiniz. Bu, "If Controller", "While Controller", "Switch Controller" ve "ForEach Controller" gibi mantıksal kontrol yapıları kullanılarak ve ayrıca JavaScript, Groovy gibi diller ile yazılan özel kod parçacıkları eklenerek gerçekleştirilebilir.


Örnek Senaryo


Aşağıdaki senaryoda, bir e-ticaret sitesindeki belirli bir ürünün detaylarını getirme sürecini test etmek isteyelim:


Test planımızda, bir HTTP Request örnekleyicisini (sampler) kullanarak bu ürünün detay sayfasına bir GET isteği gönderiyoruz. Ancak, her seferinde farklı bir ürün ID'si ile testi gerçekleştirmek istiyoruz. Bu, bir ürünün detay sayfasının farklı ürünler için ne kadar hızlı yüklendiğini test etmemizi sağlar.


Bu durumda, bir CSV dosyasına bir dizi ürün ID'si ekleyebiliriz ve JMeter'da bir CSV Data Set Config kullanabiliriz. Bu, her bir threadin farklı bir ürün ID'si ile testi çalıştırmasını sağlar.


Aşağıda bu senaryonun JMeter test planının bir parçasını gösteren örnek bir kod parçacığı bulunmaktadır:


xml

Copy code

<TestPlan>

  ...

  <hashTree>

    <CSVDataSet>

      <stringProp name="filename">product_ids.csv</stringProp>

      <stringProp name="variableNames">PRODUCT_ID</stringProp>

    </CSVDataSet>

    <hashTree/>

    <ThreadGroup>

      ...

      <hashTree>

        <HTTPSamplerProxy>

          <stringProp name="path">/product/${PRODUCT_ID}</stringProp>

        </HTTPSamplerProxy>

        <hashTree/>

      </hashTree>

    </ThreadGroup>

  </hashTree>

</TestPlan>

Bu kod parçacığı, bir CSV dosyasını (product_ids.csv) okur ve her bir satırın bir PRODUCT_ID içerdiğini varsayar. Daha sonra, her bir thread için bu PRODUCT_ID değerini bir HTTP GET isteğinin bir parçası olarak kullanır. Bu, farklı ürün ID'lerine karşılık gelen farklı ürün detay sayfalarının performansını test etmemizi sağlar.


Bu, JMeter'ın Flexible Scripting yeteneğinin bir örneğidir. Bu yetenek, testlerin belirli gereksinimlerinizi karşılayacak şekilde özelleştirilmesini sağlar. Test planlarının daha karmaşık ve gerçekçi senaryoları simüle etmesini sağlar.


Flexible Scripting'i daha fazla senaryo ve kod verir misin?


Örnek Senaryo


Bir web sitesinin belirli saatlerde ne kadar hızlı yüklendiğini ölçmek istiyoruz. Belirli bir saatte (örneğin gece yarısı), web sitesinin daha hızlı yüklendiğini varsayalım. Diğer saatlerde (örneğin öğleden sonra), web sitesinin daha yavaş yüklendiğini varsayalım. Bu senaryoda, belirli bir saatte testi çalıştırmak ve sonuçları karşılaştırmak istiyoruz.


Bu durumda, bir "If Controller" ve bir "JSR223 Sampler" kullanabiliriz. "If Controller" belirli bir koşulun doğru olup olmadığını kontrol eder ve "JSR223 Sampler", Groovy veya JavaScript gibi bir dilde özel kodu çalıştırmamızı sağlar.


Aşağıdaki kod parçacığı, yalnızca belirli bir saatte (örneğin saat 00:00 ve 01:00 arası) testin çalıştırılmasını sağlar:


xml

Copy code

<TestPlan>

  ...

  <hashTree>

    <ThreadGroup>

      ...

      <hashTree>

        <IfController>

          <stringProp name="condition">${__groovy(((new Date()).hours >= 0) &amp;&amp; ((new Date()).hours &lt; 1))}

          <boolProp name="useExpression">true</boolProp>

        </IfController>

        <hashTree>

          <HTTPSamplerProxy>

            ...

          </HTTPSamplerProxy>

          <hashTree/>

        </hashTree>

      </hashTree>

    </ThreadGroup>

  </hashTree>

</TestPlan>

Bu kod parçacığı, Groovy dilinde yazılmış bir ifade kullanarak mevcut saatin 00:00 ve 01:00 arasında olup olmadığını kontrol eder. Eğer bu koşul doğruysa, HTTP Request örnekleyicisini (sampler) çalıştırır ve web sitesinin isteğini gönderir.


Bu, JMeter'ın Flexible Scripting yeteneğinin bir başka örneğidir. Bu yetenek, testlerin belirli koşullar altında nasıl davranacağını dinamik olarak kontrol etmemizi sağlar. Bu, testlerin gerçekçi ve karmaşık senaryoları simüle etmesini sağlar ve daha anlamlı ve yararlı sonuçlar elde etmemizi sağlar.

JMeter nedir? JMeter ile neler yapabilirim?



JMeter nedir?


JMeter, Apache Software Foundation tarafından geliştirilen açık kaynaklı bir performans testi aracıdır. JMeter, web uygulamaları, FTP sunucuları, veritabanları, web servisleri ve diğer çeşitli servisler gibi farklı protokoller üzerinde yük testleri yapmak ve performanslarını ölçmek için kullanılabilir.

JMeter, kullanıcı davranışlarını simüle edebilen bir grafik arayüzüne sahiptir ve birçok kullanıcının eşzamanlı olarak eriştiği uygulamaların performansını test etmek için senaryolar oluşturabilirsiniz. JMeter, çeşitli veri kaynaklarından veri okuyabilir, veri yazabilir ve verileri veri tabanlarına ve dosyalara yazabilir.

JMeter, birçok dil ve protokol için destek sağlar ve birden fazla platformda (Windows, Linux, macOS) çalışabilir. Ayrıca, eklentiler aracılığıyla özellikleri genişletilebilir ve özelleştirilebilir.


JMeter ile neler yapabilirim?


JMeter, bir performans test aracı olarak, aşağıdaki işlemleri gerçekleştirebilir:

  1. Yük testleri yapabilir: Web uygulamalarına, web servislerine, FTP sunucularına, veritabanlarına ve diğer protokollere yük testleri uygulayabilirsiniz. Bu sayede uygulamanın yük altında nasıl davrandığını ölçebilirsiniz.
  2. Performans testleri yapabilir: Uygulamanın performansını ölçmek için farklı metrikleri izleyebilirsiniz. Bu sayede, uygulamanın hangi alanlarında gecikmeler olduğunu veya hangi alanların daha hızlı olduğunu öğrenebilirsiniz.
  3. Farklı senaryolar oluşturabilirsiniz: Farklı kullanıcı senaryoları oluşturarak uygulamanın farklı durumlarda nasıl performans gösterdiğini ölçebilirsiniz. Örneğin, farklı sayfa boyutlarına sahip sayfalara, farklı sayfa yüklemelerine veya farklı kullanıcı davranışlarına sahip senaryolara sahip olabilirsiniz.
  4. Veritabanlarına erişebilirsiniz: JMeter, farklı veritabanlarına bağlanabilir ve veri tabanlarına sorgular gönderebilir. Bu sayede uygulamanın veritabanı performansını da ölçebilirsiniz.
  5. Test sonuçlarını analiz edebilirsiniz: JMeter, test sonuçlarını grafikler ve raporlar halinde sunar. Bu sayede, uygulamanın performansındaki gelişmeleri izleyebilirsiniz. Ayrıca, test sonuçlarını farklı formatlarda dışa aktarabilirsiniz.
  6. Uzaktan test yapabilirsiniz: JMeter, uzaktan test yapmanıza olanak sağlar. Bu sayede, uygulamanızın farklı yerlerdeki sunucularda nasıl performans gösterdiğini ölçebilirsiniz.
  7. Farklı protokollerle çalışabilirsiniz: JMeter, HTTP, FTP, JDBC, JMS, SOAP, LDAP, SMTP ve diğer birçok protokolü destekler. Bu sayede, farklı protokoller üzerinde çalışan uygulamaların performansını ölçebilirsiniz.


Jmeter için örnek bir senaro verebilir misin?



Tabii, örnek bir senaryo aşağıdaki gibi olabilir:

Senaryo adı: Basit Bir Web Uygulaması Yük Testi

Senaryo açıklaması: Bu senaryo, basit bir web uygulamasının performansını ölçmek için tasarlanmıştır. Senaryo, kullanıcıların ana sayfaya giriş yapmasını ve ardından belirli sayfalara tıklamasını simüle eder.

Adımlar:

  1. HTTP Örnekleyici ekleme: İlk adım, senaryoya bir HTTP örnekleyici eklemektir. Bu örnekleyici, senaryo sırasında kullanılan web sunucusuna bağlanacak ve istekleri gönderecektir.
  2. Web uygulamasına giriş yapma: İkinci adım, kullanıcının web uygulamasına giriş yapmasını simüle etmek için bir HTTP isteği göndermektir. Bu istek, kullanıcının kimlik bilgilerini içerecek şekilde yapılandırılmalıdır.
  3. Ana sayfaya erişim: Üçüncü adım, kullanıcının ana sayfaya erişimini simüle etmek için bir HTTP isteği göndermektir.
  4. Belirli sayfalara erişim: Dördüncü adım, kullanıcının belirli sayfalara erişimini simüle etmek için HTTP istekleri göndermektir. Bu sayfalar, uygulamanın en çok kullanılan sayfaları olabilir veya özel test amaçlarına hizmet edebilir.
  5. İşlem süresi ayarlama: Beşinci adım, istekler arasındaki gecikmeyi simüle etmek için işlem süresini ayarlamaktır. Bu süreler, gerçek kullanıcılardan alınan verilere dayanarak belirlenebilir.
  6. Thread Group ayarları: Altıncı adım, senaryo sırasında kullanılan thread gruplarının ayarlarını belirlemektir. Bu ayarlar, senaryonun farklı kullanıcı sayılarına ve zamanlama durumlarına nasıl tepki verdiğini ölçmenize olanak tanır.
  7. Testi başlatma: Yedinci adım, testi başlatmak için "Run" düğmesine tıklamaktır. Test sırasında, JMeter istekleri gönderir ve web uygulamasının performansını ölçer.
  8. Test sonuçlarının analizi: Son adım, test sonuçlarını analiz etmek için JMeter raporlarını kullanmaktır. Bu raporlar, uygulamanın performansını ölçmenize ve olası sorunları tanımlamanıza olanak tanır.


JMeter Thread Group ayarları ne için kullanılır?



JMeter'da Thread Group, senaryo sırasında kullanılan threadlerin davranışını ayarlamak için kullanılır. Thread Group, aynı senaryoyu farklı kullanıcı sayılarına, farklı zamanlama ayarlarına ve diğer değişkenlere göre çalıştırmak için kullanılabilir.

Thread Group ayarları, senaryonun yükünü, senaryonun sırasını ve senaryo sırasında hangi isteklerin ne sıklıkta yapılacağını belirler. Aşağıdaki gibi çeşitli Thread Group ayarları vardır:

  1. Thread Count (Thread Sayısı): Thread Group'daki maksimum thread sayısını belirler. Bu ayar, senaryo sırasında kaç kullanıcının eşzamanlı olarak web uygulamasına erişebileceğini belirler.
  2. Ramp-up period (Artan zaman dilimi): Bu ayar, kullanıcıların senaryoya ne sıklıkla eklenmesi gerektiğini belirler. Örneğin, 100 kullanıcının senaryoya eklenmesi ve senaryonun 10 saniyede tamamlanması gerektiğinde, artan zaman dilimi 10 saniye / 100 kullanıcı = 0.1 saniye olarak ayarlanabilir.
  3. Loop count (Döngü sayısı): Bu ayar, her thread'in senaryo sırasında ne kadar süre çalışacağını belirler. Örneğin, 100 kullanıcının her birinin senaryoyu 5 kez çalıştırması gerekiyorsa, döngü sayısı 5 olarak ayarlanabilir.
  4. Scheduler (Zamanlayıcı): Bu ayar, senaryonun ne zaman başlayacağını ve ne kadar süre çalışacağını belirler. Örneğin, senaryonun gece 12'den sabah 6'ya kadar çalışması gerekiyorsa, zamanlayıcı buna göre ayarlanabilir.
  5. Delay Thread creation until needed (Thread oluşturma geciktirme): Bu ayar, Thread Group'un senaryo başlamadan önce threadleri oluşturmasını engeller. Bu sayede, senaryonun başlatılması için gereken threadlerin sayısı minimize edilerek, kaynak kullanımı azaltılabilir.

Bu ayarlar, senaryonun farklı kullanıcı sayılarına, zamanlama durumlarına ve diğer değişkenlere nasıl tepki verdiğini ölçmenize olanak tanır. Doğru Thread Group ayarları, senaryonun doğru şekilde çalışmasını ve uygulamanın performansını doğru şekilde ölçmenizi sağlar.


Bonus:


AbdulsamedBAHÇACI'nın Jmeter serisinin ilk yazısına buradan ulaşabilirsiniz.

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo