Kennisblog: Performance testen met JMeter bij Specialisterren

Performance testen met JMeter bij Specialisterren

Binnen Specialisterren wordt testautomatisering met name uitgevoerd op het functionele vlak. Applicaties worden geautomatiseerd functioneel getest met behulp van verschillende tools. Naast het functioneel testen van applicaties, is het ook van belang om de performance en stabiliteit onder load te testen. Dit vraagt een andere aanpak dan functioneel testen en daarmee ook andere tooling. Het doel van testen onder load is om een representatieve hoeveelheid verzoeken richting de server te sturen, om zo het gedrag van enkele tot vele gelijktijdige gebruikers na te bootsen. Zo kun je meten hoe dit de response tijden van de server beïnvloedt. Om dit te doen maken we gebruikt van Apache JMeter. Lees in deze kennisblog meer over hoe wij dit aanpakken!

Aanpak van een performance test

Het opzetten van een load of performance test bestaat uit een aantal stappen: De eerste stap is het identificeren van de scenario’s die worden doorlopen tijdens de performance test. Zo’n scenario bestaat uit een aantal stappen uit de applicatie, die resulteren in verzoeken naar de server. Nadat de scenario’s zijn bepaald wordt er gekeken hoeveel gebruikers er tegelijkertijd met dat scenario bezig zijn, het zogenaamd concurrent gebruik.

Realisatie met behulp van Apache JMeter

Apache JMeter is een opensource tool die op veel plaatsen wordt gebruikt voor het uitvoeren van load en performance testen. JMeter levert de functionaliteiten die we nodig hebben voor het opzetten, uitvoeren en rapporteren van load en performance testen. JMeter is echter geen browser, dit betekent dat alle Javascript activiteiten, zoals veel in de huidige geavanceerde web clients wordt gebruikt, niet uitgevoerd worden. JMeter stuurt verzoeken naar de server en ontvangt antwoorden, niets meer en niets minder. Deze berichten zijn uiteraard wel hetzelfde als een browser zou doen. De verzoeken naar de server bevatten vaak informatie die in een antwoord op een eerder verzoek ontvangen werden. JMeter geeft de tester de mogelijkheid om informatie uit antwoorden de filteren en deze in latere verzoeken weer mee te sturen. Hiermee wordt een scenario als een reeks van bij elkaar horende verzoeken gedefinieerd. Daarnaast kunnen binnen JMeter datasets ook in bestanden gebruikt worden, waar tijdens het uitvoeren van testen gebruik van wordt gemaakt om variatie in de scenario’s aan te brengen. Niet iedere klant koopt tenslotte hetzelfde bij een webshop.

Concurrent gebruik simuleren met Apache JMeter

Een van de belangrijkste zaken bij performance tests is het simuleren concurrent gebruik,  vergelijkbaar met of zelfs hoger dan de verwachtte topdrukte. Voor ieder scenario kan binnen JMeter een groep worden gemaakt waar het aantal concurrent gebruikers (threads genoemd) worden geconfigureerd. Zoals te zien in de onderstaande figuur kunnen de “gebruikers” in groepjes worden opgestart om te voorkomen dat er bij de start direct een tsunami van verzoeken naar de server worden gestuurd. In dit voorbeeld gaan er 12 concurrent gebruikers draaien, opgestart in 4 stappen van 3 gebruikers. Voor het geval dat het JMeter proces de beperkende factor wordt, kan er ook getest worden in de zogenaamde distributed mode. Er draaien dan meerdere processen die de applicatie bestoken met verzoeken.

 

JMeter uitvoering

JMeter heeft meerdere mogelijkheden om een test uit te voeren. Ten eerste is er de GUI mode waarin de tester kan zien wat er gebeurd en de testen real time kan volgen. Deze mode is geschikt voor het opzetten van test scenario’s en testen met lage load (weinig concurrent gebruikers). Naast de GUI mode is er de CLI (Command LIne) mode. In deze mode is er geen grafische interface die moet worden bijgehouden en kunnen zwaardere testen worden gedraaid. Ook is deze mode geschikt voor de integratie in CI/CD pipelines en build servers zoals Jenkins.

Tot slot

JMeter is een mooie tool die we in verschillende projecten succesvol hebben kunnen inzetten. Alleen een tool is uiteraard niet voldoende, of om Grady Booch te citeren “A fool with a tool is still a fool”. Het bouwen van de testen is het het nauwkeurig werk, en nog steeds mensenwerk.

Voor meer informatie over Apache JMeter verwijzen we graag naar hun website.

Deze kennisblog is geschreven door onze Integration & tooling specialist Robert Schrijvers.

Related Posts

Ga naar de inhoud