Performancetesten door een dummy - Performancetesten met data in cookies en caches

Tot nu toe zijn we altijd uitgegaan van de situatie waarin elke request werd uitgevoerd alsof de gebruiker nog nooit op de website is geweest. Gevolg: de test kan minder realistisch zijn. In werkelijkheid worden afbeeldingen en andere grote bestanden voor je website vaak maar 1 keer opgevraagd, waardoor een volgende keer opvragen minder performance vraagt. En gegevens worden meegestuurd bij een eventuele volgende request van de website. Hierdoor krijg je bijvoorbeeld, als je eerder zoekgegevens heb ingevuld, steeds weer het zoekresultaat gebaseerd op de door jou ingevoerde zoekgegevens. En niet het zoekresultaat op basis van de standaard zoekcriteria van de website. Voor deze mogelijkheden worden veelvuldig de volgende twee onderdelen gebruikt: de browser cache en het cookie.

Browser Cache

Een cache is een onderdeel dat gebruikt wordt om data tijdelijk op te slaan. Hierbij kan je denken aan zo ongeveer alles wat jij op je eigen computer ook op kan slaan. Belangrijkste doel is, om niet elke keer dezelfde data helemaal vanaf de bron op te halen, zodat er een performancewinst is.

De browser cache is een gereserveerd deel van het geheugen dat gebruikt wordt voor het tijdelijk opslaan van opgevraagde internetpagina's. Wanneer je een pagina opnieuw opvraagt, worden tekst en afbeeldingen eerst uit de browser cache gehaald. Slechts een deel van de data wordt opgehaald van de oorspronkelijke bron. Per deel op de website kan door de ontwikkelaar worden aangegeven  wanneer er gekeken moet worden naar de bron. 


Cookie

Een cookie is een bestand, dat door de website aangemaakt wordt. In dit bestand worden gegevens gezet, die de website dan op een later moment opnieuw kan opvragen. Denk hierbij bijvoorbeeld aan zoekgegevens die je hebt ingevoerd of aan producten die je eerder hebt opgevraagd.

Wanneer houdt je rekening met cookies en/of caches

Eigenlijk is er maar een manier om te weten of je in je performancetest rekening moet houden met cookies: vraag het aan de ontwikkelaars. Vraag of bij de pagina, die je in je performancetest opneemt, gebruik wordt gemaakt van cookies. Caches zijn eigenlijk altijd verstandig om toe te voegen, als je een pagina in je test door een gebruiker meerdere keren laat opvragen. Ze maken dan altijd verschil, al is het effect de ene keer groter dan de andere keer. Maar de cache meenemen kan eigenlijk nooit kwaad.

JMeter - Performancetest zonder cookies en cache

Deze pagina is vooral bedoeld om je te laten ervaren wat eigenlijk het verschil is tussen testen met cookies en cache t.o.v. testen zonder cookies en cache. Daarom voeren we eerst een performancetest uit zonder en leggen we de resultaten vast. Zodat we deze later kunnen vergelijken.

Hierbij gaan we veel gebruik maken van elementen en  kenmerken, die beschreven zijn in het onderdeel Performancetest inclusief afbeeldingen en scripts. Lees deze door, als je dit nog niet gedaan hebt. Zo gaan we, om het effect van de cache groter te maken, ervoor zorgen dat alle afbeeldingen op de pagina opgehaald worden.


  • Maak een test aan met 1 HTML pagina
  • Klik op HTTP request
  • Vink in de groep "Embedded Resources from HTML files"de checkbox "Retrieve all Embedded Resources" aan
  • Wijzig het veld Name naar "HTTP request zonder managers"
  • Klik met je rechtermuisknop op Thread Group
  • Klik in het menu op Add > Listener > View Results Tree
  • Klik op Thread Group
  • Wijzig Number of Treads naar de waarde 1
  • Wijzig Loop Count naar de waarde 5
  • Klik op Start bovenin de knoppenbalk

