gatling tutorial getting started with gatling load testing
Denne videoveiledningen for Gatling gir en omfattende gjennomgang av Gatling, inkludert funksjoner, installasjonstrinn og eksempler på bruk av Gatling Simulation Recorder:
Gatling er et open source-testrammeverk basert på Scala. Det vinner mye popularitet i disse dager med mer enn 3 millioner nedlastinger de siste 3 årene.
Den er tilgjengelig som en åpen kildekode så vel som en bedriftsvariant kalt Gatling Frontline med flere integrasjoner og støtte fra Gatling-teamet. Men alle praktiske brukstilfeller kan bearbeides ved å bruke Gatling community-utgaven som er gratis og en åpen kildekode.
Hva du vil lære:
Gatling Video Tutorial
La oss se trinnene som kreves for å komme i gang med Gatling. Vi vil også dekke noen av de viktige funksjonene i Gatling som en del av denne opplæringen.
Her er en videoopplæring om Gatling Introduksjon:
Installasjon
Gatling kan installeres på to forskjellige måter. Dette kan forklares som følger:
#1) Ved å bruke Gatling som et frittstående verktøy kan du bare installere installasjonsprogrammet / applikasjonen ved hjelp av den offisielle Gatling nettsted og følg installasjonsinstruksjonene.
Vær oppmerksom på at den installerte zip-mappen inneholder både skall- og batchfiler som gjør Gatling egnet til bruk på tvers av forskjellige operativsystemer som - Windows, MacOS, Linux / Unix, etc.
Installasjonsprogrammet er ingenting annet enn en Java-basert Gatling-skriptopptaker, som registrerer brukerhandlinger gjennom nettleseren i verktøyet, og som deretter kan konverteres til et skript eller scenario som må lastes inn og testes. Vi vil se dette i detalj i de kommende seksjonene.
#to) En annen måte å installere / bruke Gatling på er å bruke den som en pakke gjennom Maven / Gradle eller gjennom Scala build-verktøy.
Et viktig poeng å merke seg her er at Gatling-skript alle er Scala-baserte, og det å opprette et Scala-basert prosjekt kan bruke Gatling-biblioteket som kan importeres av alle byggeverktøy som Maven / Gradle eller SBT.
Funksjoner av Gatling
Disse er som følger:
# 1) Asynkron arkitektur og lette tråder
Gatling har en avansert arkitektur basert på Akka-verktøysettet og er fullstendig asynkron. Dette gir den en overhånd i forhold til andre ytelsestestingsverktøy som JMeter hvor hver tråd tilsvarer en enkelt bruker.
Her kan en enkelt tråd simulere flere brukere, siden den har en meldingsarkitektur gjennom Actor-modellen.
I et nøtteskall kan en Gatling-test håndtere et antall samtidige brukere per maskin sammenlignet med andre verktøy som Jmeter, og dermed resultere i en betydelig besparelse i CPU og RAM.
Anbefalt lesing => Skuespillermodell og asynkron arkitektur av Gatling
# 2) Domenespesifikt språk gjør tester lesbare
Gatling-skript er skrevet i Scala og har en vennlig DSL som gjør skriptene svært lesbare og mindre utsatt for feil. For mer informasjon om Gatling DSL, se her .
# 3) Protokoll Agnostisk støtte
Gatling støtter et bredt utvalg av protokoller, inkludert HTTP-, HTTPS- og Web-stikkontakter. Den har også utvidelser for belastningstesting av SQL-spørringer / skript.
# 4) Rapportering og påstander
Gatling gir direkte støtte for å lage detaljerte HTML-rapporter for scenariene som utføres, og har også muligheter til å bruke påstander om de enkelte forespørslene i scenarier - For eksempel, Svartider, validering av JSON-innhold, etc.
# 5) Vennlig GUI-basert testopptaker
Gatling kommer med en brukervennlig grafisk testopptaker som kan generere simuleringsskript ved å registrere brukeraktivitet eller brukerhandlinger i en nettleser. De genererte skriptene er Scala-baserte skript som kan kjøres på et fremtidig tidspunkt og kan endres i henhold til kravene.
Søknad under test og prøveopptak av skript
For å lage prøvesimulering vil vi bruke Gatlings offisielt leverte vertsapplikasjon
Vi bruker Gatlings simuleringsopptaker for å komme i gang med å lage belastning og gjøre ytelsestesting. Før vi går videre, la oss diskutere scenariet der vi vil laste inn testen.
Scenariet er en brukssak som vi prøver å laste inn test. Hva dette betyr egentlig at vi ønsker å etterligne en brukerhandling i et scenario eller sett med trinn som må testes.
For eksempel, antar at en bruker får tilgang til ethvert e-handelsnettsted som Amazon.com og søker etter et produkt og legger det til i handlekurven og til slutt kassen med betalingsinformasjonen.
Hele denne brukerhandlingen er et enkelt scenario som inneholder individuelle trinn som
- Navigere til nettstedet Amazon.com.
- Venter på at siden skal lastes inn.
- Søke etter et produkt gjennom produktsøkelinjen.
- Legge til produktet i handlekurven.
- Å gå til handlekurven og kassen med produktet.
- Gjør betalingen.
For å kunne teste dette komplette scenariet, fra system- eller serverperspektiv, må vi forstå at det bare er en samling eller en serie API-anrop som blir gjort til backend-serveren, og det er det vi ønsker i ytelsestesten.
For dette eksemplet vil vi bruke scenariet nedenfor på Gatling-program:
#1) Navigere til Gatling vert program .
#to) Klikk på “Legg til en ny datamaskin”.
# 3) Velg Datamaskinnavn som Apple og firmanavn som 'Apple Inc' fra rullegardinmenyen som vist på bildet nedenfor.
# 4) Klikk på ‘Opprett denne datamaskinen’ etter å ha tastet inn detaljene.
Sett opp gatling-opptaker og ta opp det første skriptet
I denne delen vil vi diskutere hvordan du setter opp Gatling testopptaker for å lage en simulering for scenariet som vi har diskutert i forrige avsnitt.
Vi bruker Gatling-simuleringsopptaker som er i en veldig enkel form, en HTTP-proxy - du må være kjent med andre HTTP-opptaksverktøy som Fiddler eller Chrome Http-proxy, etc. Så Gatling-opptakeren ligner på flere funksjoner for å konvertere innspilling i et testsimuleringsskript.
Så la oss først se hvordan du setter opp Gatling-opptakeren:
#1) Når Gatling-zip-mappen er installert, pakker du bare ut mappen til stedet der du vil at Gatling skal installeres.
hvordan initialisere en generisk matrise i java
#to) Etter dette trinnet må vi angi to miljøvariabler som heter - GATLING_HOME (for Gatling-hjemmekatalog) og GATLING_CONF (for konfigurasjonsmappeplasseringen til Gatling).
Avhengig av hvilken type operativsystem (dvs. Windows eller Mac eller Linux), angi disse miljøvariablene med verdiene nedenfor:
GATLING_HOME = {gatling-install-katalog}
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 variablene er satt til å validere, kan du bare trykke kommandoen på terminalen - export | grep “GATLING” og utgangen skal vise de to miljøvariablene vi nettopp har satt.
# 3) Når disse miljøvariablene er satt, må vi starte Gatling-skriptopptakeren. For Windows-basert OS er det en batchfil som leveres med Gatling-installasjon, og for Linux / MacOS-basert OS er det en shell-fil.
Nedenfor er filstrukturen til bin-mappen:
# 4) Så, avhengig av operativsystemtype, kan vi velge filtypen som skal kjøres for den løpende opptakeren. Vær oppmerksom på at det er to filer her som vi skal bruke:
- Gatling.sh / Gatling.bat fil - for å kjøre simuleringsskriptet.
- Fil Recorder.sh / recorder.bat - for å kjøre / åpne Gatling-simuleringsopptakeren.
# 5) La oss kjøre opptaksskriptet for å åpne Gatling-opptakeren. Bruk Mac / Linux-terminalen til å kjøre skallskriptet (eller kjør Windows batch-filen direkte).
. /$GATLING_HOME/bin/recorder.sh
# 6) Hvis miljøvariablene er satt riktig, bør kommandoen ovenfor åpne Gatling-skriptopptakeren.
# 7) Legg merke til Http / https-porten i opptakeren (standardvalg er 8000 eller 8080) - dette er porten der Http-trafikkproxy-lytteren til Gatling er konfigurert. Vi kan endre dette portnummeret etter eget ønske (eller vi kan fortsette med standardverdier).
c ++ innebygde funksjoner
# 8) La oss nå konfigurere krom-proxyen til å lytte til denne porten - dvs. i det vesentlige ønsker vi å dirigere vår Http-trafikk fra nettleseren gjennom denne proxy-lytteren eller opptakeren.
Følg dette lenke for å sette opp en proxy på krom for forskjellige operativsystemer.
# 9) Når porten er konfigurert, vil vi utføre vårt scenario på Gatling vert program.
# 10) Før scenarioutførelsen starter, må vi først konfigurere pakkenavnet og klassenavnet for det resulterende testskriptet, og deretter starte proxy-lytteren ved å klikke på 'Start' -knappen i skriptopptakeren.
#elleve) Så snart proxy-opptakeren starter, vil et nytt vindu dukke opp, og i det vesentlige fanger det alle forespørslene som blir utløst når scenariet blir utført i nettleseren.
# 12) Navigere til Gatling vert program i nettleseren.
Hvis du kan se at forespørselen er spilt inn i opptaksvinduet, betyr det at proxyoppsettet for nettleseren er riktig, og Gatling-opptakeren kan nå registrere forespørslene i henhold til testscenariet som utføres (hvis ikke, gå tilbake til trinn # 7 for å fikse proxy-konfigurasjonen for nettleser / system).
# 1. 3) Nå, når vi er sikre på at oppsettet fungerer bra, klikker du på “Fjern” for å fjerne alt fra opptakeren og begynn å utføre scenariet som nevnt nedenfor:
- Navigere til Gatling vert program
- Klikk på “Legg til en ny datamaskinknapp”. Sørg for at du lander på et nytt dataskjema med nettleser-URL som http://computer-database.gatling.io/computers/new
- Fyll ut verdiene i skjemaet med - Datamaskinnavn som Apple og firma som 'Apple inc' i tillegg fra rullegardinmenyen.
- Klikk på 'Opprett denne datamaskinen', og du blir omdirigert til hjemmesiden
- Dette er hele scenariet vi ønsker å utføre og lage et automatiseringsskript ved hjelp av Gatling-skriptopptakeren. Når trinnene ovenfor er utført, skal opptakeren fange alle HTTP-samtalene som blir gjort, og se ut som nedenfor.
- Vær oppmerksom på at det også er et par “PAUSE” -kommandoer i det innspilte skriptet. Dette er ingenting annet enn 'tenketiden' som opptakeren fanger for å imitere brukerhandlinger - dvs. tiden det tar mellom forespørslene. Disse verdiene kan konfigureres / endres når skriptet er utført avhengig av ekte neds.
# 14) For å fullføre skriptopprettingen, klikk 'Stopp og lagre' i opptaksvinduet.
#femten) Simuleringsskriptet skal opprettes i katalogen eller simuleringsmappen som vises på Gatling-opptakerens konfigurasjonsskjerm.
Forstå The Simulation Script
Når skriptet for det utførte scenariet er opprettet, navigerer du til simuleringsmappen og åpner skriptet.
Vær oppmerksom på at skriptet blir opprettet som den samme pakken strukturert som ble spesifisert før opptakeren startet - i vårt tilfelle vil det være com.learn.gatling og kursnavnet blir “AddProduct”.
La oss åpne filen AddProduct.scala og prøve å gå gjennom de forskjellige delene av skriptet.
Dette kan forklares som følger:
# 1) Oppsettkonfigurasjon :dvs httpProtokol og overskrifter - I denne delen gjøres den generelle konfigurasjonen av data for skriptet, for eksempel:
- Protokolltype - Http eller https,
- Andre ting som baseUrl skal brukes i etterfølgende forespørsler.
- Toppinformasjon - vanlig topptekstinformasjon samt topptekstene som skal sendes med individuelle forespørsler. Se header_0 og headers_2 i kodebiten nedenfor:
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) Definisjon av scenariet: Dette inneholder det faktiske scenariet og rekkefølgen på forespørsler som må utføres for å gjenopprette scenariet som kjørte i nettleservinduet.
Et viktig poeng å merke seg her er også - vi har nettopp nevnt relative URL-er her for forespørslene, i stedet for den komplette URL-en. Dette er fordi vi vil bruke httpProtocol-konfigurasjon vi har diskutert i punkt 1, der scenariekonfigurasjonsdataene er definert.
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ørelse: Denne delen er den viktigste delen som inneholder trinnene for oppsett av scenarier.
Injeksjonskonfigurasjonen her er antall brukere / tråder eller med andre ord belastningen vi vil teste dette scenariet med.
Standardverdien for et antall brukere er alltid 1, og dette kan endres før scenariet utføres.
Vær også oppmerksom på at vi også bruker definisjonen httpProtocol som vi har diskutert i punkt 1, som inneholder alle de grunnleggende konfigurasjonene for scenariet som skal utføres.
setUp (scn.inject (atOnceUsers (1))). protokoller (httpProtocol)
Vi vil se på mer detaljer rundt injiserings- og lastekonfigurasjon i neste opplæring.
Utfører test ved hjelp av simuleringsskript
Nå skal vi se hvordan vi kan utføre scenariet ved hjelp av dette simuleringsskriptet som ble opprettet ved hjelp av opptakeren. Det resulterende skriptet som blir opprettet, er faktisk en Scala-basert klasse som inneholder detaljer rundt scenariet som ble utført gjennom nettleseren.
Her er en videoopplæring for Gatling Script Execution:
Gatling-installasjonen leveres med et skallskript (for Windows-brukere er det et batch-skript) som kan brukes til å utføre denne simuleringen.
Følg trinnene nedenfor for å utføre den opprettet simuleringen:
#1) Naviger til papirkurvmappen til Gatling-installasjonen eller bare gå til - $ GATLING_HOME / søppel
#to) Utfør Gatling.sh-filen for Linux / Mac os (eller Gatling.bat-filen for Windows-brukere).
# 3) I tilfelle flere skriptfiler er tilstede i simuleringsmappen, vil skriptet be brukeren om å velge simuleringen som brukeren vil kjøre (For å simulere dette, opprett det samme scenariet i forskjellige pakker, og når Gatling-skript kjøres, kan du se at den viser to forskjellige skript).
# 4) Simulering er valgt (eller den er satt til standard for simuleringen i mappen hvis det bare er ett simuleringsskript tilgjengelig).
# 5) Skriptet ber nå om å legge til en valgfri kjøringsbeskrivelse. Du kan bare ignorere dette og trykke enter for å starte simuleringskjøringen.
# 6) Mens simuleringen kjøres, kan du se at utførelsesrapporter skrives ut på terminalen og parametrene som responstid, totale forespørsler, suksess / feil osv. Vil bli oppsummert når scenarioutførelsen fullføres.
# 7) Gatling genererer også en detaljert HTML-basert rapport på slutten av fullførelsen av scenariet som inneholder mange forskjellige datapunkter med hensyn til det utførte scenariet.
Vi vil se på detaljene i den genererte rapporten i neste opplæring.
Fordeler med å bruke Gatling
Gatling tilbyr mange funksjonsrike muligheter for å bygge en god ytelsesautomatiseringstestpakke som utnytter den brede Gatling DSL, samt voksende fellestøtte for hjelp og få spørsmål besvart.
Det er viktig å merke seg her at i motsetning til andre verktøy som JMeter, involverer Gatling en bratt læringskurve, men i stedet for det gir det mange programmeringsmuligheter for å skape et robust og fullt funksjonelt sett med simuleringsskript for ytelse og belastningstesting.
Noen av disse fordelene er som følger:
- Den er lett og tillater at en enkelt tråd kan brukes til mer enn én forespørsel, i motsetning til de fleste andre perf-verktøy der en tråd er likestilt med en bruker.
- Ved å bruke en enkelt tråd for flere forespørsler kan Gatling skalere mer og generere større belastning selv på en enkelt maskin.
- Gatling gir muligheten til å kjøre i distribuert modus når det er en enorm belastning som må simuleres.
- Gir støtte for mange andre protokoller enn HTTP,for eksempel, Websockets, MQTT, JDBC, etc, alle kan ytelsestestes ved hjelp av Gatling.
- Gatling gir et funksjonsrikt DSL - Domain Specific Language, som har en enkel syntaks og gir kraftige funksjoner når det kombineres for å lage et simuleringsskript.
- Det gir også mange komplekse simuleringskontrollfunksjoner som looping-konstruksjoner, simulerer tenketid, strupeforespørsler utover ønsket RPS, etc.
- Den har rike rapporteringsmuligheter ut av esken, og de kan også tilpasses avhengig av kravene.
Konklusjon
I denne opplæringen har vi berørt det grunnleggende om å bruke Gatling som et valg av verktøy for belastningstesting. Med den uttrykksfulle DSL og utmerket støtte for HTTP-protokoll, blir Gatling raskt populær og kan brukes som et valgverktøy for mange.
Vi lærte også om Gatling-opptakeren og Gatling-skriptløperen med et eksempler på simuleringsskript som hjalp til med å forstå det grunnleggende konseptet med å ta opp et simuleringsskript som deretter kunne utføres i fremtiden ved hjelp av Gatling Script-utføreren.
I neste opplæring vil vi dekke skriving av Gatling-skript som Scala-prosjekter - dvs. uten å bruke opptakeren og forstå rapportmalene som blir generert når Gatling fullfører simuleringen.
Anbefalt lesing
- Lastetesting med HP LoadRunner-opplæringsprogrammer
- Korrelasjon - Lastetesting med LoadRunner
- Soak Testing Tutorial - Hva er Soak Testing
- Lastetesting ved hjelp av LoadUI - Et gratis og åpen kildekode lastetestingverktøy
- WebLOAD Review - Komme i gang med WebLOAD Load Testing Tool
- Destruktiv testing og ikke-destruktiv testing
- Veiledning for brukervennlighetstesting: En komplett guide
- Ytelsestesting vs belastningstesting vs stresstesting (forskjell)