gatling tutorial getting started with gatling load testing
Denne Gatling-videovejledning giver en omfattende gennemgang af Gatling, herunder funktioner, installationstrin og eksempler på brug af Gatling Simulation Recorder:
Gatling er en open source-testramme baseret på Scala. Det vinder meget popularitet i disse dage med mere end 3 millioner downloads i de sidste 3 år.
Den er tilgængelig som en open source såvel som en virksomhedsvariant kaldet Gatling Frontline med flere integrationer og support fra Gatling-teamet. Men alle praktiske brugssager kan bearbejdes ved hjælp af Gatling community-udgaven, som er gratis og en open source.
Hvad du lærer:
Gatling-videovejledning
Lad os se de nødvendige trin for at komme i gang med Gatling. Vi vil også dække nogle af de vigtige funktioner i Gatling som en del af denne vejledning.
Her er en video tutorial om Gatling Introduktion:
Installation
Gatling kan installeres på 2 forskellige måder. Dette kan forklares som følger:
# 1) Ved hjælp af Gatling som et enkeltstående værktøj kan du blot installere installationsprogrammet / applikationen ved hjælp af den officielle Gatling internet side og følg installationsinstruktionerne.
Bemærk, at den installerede zip-mappe indeholder både shell- og batchfiler, hvilket gør Gatling velegnet til brug på tværs af forskellige operativsystemer som Windows, MacOS, Linux / Unix osv.
Installationsprogrammet er intet andet end en Java-baseret Gatling script-optager, der registrerer brugerhandlinger gennem browseren i værktøjet, og som derefter kan konverteres til et script eller scenarie, der skal indlæses og testes. Vi vil se dette i detaljer i de kommende sektioner.
#to) En anden måde at installere / bruge Gatling på er at bruge den som en pakke gennem Maven / Gradle eller gennem Scala build-værktøjer.
Et vigtigt punkt at bemærke her er, at Gatling-scripts alle er Scala-baserede, og derfor kan oprettelse af et Scala-baseret projekt bruge Gatling-biblioteket, som kan importeres af ethvert build-værktøj som Maven / Gradle eller SBT.
Funktioner af Gatling
Disse er som følger:
# 1) Asynkron arkitektur og lette tråde
Gatling har en avanceret arkitektur baseret på Akka-værktøjssættet og er fuldt asynkron. Dette giver det en overhånd i sammenligning med andre præstationsværktøjsværktøjer som JMeter, hvor hver tråd svarer til en enkelt bruger.
Her kan en enkelt tråd simulere flere brugere, da den har en meddelelsesarkitektur gennem Actor-modellen.
I en nøddeskal kan en Gatling-test håndtere et antal samtidige brugere pr. Maskine sammenlignet med andre værktøjer som Jmeter og resulterer dermed i en betydelig besparelse i CPU og RAM.
Anbefalet læsning => Skuespillermodel og asynkron arkitektur af Gatling
# 2) Domænespecifikt sprog gør test læsbare
Gatling-scripts er skrevet i Scala og har en venlig DSL, der gør scriptsne meget læselige og mindre tilbøjelige til fejl. For flere detaljer omkring Gatling DSL, se venligst her .
# 3) Protokolagnostisk support
Gatling understøtter en bred vifte af protokoller, herunder HTTP-, HTTPS- og websockets. Det har også udvidelser til belastningstestning af SQL-forespørgsler / scripts.
# 4) Rapportering og påstande
Gatling giver ud af boksen understøttelse af oprettelse af detaljerede HTML-rapporter til de scenarier, der udføres, og har også muligheder for at anvende påstande om de enkelte anmodninger i scenarier - For eksempel, Svartider, validering af JSON-indhold osv.
# 5) Venlig GUI-baseret testoptager
Gatling leveres med en brugervenlig grafisk testoptager, som kan generere simuleringsscript ved at registrere brugeraktivitet eller brugerhandlinger i en webbrowser. De genererede scripts er Scala-baserede scripts, der kunne udføres på et fremtidigt tidspunkt og kan ændres efter kravene.
Anvendelse under test og prøveoptagelse af script
Til oprettelse af prøvesimulering bruger vi Gatlings officielt leverede hostede applikation
Vi bruger Gatlings simuleringsoptager til at komme i gang med at skabe belastning og udføre ydelsestest. Lad os diskutere scenariet, hvor vi vil indlæse testen, inden vi går videre.
Scenariet er en brugssag, som vi prøver at indlæse test. Hvad dette betyder, betyder det i det væsentlige, at vi vil efterligne en brugerhandling i et scenario eller et sæt trin, der skal testes.
For eksempel, Antag, at en bruger får adgang til ethvert e-handelswebsted som Amazon.com og søger efter et produkt og tilføjer det til indkøbskurven og til sidst kassen med betalingsoplysningerne.
Hele denne brugerhandling er et enkelt scenarie, der indeholder individuelle trin som f.eks
- Naviger til hjemmesiden Amazon.com.
- Venter på, at siden indlæses.
- Søgning efter et produkt gennem produktsøgningslinjen.
- Tilføjelse af produktet i kurven.
- Gå i indkøbskurv og kasse med produktet.
- Foretagelse af betalingen.
For at indlæse testen af dette komplette scenarie, set fra system- eller serverperspektiv, er vi nødt til at forstå, at det kun er en samling eller en række API-opkald, der foretages til backend-serveren, og det er det, vi vil have i performance-testen.
I dette eksempel bruger vi nedenstående scenario på Gatling-hostet applikation:
# 1) Naviger til Gatling hostet applikation .
#to) Klik på “Tilføj en ny computer”.
# 3) Vælg Computernavn som Apple og firmanavn som 'Apple Inc' i rullemenuen som vist på nedenstående billede.
# 4) Klik på 'Opret denne computer' efter indtastning af detaljerne.
Opsæt gatling-optager og optag det første script
I dette afsnit vil vi diskutere, hvordan man konfigurerer Gatling-testoptageren til at oprette en simulering af det scenarie, som vi har diskuteret i det foregående afsnit.
Vi bruger Gatling-simuleringsoptager, der er i en meget enkel form, en HTTP-proxy - du skal være bekendt med andre HTTP-optagelsesværktøjer som Fiddler eller chrome Http-proxy osv. Så Gatling-optageren ligner yderligere funktioner til konvertering af optagelse i et testsimuleringsscript.
Så lad os først se, hvordan du konfigurerer Gatling-optageren:
# 1) Når Gatling-zip-mappen er installeret, skal du blot pakke mappen ud til det sted, hvor du ønsker, at Gatling skal installeres.
åbne en xml-fil i Excel
#to) Efter dette trin skal vi indstille 2 miljøvariabler navngivet - GATLING_HOME (til Gatling-hjemmekatalog) og GATLING_CONF (for Gatling-konfigurationsmappens placering).
Afhængigt af typen af operativsystem (dvs. Windows eller Mac eller Linux), indstil disse miljøvariabler med nedenstående værdier:
GATLING_HOME = {gatling-install-directory}
Eksempel:
GATLING_HOME=/Users/username/gatling-charts-highcharts-bundle-3.3.0/
GATLINE_CONF = {gatling-install-directory} / conf
Eksempel:
GATLING_CONF=/Users/username/gatling-charts-highcharts-bundle-3.3.0/conf
Når variablerne er indstillet til at validere, kan du blot trykke på terminalen kommandoen - eksport | greb “GATLING” og output skal vise de 2 miljøvariabler, som vi lige har indstillet.
# 3) Når disse miljøvariabler er indstillet, skal vi starte vores Gatling script-optager. For Windows-baseret OS er der en batchfil leveret med Gatling-installation, og for Linux / MacOS-baseret OS er der en shell-fil.
Nedenfor er filstrukturen i bin-mappen:
# 4) Så afhængigt af OS-typen kan vi vælge den filtype, der skal udføres til den kørende optager. Bemærk, at der er 2 filer her, som vi bruger:
- Gatling.sh / Gatling.bat fil - at køre simuleringsscriptet.
- Fil Recorder.sh / recorder.bat - for at køre / åbne Gatling-simuleringsoptageren.
# 5) Lad os køre optager scriptet for at åbne Gatling optageren. Brug Mac / Linux-terminalen til at køre shell-scriptet (eller kør Windows-batchfilen direkte).
. /$GATLING_HOME/bin/recorder.sh
# 6) Hvis miljøvariablerne er indstillet korrekt, skal ovenstående kommando åbne Gatling-scriptoptageren.
# 7) Bemærk Http / https-porten i optageren (standardvalg er 8000 eller 8080) - dette er den port, hvor Http-trafikproxy-lytteren til Gatling er konfigureret. Vi kan ændre dette portnummer i henhold til vores bekvemmelighed (eller vi kan fortsætte med standardværdier).
flet sortering c ++ rekursiv
# 8) Lad os nu konfigurere chrome-proxyen til at lytte til denne port - dvs. i det væsentlige vil vi dirigere vores Http-trafik fra browseren gennem denne proxy-lytter eller optager.
Følg dette link at oprette en proxy på krom til forskellige operativsystemer.
# 9) Når porten er konfigureret, udfører vi derefter vores scenario på Gatling hostet applikation.
# 10) Før scenarieudførelsen starter, bliver vi først nødt til at konfigurere pakkenavnet og klassenavnet til det resulterende test script og derefter starte proxy-lytteren ved blot at klikke på knappen 'Start' i script-optageren.
#elleve) Så snart proxy-optageren starter, vises et nyt vindue, og i det væsentlige fanger det alle de anmodninger, der affyres, når scenariet bliver udført i browseren.
# 12) Naviger til Gatling hostet applikation i browseren.
Hvis du kan se, at anmodningen er optaget i optagervinduet, betyder det, at proxyopsætningen til browseren er korrekt, og Gatling-optageren er nu i stand til at registrere anmodningerne i henhold til det testscenarie, der udføres (hvis ikke gå tilbage til trin # 7 for at rette proxy-konfigurationen til browser / system).
# 13) Når vi først er sikre på, at opsætningen fungerer fint, skal du klikke på 'Ryd' for at fjerne alt fra optageren og begynde at udføre scenariet som nævnt nedenfor:
- Naviger til Gatling hostet applikation
- Klik på “Tilføj en ny computerknap”. Sørg for, at du lander på en ny computerformular med browser-URL som http://computer-database.gatling.io/computers/new
- Udfyld nu værdier i formularen med - Computernavn som Apple og firma som 'Apple inc' samt fra rullemenuen.
- Klik på 'Opret denne computer', så bliver du omdirigeret til hjemmeside
- Dette er hele scenariet, som vi ønsker at udføre og oprette et automatiseringsscript ved hjælp af Gatling-scriptoptageren. Når ovenstående trin er udført, skal optageren fange alle de HTTP-opkald, der foretages, og se ud som nedenfor.
- Bemærk, at der også er et par “PAUSE” -kommandoer i det indspillede script. Disse er intet andet end den 'tænketid', som optageren fanger for at efterligne brugerhandling - dvs. tiden det tager mellem anmodninger. Disse værdier kan konfigureres / ændres, når scriptet er udført afhængigt af rigtig neds.
# 14) For at færdiggøre oprettelsen af scriptet skal du klikke på 'Stop & Save' i optagervinduet.
#femten) Simuleringsscriptet skal oprettes i biblioteket eller simuleringsmappen, der vises på Gatling-optagerens konfigurationsskærm.
Forståelse af Simulation Script
Når scriptet til det udførte scenario er oprettet, skal du navigere til simuleringsmappen og åbne scriptet.
Bemærk, at scriptet oprettes som den samme pakke struktureret, som blev specificeret inden optageren startes - i vores tilfælde vil det være com.learn.gatling og klassens navn vil være “AddProduct”.
Lad os åbne filen AddProduct.scala og prøve at gennemgå de forskellige sektioner i scriptet.
Dette kan forklares som følger:
# 1) Opsætningskonfiguration :dvs. httpProtokol og overskrifter - I dette afsnit foretages samlet konfiguration af data til scriptet, såsom:
- Protokoltype - Http eller https,
- Andre ting som baseUrl, der skal bruges i efterfølgende anmodninger.
- Overskriftsoplysninger - fælles overskriftsoplysninger samt de overskrifter, der skal sendes med individuelle anmodninger. Se header_0 og headers_2 i nedenstående kodestykke:
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 af scenarie: Dette indeholder det faktiske scenario og rækkefølgen af anmodninger, der skal udføres for at genskabe det scenario, der kørte i browservinduet.
Et vigtigt punkt at bemærke her er også - vi har lige nævnt relative URL'er her for anmodningerne i stedet for den komplette URL. Dette er fordi vi vil bruge httpProtocol-konfiguration vi har diskuteret i punkt # 1, hvor scenariekonfigurationsdata er defineret.
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) Scenarioudførelse: Dette afsnit er det vigtigste afsnit, der indeholder trinene til opsætning af scenarier.
Injiceringskonfigurationen her er antallet af brugere / tråde eller med andre ord den belastning, som vi vil teste dette scenarie med.
Standardværdien for et antal brugere er altid 1, og dette kan ændres, før scenariet udføres.
Bemærk også, at vi også bruger den httpProtocol-definition, som vi har diskuteret i punkt 1, som indeholder alle de grundlæggende konfigurationer for det scenarie, der skal udføres.
setUp (scn.inject (atOnceUsers (1))). protokoller (httpProtocol)
Vi vil se på flere detaljer omkring injektion og indlæsningskonfiguration i den næste vejledning.
Udførelse af test ved hjælp af simuleringsscript
Nu vil vi se, hvordan man udfører scenariet ved hjælp af dette simuleringsscript, der blev oprettet ved hjælp af optageren. Det resulterende script, der oprettes, er faktisk en Scala-baseret klasse, der indeholder detaljer omkring scenariet, der blev udført gennem browseren.
Her er en video tutorial til Gatling Script Execution:
Gatling-installationen leveres med et shell-script (for Windows-brugere er det et batch-script), der kan bruges til at udføre denne simulering.
Følg nedenstående trin for at udføre den oprettede simulering:
# 1) Naviger til bin-mappen for Gatling-installationen, eller gå blot til - $ GATLING_HOME / bin
#to) Udfør Gatling.sh-filen til Linux / Mac os (eller Gatling.bat-filen til Windows-brugere).
# 3) I tilfælde af flere scriptfiler til stede i simuleringsmappen vil scriptet bede brugeren om at vælge den simulering, som brugeren ønsker at køre (For at simulere dette skal du oprette det samme scenarie i forskellige pakker, og når Gatling-script køres, kan du se, at den viser 2 forskellige scripts).
# 4) Simulation er valgt (eller den er indstillet til at være standard til den simulation, der findes i mappen, hvis der kun er et simuleringsscript tilgængeligt).
# 5) Scriptet beder nu om at tilføje en valgfri kørselsbeskrivelse. Du kan simpelthen ignorere dette og trykke på enter for at starte simuleringskørslen.
# 6) Mens simuleringen udføres, kan du se eksekveringsrapporter blive udskrevet på terminalen, og parametrene som responstid, samlede anmodninger, succes / fiaskoer osv. Opsummeret visning vil blive vist, når scenarieudførelsen er afsluttet.
# 7) Gatling genererer også en detaljeret HTML-baseret rapport i slutningen af afslutningen af scenarieudførelsen, der indeholder mange forskellige datapunkter med hensyn til det udførte scenario.
Vi vil se på detaljerne i den genererede rapport i den næste vejledning.
Fordele ved at bruge Gatling
Gatling leverer mange funktioner-rige muligheder for at opbygge en god præstationsautomatiseringstestsuite, der udnytter den brede Gatling DSL samt voksende samfundsstøtte til assistance og få spørgsmål besvaret.
Det er vigtigt at bemærke her, at i modsætning til andre værktøjer som JMeter, involverer Gatling en stejl indlæringskurve, men i stedet for det giver det mange programmeringsfunktioner til at skabe et robust og fuldt funktionelt sæt af simuleringsscripts til ydeevne og belastningstest.
Nogle af disse fordele er som følger:
- Det er let og giver mulighed for at bruge en enkelt tråd til mere end en anmodning, i modsætning til de fleste andre perf-værktøjer, hvor en tråd sidestilles med en bruger.
- Brug af en enkelt tråd til flere anmodninger gør det muligt for Gatling at skalere mere og generere større belastning, selv på en enkelt maskine.
- Gatling giver mulighed for at køre i distribueret tilstand, når der er en enorm belastning, der skal simuleres.
- Tilbyder support til mange andre protokoller end HTTP,for eksempel, Websockets, MQTT, JDBC osv. Kan alle testes med ydeevne ved hjælp af Gatling.
- Gatling leverer et funktionsrige DSL - Domain Specific Language, der har en let syntaks og giver kraftige funktioner, når de kombineres for at oprette et simuleringsscript.
- Det giver også masser af komplekse simuleringskontrolfunktioner som looping-konstruktioner, simulering af tænketid, begrænsning af anmodninger ud over den ønskede RPS osv.
- Det har rige rapporteringsfunktioner ud af kassen, og de kan også tilpasses afhængigt af kravene.
Konklusion
I denne vejledning har vi berørt det grundlæggende ved at bruge Gatling som et valgstestværktøj. Med den udtryksfulde DSL og fremragende understøttelse af HTTP-protokol vinder Gatling hurtigt popularitet for at blive brugt som et valgværktøj for mange.
Vi lærte også om Gatling-optageren og Gatling-scriptløberen med et eksempler på simuleringsscript, som hjalp med at forstå det grundlæggende koncept med at optage et simuleringsscript, som derefter kunne udføres i fremtiden ved hjælp af Gatling Script-eksekutoren.
I den næste vejledning vil vi dække at skrive Gatling-scripts som Scala-projekter - dvs. uden at bruge optageren og forstå de rapportskabeloner, der bliver genereret, når Gatling fuldfører simuleringskørslen.
Anbefalet læsning
- Load Testing med HP LoadRunner-vejledninger
- Korrelation - belastningstest med LoadRunner
- Soak Testing Tutorial - Hvad er Soak Testing
- Load Testing ved hjælp af LoadUI - Et gratis og open source Load Testing Tool
- WebLOAD Review - Kom godt i gang med WebLOAD Load Testing Tool
- Destruktiv test og ikke-destruktiv testvejledning
- Usability Testing Tutorial: En komplet startvejledning
- Ydelsestest vs belastningstest vs stresstest (forskel)