Performancetesten door een dummy - Testen met data niet in een URL

Bij heel veel websites staat de ingevoerde data in de URL. Dit is echter niet altijd het geval. Soms wordt er gebruik gemaakt van andere manieren om data te versturen. Gegevens worden in verborgen parameters weergegeven. Of verstuurd via een speciaal datarequest. In dat geval is het vaak verstandig om bij JMeter gebruik te gaan maken van de recorder die JMeter biedt. Hiermee worden de handelingen die je in de browser uitvoert automatisch vastgelegd.

Testtools instellen voor je browser

Niet alleen JMeter heeft recorders, er zijn zeker ook andere tools die gebruik maken van een hulpmiddel dat automatisch je handelingen binnen een browser vastlegt. Sommige werken door direct een extensie (uitbreiding) te installeren in je browser. Een voorbeeld hiervan is het veelgebruikte Selenium IDE die als extensie in Firefox geïnstalleerd kan worden.

JMeter werkt op een andere veelgebruikte wijze. Je stelt dan JMeter in als extra stap. Een extra halte, waar alles wat je in je browser verstuurt en ontvangt, langs gaat. Hierdoor kan JMeter alle gegevens van uitgaand en binnenkomend verkeer in je browser ook vastleggen. Hiervoor wordt het woord "proxy" gebruikt. Je stelt je testtool JMeter in als proxy en vervolgens leg je in de browser vast dat deze de ingestelde proxy moet gaan gebruikten.

Om deze twee aan elkaar te koppelen, maak je gebruik van een soort adres. In JMeter stel je in welk 'adres' JMeter heeft. En vervolgens geef je in de browser aan naar welk 'adres' de browser al zijn verkeer moet sturen. Dit adres bestaat uit twee delen: 
  • Het IP-adres. Dit kan je zien als een soort straat postcode. Op basis hiervan wordt achterhaald naar welke computer/server de requests verstuurd moeten worden. Omdat je voor JMeter op je eigen computer blijft, kan je voor dit deel de term "localhost" gebruikten.
  • De poort. Zie zit maar als een soort huisnummer of postbus. Hierdoor weet de computer/server waar de berichten heen worden gestuurd, naar welk programma (in het geval van een testtool) hij de berichten moet sturen. Elke poort kan dan ook maar aan één applicatie gekoppeld worden. Zo wordt het 'adres' net zo uniek als de combinatie postcode en huisnummer.

JMeter - Testrecorder instellen

  • Start JMeter op
  • Klik met je rechtermuisknop op Test Plan
  • Klik in het menu op Add > Threads (Users) > Thread Group
Met deze handeling leg je een locatie vast waar het resultaat van je recording geplaatst kan worden.
  • Klik met je rechtermuisknop op WorkBench
  • Klik in het menu op Add > Non-Test Elements > HTTP(S) Test Script Recorder

  • Klik op de net toegevoegde HTTP(S) Test Script Recorder
  • Wijzig Target Controller naar de waarde "Test Plan > Thread Group"
  • Wijzig Grouping naar "Add seperators between groups"

Grouping in de recorder

JMeter kan voor jou bepalen welke requests bij elkaar horen en deze groeperen. Vaak wordt dit gebaseerd op basis van gebruikershandelingen als het opvragen van een URL of het klikken op een button.

In de recorder kan je kiezen voor  verschillende manieren waarop JMeter de vastgelegde requests groepeert.
  • Do not group samplers
    Er wordt geen groepering toegepast
  • Add seperators between groups
    Jmeter plaats alle requests onder elkaar, maar scheidt ze met behulp van een scheidingselement
  • Put each group in a new controller
    Alle groepen worden in een apart groepselement geplaatst
  • Store 1st sampler of each group only
    Deze keuze gaat ervan uit dat elke eerste request ook vaak het belangrijkste is. Daarom worden alleen deze vastgelegd. Dit is echter niet altijd het geval, dus het is verstandiger om alles vast te leggen en zelf te leren wat voor jou de requests zijn die je moet hebben.
  • Put each group in a new controller
    Voor nu is het voldoende om te weten dat dit een variant is op de keuze "Put each group in a new controler"

Poort instellen in de recorder

