gatling tutorial getting started with gatling load testing
Denna Gatling-videohandledning ger en omfattande genomgång av Gatling inklusive funktioner, installationssteg och exempel på användning av Gatling Simulation Recorder:
Gatling är ett testkod för öppen källkod baserat på Scala. Det vinner mycket popularitet idag med mer än 3 miljoner nedladdningar under de senaste tre åren.
Den är tillgänglig som en öppen källkod såväl som en företagsvariant som kallas Gatling Frontline med fler integrationer och stöd från Gatling-teamet. Men alla praktiska användningsfall kan bearbetas med hjälp av Gatling community-upplagan som är gratis och en öppen källkod.
Vad du kommer att lära dig:
Gatling Video Tutorial
Låt oss se de steg som krävs för att komma igång med Gatling. Vi kommer också att täcka några av de viktiga funktionerna i Gatling som en del av denna handledning.
Här är en videohandledning om Gatling Introduktion:
Installation
Gatling kan installeras på två olika sätt. Detta kan förklaras enligt följande:
# 1) Med Gatling som ett fristående verktyg kan du helt enkelt installera installationsprogrammet / applikationen med den officiella Gatling hemsida och följ installationsanvisningarna.
Observera att den installerade zip-mappen innehåller både skal- och batchfiler vilket gör Gatling lämplig att användas i olika operativsystem som Windows, MacOS, Linux / Unix, etc.
Installationsprogrammet är inget annat än en Java-baserad Gatling-skriptinspelare, som registrerar användaråtgärder via webbläsaren i verktyget och som sedan kan konverteras till ett skript eller scenario som måste laddas och testas. Vi kommer att se detta i detalj i de kommande avsnitten.
#två) Ett annat sätt att installera / använda Gatling är att använda det som ett paket genom Maven / Gradle eller genom Scala-byggverktyg.
En viktig punkt att notera här är att Gatling-skript alla är Scala-baserade, och att skapa ett Scala-baserat projekt kan använda Gatling-biblioteket som kan importeras av alla byggverktyg som Maven / Gradle eller SBT.
Funktioner i Gatling
Dessa är som följer:
# 1) Asynkron arkitektur och lätta trådar
Gatling har en avancerad arkitektur baserad på Akka-verktygslådan och är helt asynkron. Detta ger den en överhand jämfört med andra prestandatestverktyg som JMeter där varje tråd motsvarar en enskild användare.
Här kan en enda tråd simulera flera användare eftersom den har en meddelandearkitektur genom Actor-modellen.
I ett nötskal kan ett Gatling-test hantera ett antal samtidiga användare per maskin jämfört med andra verktyg som Jmeter och därmed resultera i en betydande besparing i CPU och RAM.
Rekommenderad läsning => Skådespelarmodell och asynkron arkitektur för Gatling
# 2) Domänspecifikt språk gör tester läsbara
Gatling-skript är skrivna i Scala och har en vänlig DSL som gör skripten mycket läsbara och mindre benägna för fel. För mer information om Gatling DSL, se här .
# 3) Agnostiskt stöd för protokoll
Gatling stöder ett brett utbud av protokoll inklusive HTTP, HTTPS och webbuttag. Det har också tillägg för lasttestning av SQL-frågor / skript.
# 4) Rapportering och påståenden
Gatling tillhandahåller omedelbart stöd för att skapa detaljerade HTML-rapporter för de scenarier som körs och har också möjligheter att tillämpa påståenden om de enskilda förfrågningarna i scenarier - Till exempel, Svarstider, JSON-innehållsvalidering etc.
# 5) Vänlig GUI-baserad testinspelare
Gatling levereras med en lättanvänd grafisk testinspelare som kan generera simuleringsskript genom att registrera användaraktivitet eller användaråtgärder i en webbläsare. De genererade skripten är Scala-baserade skript som kan köras i framtiden och kan ändras enligt kraven.
Ansökan under test- och provinspelningsinspelning
För att skapa provsimulering kommer vi att använda Gatlings officiellt tillhandahållna värdapplikation
Vi kommer att använda Gatlings simuleringsinspelare för att komma igång med att skapa belastning och göra prestandatest. Innan vi går vidare, diskuterar vi scenariot där vi vill ladda testet.
Scenariot är ett användningsfall som vi försöker ladda test. Vad detta betyder det i grunden att vi vill imitera en användaråtgärd till ett scenario eller en uppsättning steg som måste testas.
Till exempel, antar att en användare kommer åt någon e-handelswebbplats som Amazon.com och söker efter en produkt och lägger till den i kundvagnen och slutligen kassan med betalningsinformationen.
Hela denna användaråtgärd är ett enda scenario som innehåller enskilda steg som
- Navigera till webbplatsen Amazon.com.
- Väntar på att sidan ska laddas.
- Söka efter en produkt via produktsökfältet.
- Lägga till produkten i kundvagnen.
- Gå till kundvagnen och kassan med produkten.
- Gör betalningen.
För att ladda testa hela detta scenario, ur system- eller serverperspektiv, måste vi förstå att det bara är en samling eller en serie API-samtal som görs till backend-servern, och det är vad vi vill ha i prestandatestet.
I det här exemplet använder vi nedanstående scenario för Gatling-värdapplikation:
# 1) Navigera till Gatling värdapplikation .
#två) Klicka på “Lägg till en ny dator”.
# 3) Välj Datornamn som Apple och företagsnamn som 'Apple Inc' i rullgardinsmenyn som visas i bilden nedan.
# 4) Klicka på ”Skapa den här datorn” efter att du har angett detaljerna.
Ställ in gatling-inspelare och spela in det första skriptet
I det här avsnittet kommer vi att diskutera hur man ställer in Gatling-testinspelaren för att skapa en simulering för det scenario som vi har diskuterat i föregående avsnitt.
Vi kommer att använda Gatling-simuleringsinspelare som är i en mycket enkel form, en HTTP-proxy - du måste känna till andra HTTP-inspelningsverktyg som Fiddler eller Chrome Http-proxy, etc. Så Gatling-inspelaren liknar ytterligare funktioner för att konvertera inspelning till ett testsimuleringsskript.
Så låt oss först se hur du ställer in Gatling-inspelaren:
# 1) När Gatling zip-mappen är installerad packar du bara upp den till den plats där Gatling ska installeras.
oracle dba performance tuning intervjufrågor
#två) Efter detta steg måste vi ställa in två miljövariabler med namnet - GATLING_HOME (för Gatling-hemkatalog) och GATLING_CONF (för konfigurationsmappens plats för Gatling).
Beroende på vilken typ av operativsystem (dvs. Windows eller Mac eller Linux), ställ in dessa miljövariabler med nedanstående värden:
GATLING_HOME = {gatling-install-katalog}
Exempel:
GATLING_HOME=/Users/username/gatling-charts-highcharts-bundle-3.3.0/
GATLINE_CONF = {gatling-install-katalog} / konf
Exempel:
GATLING_CONF=/Users/username/gatling-charts-highcharts-bundle-3.3.0/conf
När variablerna har validerats kan du helt enkelt slå kommandot på terminalen - export | grepp “GATLING” och produktionen ska visa de två miljövariablerna som vi just har ställt in.
# 3) När dessa miljövariabler är inställda måste vi starta vår Gatling-skriptinspelare. För Windows-baserat OS finns en batchfil som levereras med Gatling-installationen och för Linux / MacOS-baserat OS finns en shell-fil.
Nedan visas filstrukturen för bin-mappen:
# 4) Så, beroende på operativsystemstyp, kan vi välja vilken filtyp som ska köras för den igång inspelaren. Observera att det finns två filer här som vi kommer att använda:
- Gatling.sh / Gatling.bat-fil - för att köra simuleringsskriptet.
- Recorder.sh / recorder.bat-fil - för att köra / öppna Gatling-simuleringsinspelaren.
# 5) Låt oss köra inspelningsskriptet för att öppna Gatling-inspelaren. Använd Mac / Linux-terminalen för att köra skalskriptet (eller kör Windows-batchfilen direkt).
. /$GATLING_HOME/bin/recorder.sh
# 6) Om miljövariablerna är korrekt inställda, bör kommandot ovan öppna Gatling-skriptinspelaren.
# 7) Lägg märke till Http / https-porten i inspelaren (standardval är 8000 eller 8080) - det här är porten där Http-trafikproxy-lyssnaren för Gatling är konfigurerad. Vi kan ändra detta portnummer enligt vår bekvämlighet (eller så kan vi fortsätta med standardvärden).
det bästa spionprogrammet för mobiltelefoner
# 8) Låt oss nu konfigurera chrome-proxyen för att lyssna på den här porten - dvs. i princip vill vi dirigera vår Http-trafik från webbläsaren genom denna proxylyssnare eller inspelare.
Följ detta länk för att ställa in en proxy på krom för olika operativsystem.
# 9) När porten är konfigurerad kommer vi sedan att utföra vårt scenario på Gatling värdapplikation.
# 10) Innan scenariot utförs måste vi först konfigurera paketnamnet och klassnamnet för det resulterande testskriptet och sedan starta proxylyssnaren genom att helt enkelt klicka på knappen 'Start' i skriptinspelaren.
#elva) Så snart proxy-inspelaren startar kommer ett nytt fönster att dyka upp och i huvudsak fångar alla förfrågningar som avfyras när scenariot körs i webbläsaren.
# 12) Navigera till Gatling värdapplikation i webbläsaren.
Om du kan se att begäran är inspelad i inspelningsfönstret betyder det att proxyinställningen för webbläsaren är korrekt och Gatling-inspelaren kan nu spela in förfrågningarna enligt testscenariot som körs (om inte, gå tillbaka till steg # 7 för att fixa proxykonfigurationen för webbläsare / system).
# 13) När vi väl är säkra på att installationen fungerar bra klickar du på 'Rensa' för att ta bort allt från inspelaren och börja köra scenariot som nämns nedan:
- Navigera till Gatling värdapplikation
- Klicka på “Lägg till en ny datorknapp”. Se till att du hamnar på ett nytt datorformulär med webbläsarens URL som http://computer-database.gatling.io/computers/new
- Fyll nu i värden i formuläret med - Datornamn som Apple och företag som “Apple inc” också från rullgardinsmenyn.
- Klicka på “Skapa den här datorn” så kommer du att omdirigeras till hemsida
- Detta är hela scenariot som vi vill utföra och skapa ett automatiseringsskript med Gatling-skriptinspelaren. När ovanstående steg har utförts ska inspelaren fånga alla HTTP-samtal som görs och ska se ut nedan.
- Observera att det finns ett par “PAUSE” -kommandon i det inspelade skriptet. Dessa är inget annat än den 'tanke-tid' som inspelaren fångar för att imitera användaråtgärder - dvs. tiden det tar mellan förfrågningar. Dessa värden kan konfigureras / ändras när skriptet körs beroende på riktiga neds.
# 14) För att slutföra skapandet av skript, klicka på 'Stopp & spara' i inspelningsfönstret.
#femton) Simuleringsskriptet ska skapas i katalogen eller simuleringsmappen som visas på Gatling-inspelarens konfigurationsskärm.
Förstå Simuleringsmanus
När skriptet för det exekverade scenariot har skapats navigerar du till simuleringsmappen och öppnar skriptet.
Observera att skriptet kommer att skapas som samma paketstruktur som specificerades innan du startade inspelaren - i vårt fall kommer det att vara com.learn.gatling och klassnamnet kommer att vara “AddProduct”.
Låt oss öppna filen AddProduct.scala och försöka gå igenom de olika avsnitten i skriptet.
Detta kan förklaras enligt följande:
# 1) Konfiguration av inställningar :dvs httpProtokoll och rubriker - I det här avsnittet görs en övergripande konfiguration av data för skriptet, till exempel:
- Protokolltyp - Http eller https,
- Andra saker som baseUrl som ska användas i efterföljande förfrågningar.
- Rubrikinformation - gemensam rubrikinformation samt rubriker som ska skickas med enskilda förfrågningar. Se header_0 och headers_2 i kodavsnittet nedan:
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) Definition av scenariot: Detta innehåller det faktiska scenariot och ordningen på förfrågningar som måste köras för att återskapa scenariot som kördes i webbläsarfönstret.
En viktig punkt att notera här är också - vi har just nämnt relativa webbadresser här för förfrågningarna istället för den fullständiga webbadressen. Detta beror på att vi kommer att använda httpProtocol-konfiguration vi har diskuterat i punkt 1, där scenariokonfigurationsdata definieras.
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) Scenarioutförande: Det här avsnittet är det viktigaste avsnittet som innehåller installationsstegen för scenariot.
Injiceringskonfigurationen här är antalet användare / trådar eller med andra ord den belastning som vi vill testa detta scenario med.
Standardvärdet för ett antal användare är alltid 1 och detta kan ändras innan scenariot körs.
Observera också att vi också använder den httpProtocol-definition som vi har diskuterat i punkt 1 som innehåller alla grundläggande konfigurationer för det scenario som ska köras.
setUp (scn.inject (atOnceUsers (1))). protokoll (httpProtocol)
Vi kommer att titta på mer detaljer kring konfigurering av injicera och ladda i nästa handledning.
Utföra test med simuleringsskript
Nu kommer vi att se hur man utför scenariot med det här simuleringsskriptet som skapades med inspelaren. Det resulterande skriptet som skapas är faktiskt en Scala-baserad klass som innehåller detaljer kring scenariot som kördes via webbläsaren.
Här är en videohandledning för Gatling Script Execution:
Gatling-installationen levereras med ett skalskript (för Windows-användare är det ett batch-skript) som kan användas för att utföra denna simulering.
Följ stegen nedan för att utföra den skapade simuleringen:
# 1) Navigera till bin-mappen för Gatling-installationen eller helt enkelt gå till - $ GATLING_HOME / bin
#två) Kör Gatling.sh-filen för Linux / Mac os (eller Gatling.bat-filen för Windows-användare).
# 3) Om det finns flera skriptfiler i simuleringsmappen kommer skriptet att uppmana användaren att välja den simulering som användaren vill köra (För att simulera detta, skapa samma scenario i olika paket, och när Gatling-skript körs kan du se att den visar två olika skript).
# 4) Simulering är vald (eller så är den inställd som standard på den simulering som finns i mappen om det bara finns ett simuleringsskript tillgängligt).
# 5) Skriptet uppmanas nu att lägga till en valfri körbeskrivning. Du kan helt enkelt ignorera detta och trycka på Enter för att starta simuleringen.
# 6) Medan simuleringen körs kan du se exekveringsrapporter skrivas ut på terminalen och parametrarna som svarstid, totala förfrågningar, framgång / misslyckanden, etc. sammanfattad vy visas när scenariot utförs.
# 7) Gatling genererar också en detaljerad HTML-baserad rapport i slutet av slutförandet av scenariot som innehåller många olika datapunkter med avseende på det exekverade scenariot.
Vi kommer att titta på detaljerna i den genererade rapporten i nästa handledning.
Fördelar med att använda Gatling
Gatling tillhandahåller många funktioner-rika funktioner för att bygga en bra prestanda automatisering testpaket utnyttja den breda Gatling DSL samt växande community support för hjälp och få frågor besvarade.
Det är viktigt att notera här att till skillnad från andra verktyg som JMeter, innebär Gatling en brant inlärningskurva, men i stället för det ger det många programmeringsfunktioner för att skapa en robust och fullt funktionell uppsättning simuleringsskript för prestanda och belastningstest.
Några av dessa fördelar är följande:
- Den är lätt och gör att en enda tråd kan användas för mer än en begäran, till skillnad från de flesta andra perfekta verktyg där en tråd likställs med en användare.
- Genom att använda en enda tråd för flera förfrågningar kan Gatling skala mer och generera större belastning även på en enda maskin.
- Gatling ger möjlighet att köra i distribuerat läge när det finns en enorm belastning som behöver simuleras.
- Ger stöd för många andra protokoll än HTTP,till exempel, Websockets, MQTT, JDBC, etc kan alla testas med hjälp av Gatling.
- Gatling erbjuder ett funktionsrikt DSL - Domain Specific Language, som har en enkel syntax och ger kraftfulla funktioner när de kombineras för att skapa ett simuleringsskript.
- Det ger också massor av komplexa simuleringskontrollfunktioner som looping-konstruktioner, simulera tänketid, strypbegäranden utöver önskad RPS, etc.
- Den har omfattande rapporteringsfunktioner direkt och de kan också anpassas beroende på kraven.
Slutsats
I den här handledningen har vi berört grunderna för att använda Gatling som ett valbart lasttestverktyg. Med det uttrycksfulla DSL och utmärkta stöd för HTTP-protokoll blir Gatling snabbt populär för att användas som ett valfritt verktyg för många.
Vi lärde oss också om Gatling-inspelaren och Gatling-skriptlöparen med ett exempel på simuleringsskript som hjälpte till att förstå det grundläggande konceptet att spela in ett simuleringsskript som sedan kunde köras i framtiden med Gatling Script-köraren.
I nästa handledning kommer vi att täcka att skriva Gatling-skript som Scala-projekt - dvs utan att använda inspelaren och förstå rapportmallarna som genereras när Gatling slutför simuleringen.
Rekommenderad läsning
- Lasttestning med HP LoadRunner-handledning
- Korrelation - Load Testing med LoadRunner
- Soak Testing Tutorial - Vad är Soak Testing
- Lasttestning med LoadUI - Ett kostnadsfritt lasttestverktyg med öppen källkod
- WebLOAD Review - Komma igång med WebLOAD Load Testing Tool
- Handledning med destruktiv testning och icke-destruktiv testning
- Handledning för testning av användbarhet: En komplett guide för att komma igång
- Prestandatestning mot belastningstestning vs stresstestning (skillnad)