
Apache JMeter is een servertesttool waarmee je het gedrag van gebruikers op je sites nabootst. Handig zodra je een site wilt testen met het oog op een gebeurtenis die het verkeer flink opdrijft, bijvoorbeeld een webshop tijdens de uitverkoop. Het is opensourcesoftware van de Apache Foundation.
JMeter voor het eerst gebruiken
Ik ben verre van een expert in JMeter en loadtesten, dus ik loop stap voor stap met je door een eerste, eenvoudige sessie met Apache JMeter en door wat ik ervan begrepen heb. Laat gerust een bericht achter als je vragen of opmerkingen hebt. We beginnen met een rechtermuisklik op Testplan -> Threads (Gebruikers) -> Thread Groep om een thread-groep toe te voegen. Op je scherm zie je dan dit.

Actie na een fout in een sampler
Dit is wat er gebeurt zodra er tijdens je test een fout optreedt: doorgaan, de volgende iteratie starten, de thread stoppen of de test stoppen, enzovoort. Standaard houden we het op ‘Start volgende thread-lus’, wat betekent dat je stappen vanaf het begin opnieuw worden gedraaid.
Eigenschappen van de thread-groep
Daarna volgen de eigenschappen van je thread-groep: het aantal threads (dat het aantal gebruikers voorstelt) dat verbinding maakt met je site, en de ramp-up-periode, het aantal seconden waarover die gebruikers worden verdeeld. Met 100 gebruikers en een ramp-up-periode van 10 seconden maken er 10 gebruikers per seconde verbinding met mijn site. Tot slot is er het aantal iteraties: hoe vaak elke thread (gebruiker) het scenario herhaalt. Zet je dat op 2, dan doorloopt één thread het scenario twee keer.
Instellingen van de planner
Je had het waarschijnlijk al door: hiermee stel je een vertraging of een datum in voor de start van je test. Tot hier niets ingewikkelds.
Standaardwaarden voor onze HTTP-verzoeken instellen
Ga daarvoor naar Testplan -> Thread Groep -> Configuratie-element -> HTTP Verzoek Standaardwaarden. Verplicht is het niet, maar zo stel je één keer een domeinnaam in in plaats van hem uit te schrijven bij elk verzoek dat je aan de thread-groep toevoegt. In dit voorbeeld heb ik mijn blog gebruikt.

Let op: JMeter haalt tijdens de test je bronnen niet op (css, js, afbeeldingen enzovoort). Wil je ze meenemen, ga dan naar Geavanceerd en vink Alle ingesloten bronnen ophalen aan. Houd er wel rekening mee dat je test dan veel langer duurt.

Een HTTP-verzoek toevoegen
Nu kun je een HTTP-verzoek toevoegen via Testplan -> Thread Groep -> Sampler -> HTTP Verzoek. Ook hier krijg je veel informatie te zien, maar neem je de tijd om ze te lezen, dan valt het snel op zijn plaats. In het padveld van je verzoek geef je een relatief pad op, mits je je site goed hebt ingesteld in HTTP Verzoek Standaardwaarden.

Met de constante timer geef je simpelweg een pauze aan waarin je fictieve gebruiker wacht, een echte bezoeker blijft immers langer dan één seconde op een pagina.
Een scenario automatisch opnemen met een proxy
Je kunt een scenario opnemen en afspelen door JMeter zo in te stellen dat het je gedrag op een site vastlegt en als test opnieuw afspeelt. Dat scheelt je het handmatig schrijven van een scenario.

Stel JMeter daarvoor in als proxy via Werkbank -> Niet-test-elementen -> HTTP(S) Test Script Recorder. Vergeet niet de recorder te starten en in de instellingen van je webbrowser naar die proxy te verwijzen.
![]()
Voeg daarna, nog steeds in de werkbank, een Listener -> Bekijk Resultaten Boom toe om de data te tonen en je tests te analyseren.
Conclusie
Ik ben Apache JMeter tegengekomen tijdens een cursus en vond het een erg interessante manier om webapplicaties tegen de server aan te testen en te zien of bepaalde verzoeken de server te zwaar belasten. Let op: voor tests die dichter bij de werkelijkheid liggen heb je meerdere servers nodig met op elk een JMeter-agent, zodat je ze op afstand aanstuurt en vanaf verschillende plekken bezoekers op je site simuleert. De resultaten zijn dan een stuk interessanter om te analyseren en liggen dichter bij de realiteit. JMeter is een heel complete tool, en als de gelegenheid zich voordoet schrijf ik er graag een uitgebreider artikel over.
···