De meeste testtools worden standaard ingesteld op poort 8080. Maar juist omdat deze poort vaak gebruikt wordt, zal deze poort niet altijd werken. Als de weergegeven stappen niet werken, wijzig deze waarde dan naar een ader viercijferig getal, beginnend met "80".

JMeter - Proxy instellen op Firefox

Om de recorder werkend te krijgen, moet je de proxy in een van je browsers instellen. Hieronder staat beschreven hoe je de proxy op Firefox instelt.


  • Klik in het menu van Firefox op Opties
  • Klik in het menu op Geavanceerd
  • Open het tabblad Netwerk
  • Klik bij de groep Verbinding op de knop Instellingen
  • Selecteer in de popup die nu verschijnt de optie Handmatige proxyconfiguratie
  • Voer bij HTTP-proxy de waarde localhost in
  • Voer bij Poort de waarde in die gelijk is aan het veld "Port" in de recorder van JMeter
  • Klik op OK

JMeter - Proxy instellen op Chrome

Als je Chrome wil gebruiken, voer je de volgende stappen uit:


  • Klik in het menu van Chrome op Instellingen
  • Klik onderaan de pagina op Geavanceerde instellingen weergeven
  • Scroll naar beneden tot de groep Netwerk
  • Klik bij de groep Netwerk op de knop Proxyinstellingen wijzigen
  • Klik in de popup op de knop LAN-instellingen
  • Voer bij Adres de waarde localhost in
  • Voer bij Poort de waarde in die gelijk is aan het veld "Port" in de recorder van JMeter
  • Klik op OK

JMeter - Handelingen in webbrowser opnemen

Nadat je JMeter en de browser hebt ingesteld, is het moment om de handelingen op te nemen.

  • Klik op HTTP(S) Test Script Recorder
  • Klik op Start
  • Klik bij de melding die nu verschijnt op OK
Wanneer je nu in de browser naar een URL gaat of op een knop klikt, zie je de aangemaakte treadgroep automatisch aangevuld worden.

  • Klik op Stop als je klaar bent in de browser

Analyseren van gegevens


Een website bestaat uit een heleboel verschillende requests. Hierboven is een resultaat van de website NS tijdens het opvragen van een reisadvies. Zoals je kan zien, is een groot aantal al direct herkenbaar als afbeeldingen. Deze doen niet meer dan de betreffende afbeelding ophalen en zijn daarmee niet interessant voor de performance test. Vaak is er ook een stylesheet, die zaken als te gebruiken lettertypes en kleuren bevat. Deze is herkenbaar aan ".css".

Vervolgens heb je nog de requests van externe partijen. Aan de ene kant requests om gegevens op te halen. Dit zijn bijvoorbeeld requests om facebook gegevens te tonen. Of, zoals hierboven, om een kaart op te halen, vaak bij Google maps. Die is hierboven te zien als "263 /maps/api/js". Daarnaast zijn er ook nog requests die gegevens opsturen voor reclamedoeleinden of statistieken. De meest gebruikte is Google Analytics


Externe requests zijn herkenbaar aan een URL die overduidelijk geen onderdeel is van het bedrijf van de website. Zoals hierboven te zien is, wordt voor Google maps van een hele andere URL gebruik gemaakt dan "www.ns.nl".

Als je al deze requests hebt uitgesloten, hou je maar een kleine groep over. In deze groep moet je op zoek naar het request of de requests waarin de door jou ingevoerde gegevens terug zijn te vinden.

JMeter - Opzoeken request met pararameters

  • Klik op de request de gegevens die je hebt ingevoerd

De gegevens zijn meestal terug te vinden in de Parameters lijst. Scroll door de lijst heen om de volledige inhoud te controleren. Zie hierboven voor het resultaat van de NS website. Te zien is dat ik hier een reisadvies heb opgevraagd vanuit Den Haag Centraal. Als je hier niets vindt, kan je nog in het tabblad Body Data kijken.

Nu kan je alle requests verwijderen die je niet nodig hebt. Vervolgens kan je bij de parameters in de kolom Value gebruik maken van een variabele om data te variëren. Hetzelfde geldt voor gegevens in het tabblad Body Data. Hoe je data varieert en variabelen gebruikt, is omschreven in Data variëren in de URL.






.










Geen opmerkingen:

Een reactie posten

Opmerking: Alleen leden van deze blog kunnen een reactie posten.