gatling tutorial getting started with gatling load testing
Deze Gatling Video-zelfstudie biedt een uitgebreid overzicht van Gatling inclusief functies, installatiestappen en voorbeelden van het gebruik van Gatling Simulation Recorder:
Gatling is een open-source testraamwerk op basis van Scala. Het wint tegenwoordig enorm aan populariteit met meer dan 3 miljoen downloads in de afgelopen 3 jaar.
Het is beschikbaar als een open-source en een bedrijfsvariant genaamd Gatling Frontline met meer integraties en ondersteuning van het Gatling-team. Maar aan alle praktische use-cases kan worden gewerkt met behulp van de Gatling-communityeditie, die gratis en open-source is.
Wat je leert:
Gatling Video-zelfstudie
Laten we de stappen bekijken die nodig zijn om aan de slag te gaan met Gatling. We zullen ook enkele van de belangrijke functies van Gatling behandelen als onderdeel van deze tutorial.
Hier is een video-tutorial over de introductie van Gatling:
Installatie
Gatling kan op 2 verschillende manieren worden geïnstalleerd. Dit kan als volgt worden verklaard:
# 1) Door Gatling als een zelfstandige tool te gebruiken, kunt u eenvoudig het installatieprogramma / de applicatie installeren met behulp van de officiële Gatling website en volg de installatie-instructies.
Houd er rekening mee dat de geïnstalleerde zip-map zowel shell- als batchbestanden bevat, wat Gatling geschikt maakt om te worden gebruikt op verschillende besturingssystemen zoals - Windows, MacOS, Linux / Unix, enz.
Het installatieprogramma is niets anders dan een op Java gebaseerde Gatling-scriptrecorder, die gebruikersacties via de browser in de tool registreert en vervolgens kan worden omgezet in een script of scenario dat moet worden geladen en getest. We zullen dit in de komende secties in detail zien.
#twee) Een andere manier om Gatling te installeren / gebruiken is door het als een pakket te gebruiken via Maven / Gradle of via Scala build-tools.
Een belangrijk punt om op te merken is dat Gatling-scripts allemaal Scala-gebaseerd zijn, dus het maken van een Scala-gebaseerd project zou de Gatling-bibliotheek kunnen gebruiken die kan worden geïmporteerd door alle build-tools zoals Maven / Gradle of SBT.
Kenmerken van Gatling
Dit zijn de volgende:
# 1) Asynchrone architectuur en lichtgewicht threads
Gatling heeft een geavanceerde architectuur gebaseerd op de Akka-toolkit en is volledig asynchroon. Dit geeft het een overhand in vergelijking met andere prestatietesttools zoals JMeter, waar elke thread overeenkomt met een enkele gebruiker.
Hier kan een enkele thread meerdere gebruikers simuleren omdat het een berichtenarchitectuur heeft via het Actor-model.
Kortom, een Gatling-test kan een aantal gelijktijdige gebruikers per machine aan in vergelijking met andere tools zoals Jmeter en resulteert dus in een aanzienlijke besparing in CPU en RAM.
Aanbevolen literatuur => Actormodel en asynchrone architectuur van Gatling
# 2) Domeinspecifieke taal maakt tests leesbaar
Gatling-scripts zijn geschreven in Scala en hebben een vriendelijke DSL waardoor de scripts goed leesbaar en minder foutgevoelig zijn. Raadpleeg voor meer informatie over Gatling DSL hier
# 3) Protocol-agnostische ondersteuning
Gatling ondersteunt een breed scala aan protocollen, waaronder HTTP, HTTPS en websockets. Het heeft ook extensies voor het testen van SQL-queries / scripts.
# 4) Rapportage en beweringen
Gatling biedt kant-en-klare ondersteuning voor het maken van gedetailleerde HTML-rapporten voor de scenario's die worden uitgevoerd en heeft ook mogelijkheden om beweringen toe te passen op de individuele verzoeken in scenario's - Bijvoorbeeld, Reactietijden, validatie van JSON-inhoud, enz.
# 5) Vriendelijke GUI-gebaseerde testrecorder
Gatling wordt geleverd met een gebruiksvriendelijke grafische testrecorder die simulatiescript kan genereren door gebruikersactiviteit of gebruikersacties in een webbrowser op te nemen. De gegenereerde scripts zijn Scala-gebaseerde scripts die in de toekomst kunnen worden uitgevoerd en kunnen worden gewijzigd volgens de vereisten.
Toepassing onder test en voorbeeldscriptopname
Voor het maken van een voorbeeldsimulatie gebruiken we De officieel geleverde gehoste applicatie van Gatling
We zullen de simulatierecorder van Gatling gebruiken om aan de slag te gaan met het creëren van belasting en het uitvoeren van prestatietests. Laten we, voordat we verder gaan, het scenario bespreken waarin we de test willen laden.
Het scenario is een use-case die we proberen te laden. Wat dit betekent, betekent in wezen dat we een gebruikersactie willen imiteren in een scenario of een reeks stappen die moeten worden getest.
Bijvoorbeeld, Stel dat een gebruiker een eCommerce-website zoals Amazon.com bezoekt en naar een product zoekt en dit toevoegt aan de winkelwagen en uiteindelijk afrekent met de betalingsinformatie.
Deze volledige gebruikersactie is een enkel scenario dat afzonderlijke stappen bevat, zoals
- Navigeren naar website Amazon.com.
- Wachten tot de pagina is geladen.
- Zoeken naar een product via de productzoekbalk.
- Het product aan de winkelwagen toevoegen.
- Naar de winkelwagen gaan en afrekenen met het product.
- De betaling uitvoeren.
Om dit complete scenario te laden, vanuit systeem- of serverperspectief, moeten we begrijpen dat het niets anders is dan een verzameling of reeks API-aanroepen die naar de backend-server worden gedaan, en dat is wat we willen in de prestatietest.
Voor dit voorbeeld gebruiken we het onderstaande scenario voor een door Gatling gehoste applicatie:
# 1) Navigeren naar Door Gatling gehoste applicatie
#twee) Klik op 'Een nieuwe computer toevoegen'.
# 3) Selecteer Computernaam als Apple en bedrijfsnaam als 'Apple Inc' in de vervolgkeuzelijst zoals weergegeven in de onderstaande afbeelding.
# 4) Klik op ‘Deze computer maken’ nadat u de gegevens heeft ingevoerd.
Stel Gatling Recorder in en neem het eerste script op
In dit gedeelte bespreken we hoe u de Gatling-testrecorder instelt om een simulatie te maken voor het scenario dat we in het vorige gedeelte hebben besproken.
We zullen de Gatling-simulatierecorder gebruiken die in een zeer eenvoudige vorm is, een HTTP-proxy - u moet bekend zijn met andere HTTP-opnametools zoals Fiddler of Chrome Http-proxy, enz. Dus de Gatling-recorder is vergelijkbaar met extra functies voor het converteren van de opnemen in een testsimulatiescript.
Laten we eerst eens kijken hoe u de Gatling-recorder instelt:
# 1) Zodra de Gatling zip-map is geïnstalleerd, pakt u de map eenvoudig uit naar de locatie waar u de Gatling wilt installeren.
wat is het verschil tussen c ++ en java
#twee) Na deze stap moeten we 2 omgevingsvariabelen instellen met de naam - GATLING_HOME (voor Gatling-homedirectory) en GATLING_CONF (voor de configuratie-maplocatie van Gatling).
Afhankelijk van het type besturingssysteem (bijv.Windows of Mac of Linux), stel deze omgevingsvariabelen in met onderstaande waarden:
GATLING_HOME = {gatling-install-directory}
Voorbeeld:
GATLINE_CONF = {gatling-install-directory} / conf
Voorbeeld:
Zodra de variabelen zijn ingesteld om te valideren, kunt u eenvoudig op de terminal de opdracht - exporteren | greep 'GATLING' en de uitvoer zou de 2 omgevingsvariabelen moeten tonen die we zojuist hebben ingesteld.
# 3) Zodra deze omgevingsvariabelen zijn ingesteld, moeten we onze Gatling-scriptrecorder starten. Voor Windows-gebaseerde OS is er een batchbestand voorzien van Gatling-installatie en voor Linux / MacOS-gebaseerd OS is er een shell-bestand.
Hieronder ziet u de bestandsstructuur van de bin-map:
# 4) Dus, afhankelijk van het type besturingssysteem, kunnen we het bestandstype kiezen dat moet worden uitgevoerd voor de actieve recorder. Houd er rekening mee dat er hier 2 bestanden zijn die we zullen gebruiken:
- Gatling.sh / Gatling.bat-bestand - om het simulatiescript uit te voeren.
- Recorder.sh / recorder.bat-bestand - om de Gatling-simulatierecorder uit te voeren / te openen.
# 5) Laten we het recorderscript uitvoeren om de Gatling-recorder te openen. Gebruik de Mac / Linux-terminal om het shellscript uit te voeren (of voer rechtstreeks het Windows-batchbestand uit).
# 6) Als de omgevingsvariabelen correct zijn ingesteld, moet de bovenstaande opdracht de Gatling-scriptrecorder openen.
# 7) Let op de Http / https-poort in de recorder (standaardselectie is 8000 of 8080) - dit is de poort waarop de Http-verkeersproxy-listener van Gatling is geconfigureerd. We kunnen dit poortnummer naar wens wijzigen (of we kunnen doorgaan met de standaardwaarden).
bètatesten is de laatste fase van het testproces.
# 8) Laten we nu de Chrome-proxy configureren om naar deze poort te luisteren - dat wil zeggen dat we in wezen ons HTTP-verkeer van de browser via deze proxy-luisteraar of recorder willen leiden.
Volg dit koppeling om een proxy op Chrome in te stellen voor verschillende besturingssystemen.
# 9) Zodra de poort is geconfigureerd, zullen we ons scenario uitvoeren op het Door Gatling gehoste applicatie.
# 10) Voordat de uitvoering van het scenario begint, moeten we eerst de pakketnaam en de klassenaam configureren voor het resulterende testscript en vervolgens de proxy-listener starten door simpelweg op de knop 'Start' in de scriptrecorder te klikken.
#elf) Zodra de proxyrecorder start, verschijnt er een nieuw venster, waarin in feite alle verzoeken worden vastgelegd die worden geactiveerd wanneer het scenario in de browser wordt uitgevoerd.
# 12) Navigeren naar Door Gatling gehoste applicatie in de browser.
Als u kunt zien dat het verzoek is opgenomen in het recordervenster, betekent dit dat de proxy-instellingen voor de browser correct zijn en dat Gatling-recorder nu de verzoeken kan opnemen volgens het testscenario dat wordt uitgevoerd (ga zo niet terug naar stap # 7 om de proxyconfiguratie voor browser / systeem te repareren).
# 13) Nu we zeker weten dat de installatie goed werkt, klikt u op 'Wissen' om alles van de recorder te verwijderen en begin met het uitvoeren van het scenario zoals hieronder vermeld:
- Navigeren naar Door Gatling gehoste applicatie
- Klik op 'Een nieuwe computerknop toevoegen'. Zorg ervoor dat u op een nieuw computerformulier terechtkomt met de browser-URL als http://computer-database.gatling.io/computers/new
- Vul nu waarden in het formulier in met - Computernaam als Apple en bedrijf als 'Apple inc' ook uit de vervolgkeuzelijst.
- Klik op 'Deze computer maken' en u wordt doorgestuurd naar het Startpagina
- Dit is het hele scenario dat we willen uitvoeren en een automatiseringsscript willen maken met behulp van de Gatling-scriptrecorder. Nadat de bovenstaande stappen zijn uitgevoerd, moet de recorder alle gemaakte HTTP-oproepen vastleggen en er als volgt uitzien.
- Houd er rekening mee dat er ook een aantal 'PAUSE' -opdrachten zijn in het opgenomen script. Dit zijn niets anders dan de 'denktijd' die de recorder vastlegt om gebruikersactie te imiteren - d.w.z. de tijd die tussen verzoeken in zit. Deze waarden kunnen worden geconfigureerd / gewijzigd zodra het script is uitgevoerd, afhankelijk van de werkelijke behoeften.
# 14) Om het maken van het script te voltooien, klikt u op 'Stop & Save' in het recordervenster.
#vijftien) Het simulatiescript moet worden gemaakt in de directory of simulatiemap die wordt weergegeven op het configuratiescherm van de Gatling-recorder.
Het simulatiescript begrijpen
Zodra het script voor het uitgevoerde scenario is gemaakt, navigeert u naar de simulatiemap en opent u het script.
Houd er rekening mee dat het script wordt gemaakt als hetzelfde pakket gestructureerd dat werd gespecificeerd voordat de recorder werd gestart - in ons geval zal het zijn com.learn.gatling en de klassenaam zal zijn 'AddProduct'.
Laten we het bestand AddProduct.scala openen en proberen de verschillende secties van het script te doorlopen.
Dit kan als volgt worden verklaard:
# 1) Configuratie instellen d.w.z httpProtocol en headers - In deze sectie wordt de algemene configuratie van gegevens voor het script gedaan, zoals:
- Type protocol - Http of https,
- Andere dingen zoals baseUrl die in volgende verzoeken moeten worden gebruikt.
- Headerinformatie - algemene headerinformatie en de headers die bij individuele verzoeken moeten worden verzonden. Raadpleeg header_0 en headers_2 in het onderstaande codefragment:
# 2) Scenario-definitie: Dit bevat het daadwerkelijke scenario en de volgorde van de verzoeken die moeten worden uitgevoerd om het scenario dat in het browservenster werd uitgevoerd, opnieuw te creëren.
Een belangrijk punt om op te merken is hier ook: we hebben zojuist de relatieve URL's genoemd voor de verzoeken, in plaats van de volledige URL. Dit komt omdat we zullen gebruiken httpProtocol configuratie we hebben besproken in punt # 1, waar de configuratiegegevens van het scenario zijn gedefinieerd.
# 3) Scenario-uitvoering: Dit gedeelte is het belangrijkste gedeelte dat de stappen voor het instellen van het scenario bevat.
De inject-configuratie hier is het aantal gebruikers / threads of met andere woorden, de belasting waarmee we dit scenario willen testen.
De standaardwaarde voor een aantal gebruikers is altijd 1 en dit kan worden gewijzigd voordat het scenario wordt uitgevoerd.
Houd er ook rekening mee dat we ook de httpProtocol-definitie gebruiken die we hebben besproken in punt 1, die alle basisconfiguraties bevat voor het uit te voeren scenario.
setUp (scn.inject (atOnceUsers (1))). protocollen (httpProtocol)
We zullen in de volgende zelfstudie meer details over de configuratie van injecteren en laden bekijken.
Test uitvoeren met simulatiescript
Nu zullen we zien hoe we het scenario kunnen uitvoeren met behulp van dit simulatiescript dat is gemaakt met de recorder. Het resulterende script dat wordt gemaakt, is eigenlijk een op Scala gebaseerde klasse die details bevat over het scenario dat via de browser is uitgevoerd.
Hier is een video-tutorial voor Gatling Script Execution:
De Gatling-installatie wordt geleverd met een shell-script (voor Windows-gebruikers is het een batch-script) dat kan worden gebruikt om deze simulatie uit te voeren.
Volg de onderstaande stappen om de gemaakte simulatie uit te voeren:
# 1) Navigeer naar de bin-map van de Gatling-installatie of ga gewoon naar - $ GATLING_HOME / bin
#twee) Voer het Gatling.sh-bestand uit voor Linux / Mac OS (of het Gatling.bat-bestand voor Windows-gebruikers).
# 3) In het geval dat er meerdere scriptbestanden aanwezig zijn in de simulatiemap, zal het script de gebruiker vragen om de simulatie te selecteren die de gebruiker wil uitvoeren (om dit te simuleren, maakt u hetzelfde scenario in verschillende pakketten aan, en wanneer Gatling-script wordt uitgevoerd, kunt u zie dat het 2 verschillende scripts weergeeft).
# 4) Simulatie is geselecteerd (of is standaard ingesteld op de simulatie die in de map aanwezig is als er slechts één simulatiescript beschikbaar is).
# 5) Het script vraagt nu om een optionele runbeschrijving toe te voegen. U kunt dit eenvoudig negeren en op enter drukken om de uitvoering van de simulatie te starten.
# 6) Terwijl de simulatie wordt uitgevoerd, kunt u zien dat uitvoeringsrapporten op de terminal worden afgedrukt en dat de parameters zoals reactietijd, totaal aantal verzoeken, succes / mislukkingen, enz. Samengevat worden weergegeven zodra de uitvoering van het scenario is voltooid.
# 7) Gatling genereert ook een gedetailleerd HTML-gebaseerd rapport aan het einde van de voltooiing van de uitvoering van het scenario dat veel verschillende gegevenspunten bevat met betrekking tot het uitgevoerde scenario.
We zullen de details van het gegenereerde rapport in de volgende tutorial bekijken.
Voordelen van het gebruik van Gatling
Gatling biedt veel functierijke mogelijkheden om een goed presterende automatiseringstestpakket te bouwen door gebruik te maken van de brede Gatling DSL, evenals groeiende community-ondersteuning voor hulp en om vragen te beantwoorden.
Het is belangrijk om hier op te merken dat Gatling, in tegenstelling tot andere tools zoals JMeter, een steile leercurve met zich meebrengt, maar in plaats daarvan biedt het veel programmeermogelijkheden om een robuuste en volledig functionele set simulatiescripts voor prestatie- en belastingtests te maken.
Enkele van deze voordelen zijn:
- Het is licht van gewicht en maakt het mogelijk een enkele thread te gebruiken voor meer dan één verzoek, in tegenstelling tot de meeste andere perf-tools waarbij een thread wordt gelijkgesteld aan een gebruiker.
- Door een enkele thread te gebruiken voor meerdere verzoeken, kan Gatling meer schalen en een grotere belasting genereren, zelfs op een enkele machine.
- Gatling biedt de mogelijkheid om in gedistribueerde modus te draaien wanneer er een enorme belasting is die moet worden gesimuleerd.
- Biedt ondersteuning voor veel andere protocollen dan HTTP,bijvoorbeeld, Websockets, MQTT, JDBC, enz. Kunnen allemaal op prestaties worden getest met behulp van Gatling.
- Gatling biedt een functierijke DSL - Domain Specific Language, die een eenvoudige syntaxis heeft en krachtige mogelijkheden biedt wanneer deze wordt gecombineerd om een simulatiescript te maken.
- Het biedt ook veel complexe simulatiebesturingsmogelijkheden, zoals looping-constructies, simulatie van denktijd, throttling-verzoeken buiten de gewenste RPS, enz.
- Het heeft uitgebreide rapportagemogelijkheden uit de doos en ze kunnen ook worden aangepast aan de vereisten.
Gevolgtrekking
In deze zelfstudie hebben we de basisprincipes van het gebruik van Gatling als een favoriete testtool voor belasting behandeld. Met de expressieve DSL en uitstekende ondersteuning voor HTTP-protocol wint Gatling snel aan populariteit om voor velen te worden gebruikt als een favoriete tool.
We leerden ook over de Gatling-recorder en Gatling-scriptrunner met een voorbeeldsimulatiescript dat hielp om het basisconcept van het opnemen van een simulatiescript te begrijpen dat vervolgens in de toekomst zou kunnen worden uitgevoerd met behulp van de Gatling Script-uitvoerder.
In de volgende tutorial behandelen we het schrijven van Gatling-scripts als Scala-projecten - d.w.z. zonder de recorder te gebruiken en begrijpen we de rapportsjablonen die worden gegenereerd wanneer de Gatling de uitvoering van de simulatie voltooit.
Aanbevolen literatuur
- Laadtests met HP LoadRunner-zelfstudies
- Correlatie - Laadtesten met LoadRunner
- Tutorial Soak Testing - Wat is Soak Testing?
- Laadtesten met LoadUI - een gratis en open source loadtesttool
- WebLOAD Review - Aan de slag met WebLOAD Load Testing Tool
- Tutorial over destructief testen en niet-destructief testen
- Tutorial over bruikbaarheidstests: een complete handleiding om aan de slag te gaan
- Prestatietests versus belastingtests versus stresstests (verschil)