gatling tutorial getting started with gatling load testing
Bu Gatling Video Eğitimi, Özellikler, Kurulum Adımları ve Gatling Simulation Recorder'ı Kullanma Örneklerini içeren Kapsamlı bir Gatling İncelemesi sağlar:
Gatling, Scala'ya dayalı açık kaynaklı bir test çerçevesidir. Son 3 yılda 3 milyondan fazla indirme ile bu günlerde büyük bir popülerlik kazanıyor.
Açık kaynak olarak ve aynı zamanda adı verilen bir kurumsal varyant olarak mevcuttur. Gatling Frontline Gatling ekibinden daha fazla entegrasyon ve destek ile. Ancak tüm pratik kullanım durumları, ücretsiz ve açık kaynaklı bir Gatling topluluk sürümü kullanılarak üzerinde çalışılabilir.
Ne öğreneceksin:
Gatling Video Eğitimi
Gatling'e başlamak için gereken adımları görelim. Bu eğitimin bir parçası olarak Gatling'in bazı önemli özelliklerini de ele alacağız.
İşte Gatling Girişiyle ilgili bir video eğitimi:
Kurulum
Gatling 2 farklı şekilde kurulabilir. Bu şu şekilde açıklanabilir:
# 1) Gatling'i bağımsız bir araç olarak kullanarak, resmi Gatling'i kullanarak yükleyiciyi / uygulamayı kurabilirsiniz. İnternet sitesi ve kurulum talimatlarını izleyin.
Lütfen yüklenen zip klasörünün hem kabuk hem de toplu iş dosyaları içerdiğine dikkat edin, bu da Gatling'i Windows, MacOS, Linux / Unix vb. Gibi farklı işletim sistemlerinde kullanıma uygun hale getirir.
Yükleyici, araçtaki tarayıcı aracılığıyla kullanıcı eylemlerini kaydeden ve daha sonra yüklenmesi ve test edilmesi gereken bir komut dosyası veya senaryoya dönüştürülebilen Java tabanlı bir Gatling komut dosyası kaydediciden başka bir şey değildir. Bunu ilerleyen bölümlerde detaylı olarak göreceğiz.
#iki) Gatling'i kurmanın / kullanmanın başka bir yolu, Maven / Gradle veya Scala oluşturma araçları aracılığıyla bir paket olarak kullanmaktır.
Burada dikkat edilmesi gereken önemli bir nokta, Gatling betiklerinin tümünün Scala tabanlı olmasıdır, bu nedenle Scala tabanlı bir proje oluşturmak, Maven / Gradle veya SBT gibi herhangi bir derleme aracı tarafından içe aktarılabilen Gatling kitaplığını kullanabilir.
Gatling Özellikleri
Bunlar aşağıdaki gibidir:
# 1) Eşzamansız Mimari ve Hafif Konular
Gatling, Akka araç setini temel alan gelişmiş bir mimariye sahiptir ve tamamen eşzamansızdır. Bu, her iş parçacığının tek bir kullanıcıya karşılık geldiği JMeter gibi diğer performans testi araçlarına kıyasla ona üstünlük sağlar.
Burada, tek bir iş parçacığı, Actor modeli aracılığıyla bir mesajlaşma mimarisine sahip olduğu için birden fazla kullanıcıyı simüle edebilir.
Özetle, bir Gatling testi, Jmeter gibi diğer araçlara kıyasla makine başına birkaç eşzamanlı kullanıcıyı işleyebilir ve dolayısıyla CPU ve RAM'de önemli bir tasarruf sağlar.
Önerilen Okuma => Aktör modeli ve Asenkron Gatling mimarisi
# 2) Etki Alanına Özgü Dil testleri okunabilir hale getirir
Gatling komut dosyaları Scala ile yazılır ve komut dosyalarını yüksek oranda okunabilir ve hatalara daha az eğilimli hale getiren kullanıcı dostu bir DSL'e sahiptir. Gatling DSL hakkında daha fazla ayrıntı için, lütfen bakın İşte .
# 3) Protokolden Bağımsız Destek
Gatling, HTTP, HTTPS ve Web soketleri dahil olmak üzere çok çeşitli protokolleri destekler. Ayrıca SQL sorgularını / komut dosyalarını yük testi için uzantılara sahiptir.
# 4) Raporlama ve Onaylar
Gatling, çalıştırılan senaryolar için ayrıntılı HTML raporları oluşturmak için hazır destek sağlar ve ayrıca senaryolarda bireysel isteklere onay uygulama yeteneklerine sahiptir - Örneğin, Yanıt süreleri, JSON içerik doğrulama vb.
# 5) Kullanıcı dostu GUI tabanlı test kaydedici
Gatling, kullanıcı aktivitesini veya kullanıcı eylemlerini bir web tarayıcısına kaydederek simülasyon komut dosyası oluşturabilen, kullanımı kolay bir grafik test kaydediciyle birlikte gelir. Oluşturulan komut dosyaları, gelecekte yürütülebilen ve gereksinimlere göre değiştirilebilen Scala tabanlı komut dosyalarıdır.
Test Kapsamındaki Uygulama ve Örnek Komut Dosyası Kaydı
Örnek simülasyon oluşturmak için kullanacağız Gatling’in resmi olarak sağlanan barındırılan uygulaması
Yük oluşturmaya ve performans testi yapmaya başlamak için Gatling’in simülasyon kaydedicisini kullanacağız. Daha ileri gitmeden önce, testi yüklemek istediğimiz senaryoyu tartışalım.
Senaryo, testi yüklemeye çalıştığımız bir kullanım durumudur. Bu, esasen bir kullanıcı eylemini bir senaryoya veya test edilmesi gereken adımlar dizisine taklit etmek istediğimiz anlamına gelir.
Örneğin, bir kullanıcının Amazon.com gibi herhangi bir e-Ticaret web sitesine eriştiğini ve bir ürünü arayıp sepete eklediğini ve son olarak ödeme bilgileriyle ödeme yaptığını varsayalım.
Tüm bu kullanıcı eylemi, aşağıdaki gibi bireysel adımları içeren tek bir senaryodur.
- Amazon.com web sitesine gidiliyor.
- Sayfanın yüklenmesi bekleniyor.
- Ürün arama çubuğundan bir ürün aranıyor.
- Ürünü sepete eklemek.
- Ürünle alışveriş sepetine ve kasaya gitmek.
- Ödemeyi yapmak.
Bu eksiksiz senaryoyu sistem veya sunucu perspektifinden yüklemek için, arka uç sunucusuna yapılan bir dizi veya API çağrısından başka bir şey olmadığını anlamamız gerekir ve performans testinde istediğimiz şey budur.
Bu örnek için, Gatling barındırılan uygulamada aşağıdaki senaryoyu kullanacağız:
# 1) Şu yöne rotayı ayarla Gatling barındırılan uygulama .
#iki) 'Yeni bilgisayar ekle' ye tıklayın.
# 3) Aşağıdaki resimde gösterildiği gibi açılır menüden Bilgisayar adını Apple ve şirket adını 'Apple Inc' olarak seçin.
# 4) Ayrıntıları girdikten sonra 'Bu bilgisayarı oluştur' u tıklayın.
Gatling Kaydediciyi Kurun ve İlk Komut Dosyasını Kaydedin
Bu bölümde, önceki bölümde tartıştığımız senaryo için bir simülasyon oluşturmak üzere Gatling test kaydedicinin nasıl kurulacağını tartışacağız.
Çok basit bir biçimde, bir HTTP proxy'si olan Gatling simülasyon kaydedicisini kullanacağız - Fiddler veya chrome Http proxy gibi diğer HTTP kayıt araçlarına aşina olmalısınız. Dolayısıyla, Gatling kaydedici, dönüştürmenin ek özelliklerine benzer. test simülasyonu komut dosyasına kayıt.
Öyleyse ilk olarak Gatling kaydedicinin nasıl kurulacağını görelim:
# 1) Gatling zip klasörü yüklendikten sonra, klasörü Gatling'in yüklenmesini istediğiniz konuma açın.
ücretsiz anime izleme yolları
#iki) Bu adımdan sonra, - adlı 2 ortam değişkeni ayarlamamız gerekiyor. GATLING_HOME (Gatling ana dizini için) ve GATLING_CONF (Gatling'in yapılandırma klasörü konumu için).
İşletim sisteminin türüne bağlı olarak (ör. Windows veya Mac veya Linux), bu ortam değişkenlerini aşağıdaki değerlerle ayarlayın:
GATLING_HOME = {gatling-yükleme dizini}
Misal:
GATLING_HOME=/Users/username/gatling-charts-highcharts-bundle-3.3.0/
GATLINE_CONF = {ağ geçidi yükleme dizini} / conf
Misal:
GATLING_CONF=/Users/username/gatling-charts-highcharts-bundle-3.3.0/conf
Değişkenler doğrulanacak şekilde ayarlandıktan sonra, terminalde şu komutu tıklayabilirsiniz - ihracat | 'GATLING' kavraması ve çıktı az önce belirlediğimiz 2 ortam değişkenini göstermelidir.
# 3) Bu ortam değişkenleri ayarlandıktan sonra, Gatling komut dosyası kaydedicimizi başlatmamız gerekir. Windows tabanlı işletim sistemi için, Gatling kurulumuyla birlikte sağlanan bir toplu iş dosyası vardır ve Linux / MacOS tabanlı işletim sistemi için sağlanan bir kabuk dosyası vardır.
Bin klasörünün dosya yapısı aşağıdadır:
# 4) Dolayısıyla, işletim sistemi türüne bağlı olarak, çalışan kaydedici için yürütülecek dosya türünü seçebiliriz. Lütfen burada kullanacağımız 2 dosya olduğunu unutmayın:
- Gatling.sh / Gatling.bat dosyası - Simülasyon komut dosyasını çalıştırmak için.
- Recorder.sh / Recorder.bat dosyası - Gatling simülasyon kaydedicisini çalıştırmak / açmak için.
# 5) Gatling kaydediciyi açmak için kaydedici komut dosyasını çalıştıralım. Kabuk komut dosyasını çalıştırmak için Mac / Linux terminalini kullanın (veya doğrudan Windows toplu iş dosyasını çalıştırın).
. /$GATLING_HOME/bin/recorder.sh
# 6) Ortam değişkenleri doğru bir şekilde ayarlanmışsa, yukarıdaki komut Gatling komut dosyası kaydediciyi açmalıdır.
# 7) Kaydedicideki Http / https bağlantı noktasına dikkat edin (varsayılan seçim 8000 veya 8080'dir) - bu, Gatling'in Http trafiği proxy dinleyicisinin yapılandırıldığı bağlantı noktasıdır. Bu port numarasını uygunluğumuza göre değiştirebiliriz (veya varsayılan değerlerle devam edebiliriz).
Windows 10 için en iyi yedekleme yazılımı ücretsiz
# 8) Şimdi chrome proxy'yi bu bağlantı noktasını dinleyecek şekilde yapılandıralım - yani aslında tarayıcıdan gelen Http trafiğimizi bu proxy dinleyici veya kaydedici üzerinden yönlendirmek istiyoruz.
Bunu takip et bağlantı Chrome'da farklı işletim sistemleri için bir proxy kurmak.
# 9) Bağlantı noktası yapılandırıldıktan sonra senaryomuzu Gatling barındırılan uygulama.
# 10) Senaryo yürütme başlamadan önce, sonuçta ortaya çıkan test komut dosyası için paket adını ve sınıf adını yapılandırmamız ve ardından komut dosyası kaydedicideki 'Başlat' düğmesine tıklayarak proxy dinleyiciyi başlatmamız gerekecektir.
#eleven) Proxy kaydedici başlar başlamaz, yeni bir pencere görünecek ve esasen senaryo tarayıcıda yürütüldüğünde tetiklenen tüm istekleri yakalar.
# 12) Şu yöne rotayı ayarla Gatling barındırılan uygulama tarayıcıda.
İsteğin kaydedici penceresinde kaydedildiğini görüyorsanız, bu, tarayıcı için proxy kurulumunun doğru olduğu ve Gatling kaydedicinin artık yürütülen test senaryosuna göre istekleri kaydedebileceği anlamına gelir (eğer değilse, # adıma geri dönülmezse) Tarayıcı / sistem için proxy yapılandırmasını düzeltmek için 7).
# 13) Şimdi, kurulumun iyi çalıştığından emin olduktan sonra, kayıt cihazından her şeyi kaldırmak için 'Temizle' yi tıklayın ve senaryoyu aşağıda belirtildiği gibi uygulamaya başlayın:
- Şu yöne rotayı ayarla Gatling barındırılan uygulama
- 'Yeni bilgisayar ekle' düğmesine tıklayın. Tarayıcı URL'sine sahip yeni bir bilgisayar formuna geldiğinizden emin olun. http://computer-database.gatling.io/computers/new
- Şimdi, formdaki değerleri - Apple olarak bilgisayar adı ve şirket olarak 'Apple inc' ve açılır menüden doldurun.
- 'Bu bilgisayarı oluştur' u tıklayın ve yeniden yönlendirileceksiniz. anasayfa
- Gatling komut dosyası kaydedicisini kullanarak yürütmek ve bir otomasyon betiği oluşturmak istediğimiz senaryo budur. Yukarıdaki adımlar uygulandığında, kayıt cihazı yapılan tüm HTTP çağrılarını yakalamalı ve aşağıdaki gibi görünmelidir.
- Lütfen kaydedilen komut dosyasında birkaç “DURAKLAT” komutu bulunduğunu unutmayın. Bunlar, kayıt cihazının kullanıcı eylemini taklit etmek için yakaladığı 'düşünme süresinden' başka bir şey değildir - yani, istekler arasında geçen süre. Bu değerler, kod yürütüldüğünde gerçek tanımlara bağlı olarak yapılandırılabilir / değiştirilebilir.
# 14) Komut dosyası oluşturmayı tamamlamak için, kaydedici penceresinde “Durdur ve Kaydet” e tıklayın.
# onbeş) Simülasyon komut dosyası, Gatling kaydedici yapılandırma ekranında görüntülenen dizinde veya simülasyon klasöründe oluşturulmalıdır.
Simülasyon Komut Dosyasını Anlamak
Yürütülen senaryo için komut dosyası oluşturulduktan sonra simülasyon klasörüne gidin ve komut dosyasını açın.
Lütfen betiğin, kaydediciyi başlatmadan önce belirtilen aynı pakette yapılandırılmış olarak oluşturulacağını unutmayın - bizim durumumuzda, com.learn.gatling ve sınıf adı olacak 'Ürün ekle'.
AddProduct.scala dosyasını açalım ve komut dosyasının farklı bölümlerinden geçmeye çalışalım.
Bu şu şekilde açıklanabilir:
# 1) Kurulum Yapılandırması :yani httpProtokol ve başlıklar - Bu bölümde kod için genel veri yapılandırması yapılır, örneğin:
- Protokol türü - Http veya https,
- Sonraki isteklerde kullanılacak baseUrl gibi diğer şeyler.
- Üstbilgi bilgileri - ortak başlık bilgilerinin yanı sıra bireysel isteklerle gönderilecek başlıklar. Aşağıdaki kod pasajındaki header_0 ve headers_2 bölümlerine bakın:
val httpProtocol = http .baseUrl('http://computer-database.gatling.io') .inferHtmlResources(BlackList('''.*.js''', '''.*.css''', '''.*.gif''', '''.*.jpeg''', '''.*.jpg''', '''.*.ico''', '''.*.woff''', '''.*.woff2''', '''.*.(t|o)tf''', '''.*.png''', '''.*detectportal.firefox.com.*'''), WhiteList()) .acceptHeader ('text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, application/signed-exchange;v=b3') .acceptEncodingHeader('gzip, deflate') .acceptLanguageHeader('en-GB,en-US;q=0.9,en;q=0.8') .upgradeInsecureRequestsHeader('1') .userAgentHeader('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36') val headers_0 = Map('Proxy-Connection' -> 'keep-alive') val headers_2 = Map( 'Origin' -> 'http://computer-database.gatling.io', 'Proxy-Connection' -> 'keep-alive')
# 2) Senaryo Tanımı: Bu, gerçek senaryoyu ve tarayıcı penceresinde çalışmakta olan senaryoyu yeniden oluşturmak için yürütülmesi gereken isteklerin sırasını içerir.
Ayrıca burada dikkat edilmesi gereken önemli bir nokta şudur - burada tam URL yerine istekler için göreli URL’lerden bahsettik. Bunun nedeni kullanacağımız httpProtocol yapılandırması Senaryo yapılandırma verilerinin tanımlandığı 1. noktada tartıştık.
val scn = scenario('AddProduct') .exec(http('request_0') .get('/computers') .headers(headers_0) .resources(http('request_1') .get('/computers/new') .headers(headers_0))) .pause(4) .exec(http('request_2') .post('/computers') .headers(headers_2) .formParam('name', 'apple') .formParam('introduced', '') .formParam('discontinued', '') .formParam('company', '1'))
# 3) Senaryo Yürütme: Bu bölüm, senaryo kurulum adımlarını içeren en önemli bölümdür.
Buradaki enjeksiyon konfigürasyonu, kullanıcı / iş parçacığı sayısı veya başka bir deyişle, bu senaryoyu test etmek istediğimiz yüktür.
Bir dizi kullanıcı için varsayılan değer her zaman 1'dir ve bu, senaryo yürütülmeden önce değiştirilebilir.
Ayrıca, yürütülecek senaryo için tüm temel yapılandırmaları içeren 1. maddede tartıştığımız httpProtocol tanımını da kullandığımızı lütfen unutmayın.
setUp (scn.inject (atOnceUsers (1))). protokoller (httpProtocol)
Bir sonraki eğitimde enjeksiyon ve yükleme yapılandırması hakkında daha fazla ayrıntıya bakacağız.
Simülasyon Komut Dosyasını Kullanarak Test Yürütme
Şimdi, kaydedici kullanılarak oluşturulan bu simülasyon betiğini kullanarak senaryonun nasıl yürütüleceğini göreceğiz. Oluşturulan sonuçta ortaya çıkan komut dosyası, aslında tarayıcı aracılığıyla yürütülen senaryo ile ilgili ayrıntıları içeren Scala tabanlı bir sınıftır.
İşte Gatling Komut Dosyası Yürütme için bir video eğitimi:
Gatling kurulumu, bu simülasyonu yürütmek için kullanılabilecek bir kabuk komut dosyasıyla (Windows kullanıcıları için bu bir toplu komut dosyasıdır) gelir.
Oluşturulan simülasyonu yürütmek için lütfen aşağıdaki adımları izleyin:
# 1) Gatling kurulumunun bin klasörüne gidin veya basitçe - $ GATLING_HOME / bin
#iki) Linux / Mac os için Gatling.sh dosyasını (veya Windows kullanıcıları için Gatling.bat dosyasını) yürütün.
# 3) Simülasyon klasöründe birden fazla komut dosyası bulunması durumunda, komut dosyası kullanıcıdan kullanıcının çalıştırmak istediği simülasyonu seçmesini isteyecektir (Bunu simüle etmek için aynı senaryoyu farklı paketlerde oluşturun ve Gatling betiği çalıştırıldığında, 2 farklı komut dosyası görüntülediğini görün).
# 4) Simülasyon seçilir (veya yalnızca bir simülasyon betiği mevcutsa klasörde bulunan simülasyona varsayılan olarak ayarlanır).
# 5) Komut dosyası şimdi isteğe bağlı bir çalıştırma açıklaması eklemenizi ister. Bunu göz ardı edebilir ve simülasyonu başlatmak için enter tuşuna basabilirsiniz.
# 6) Simülasyon yürütülürken, terminalde yazdırılan yürütme raporlarını görebilirsiniz ve senaryo yürütme tamamlandığında yanıt süresi, toplam talepler, başarı / başarısızlıklar vb. Özet görünüm gibi parametreler görüntülenecektir.
# 7) Gatling ayrıca, senaryo yürütme tamamlandıktan sonra yürütülen senaryoya göre birçok farklı veri noktası içeren ayrıntılı bir HTML tabanlı rapor oluşturur.
Oluşturulan raporun ayrıntılarını bir sonraki eğiticide inceleyeceğiz.
Gatling Kullanmanın Avantajları
Gatling, geniş Gatling DSL'den yararlanan iyi bir performans otomasyonu test paketi oluşturmak ve yardım için artan topluluk desteği ve sorulara yanıt almak için birçok özellik açısından zengin yetenek sağlar.
Burada, JMeter gibi diğer araçlardan farklı olarak, Gatling'in dik bir öğrenme eğrisi içerdiğini, ancak bunun yerine, sağlam ve tamamen işlevsel bir performans seti ve yük testi simülasyon komut dosyaları oluşturmak için birçok programlama yeteneği sağladığını belirtmek önemlidir.
Bu avantajlardan bazıları aşağıdaki gibidir:
- Hafiftir ve bir iş parçacığının bir kullanıcıya eşit olduğu diğer çoğu performans aracının aksine, tek bir iş parçacığının birden fazla istek için kullanılmasına izin verir.
- Birden çok istek için tek bir iş parçacığı kullanmak, Gatling'in daha fazla ölçeklendirmesine ve tek bir Makine üzerinden daha fazla yük oluşturmasına olanak tanır.
- Gatling, simüle edilmesi gereken çok büyük bir yük olduğunda dağıtılmış modda çalışma yeteneği sağlar.
- HTTP dışında birçok başka protokol için destek sağlar,Örneğin, Websockets, MQTT, JDBC, vb. Tümü Gatling kullanılarak performans testine tabi tutulabilir.
- Gatling, kolay bir sözdizimine sahip olan ve bir simülasyon komut dosyası oluşturmak için birleştirildiğinde güçlü yetenekler sağlayan, zengin özelliklere sahip bir DSL - Etki Alanına Özel Dil sağlar.
- Ayrıca, döngü oluşturma yapıları, düşünme süresini simüle etme, istenen RPS'nin ötesinde istekleri azaltma vb. Gibi birçok karmaşık simülasyon kontrol yeteneği sağlar.
- Kutudan çıkar çıkmaz zengin raporlama yeteneklerine sahiptir ve ihtiyaçlara göre özelleştirilebilirler.
Sonuç
Bu eğitimde, Gatling'i tercih edilen bir yük testi aracı olarak kullanmanın temellerine değindik. Etkileyici DSL ve mükemmel HTTP Protokolü desteği ile Gatling, birçokları için tercih edilen bir araç olarak kullanılmak üzere hızla popülerlik kazanıyor.
Ayrıca, Gatling Script yürütücüsü kullanılarak gelecekte yürütülebilecek bir simülasyon betiğini kaydetmenin temel konseptini anlamaya yardımcı olan örnek bir simülasyon komut dosyasıyla Gatling kaydedici ve Gatling komut dosyası çalıştırıcısı hakkında bilgi edindik.
Bir sonraki eğiticide, Gatling komut dosyalarını Scala projeleri olarak yazmayı ele alacağız - yani, kaydediciyi kullanmadan ve Gatling simülasyon yürütmesini tamamladığında oluşturulan rapor şablonlarını anlayacağız.
Önerilen Kaynaklar
- HP LoadRunner Öğreticileriyle Yük Testi
- Korelasyon - LoadRunner ile Yük Testi
- Islatma Testi Eğitimi - Islanma Testi Nedir?
- LoadUI Kullanarak Yük Testi - Ücretsiz ve Açık Kaynaklı Bir Yük Test Aracı
- WebLOAD İncelemesi - WebLOAD Yük Test Aracına Başlarken
- Yıkıcı Muayene ve Tahribatsız Muayene Eğitimi
- Kullanılabilirlik Testi Eğitimi: Tam Bir Başlangıç Kılavuzu
- Performans Testi - Yük Testi - Stres Testi (Fark)