JMeter - Performancetest met cookies en cache

Nu gaan we een cookie manager en een cache manager toevoegen. Deze managers simuleren automatisch per gebruiker, oftewel Thread, de cookies en caches.


  • Klik op HTTP request
  • Wijzig het veld Name naar "HTTP request met managers"
  • Klik met je rechtermuisknop op Thread Group
  • Klik in het menu op Add > Config Element > HTTP Cache Manager
  • Klik met je rechtermuisknop op Thread Group
  • Klik in het menu op Add > Config Element > HTTP Cookie Manager
De locatie van de managers maakt niet uit. Je kan er voor de leesbaarheid van de test wel voor kiezen ze bovenaan te plaatsen.
  • Klik op Start bovenin de knoppenbalk

JMeter - Cache effect

Nu gaan we de eerste en tweede test met elkaar vergelijken
  • Klik op het element View Results Tree
  • Klik in de resulttree op de eerste HTTP Request zonder manager
  • Noteer de Body size die je ziet in het tabblad Sampler Result
  • Klik in de resulttree op de tweede HTTP Request zonder manager
  • Noteer de Body size in bytes die je ziet in het tabblad Sampler Result

Body size in bytes geeft het beste aan hoeveel bytes er is opgehaald om de website te tonen. In de afbeelding hierboven is de test uitgevoerd op www.funda.nl. Je ziet dat de groottes beiden ruim boven de 600.000 bytes liggen.
  • Klik in de resulttree op de eerste HTTP Request met manager
  • Noteer de Body size die je ziet in het tabblad Sampler Result
  • Klik in de resulttree op de tweede HTTP Request met manager
  • Noteer de Body size in bytes die je ziet in het tabblad Sampler Result

Nu zie je meestal een groot verschil. Bij de door mij uitgevoerde test is het overduidelijk: de tweede request heeft ongeveer 6 x minder bytes binnengehaald dan de eerste.

JMeter - Cookie effect

  • Klik in de resulttree op de eerste HTTP Request met manager
  • Klik op het tabblad Request
Op het tabblad request kan je alle gegevens zien, die verstuurd worden. Dus als er cookie informatie verstuurd wordt, kan je dit hier terugvinden. Maar, zoals ook in de afbeelding hieronder is te zien, bij de eerste request zijn er nog geen cookies meegestuurd.



  • Klik in de resulttree op de tweede HTTP Request met manager

Nu zie je opeens Cookie Data (mits je site met een cookie werkt). Wat er staat, zal nu niet veel toevoegen. Maar hier kunnen dus gegevens staan, die je voor je test nodig hebt. En in dat geval is het van groot belang om het cookie mee te nemen in je test.

JMeter - Performancetest met verschillende gebruikers

Om helemaal te beseffen wat het verschil is, gaan we nog een performancetest uitvoeren. Deze is precies gelijk aan diegene hiervoor, alleen simuleren we nu niet 1 gebruiker die meerdere keren een pagina opvraagt, maar meerdere gebruikers die 1 keer de pagina opvragen.
  • Klik op HTTP request
  • Wijzig het veld Name naar "HTTP request verschillende gebruikers"
  • Klik op Thread Group
  • Wijzig Number of Treads naar de waarde 5
  • Wijzig Loop Count naar de waarde 1
  • Wijzig Ramp-up Period naar de waarde 50 (1 gebruiker per 10 seconde)
  • Klik op Start bovenin de knoppenbalk
Als je bij deze test naar de gegevens in de Result Tree kijkt, dan zal je zien dat het cookie steeds leeg is en de body size in bytes steeds groot blijft. Dit komt omdat JMeter de cache en cookie manager bijhoudt per gebruiker. Oftewel per thread. Voor elke thread worden los de cookies en los de cache bijgehouden. Waardoor, net als in werkelijkheid, de ene gebruiker geen enkel effect heeft door de cache en cookie van een andere gebruiker.








Geen opmerkingen:

Een reactie posten

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