Performancetesten door een dummy - Data variëren in de URL

Een belangrijke stap om je performancetest te verbeteren, is om de data waarmee je test te variëren. Door je data te variëren, kan je de performancetest een beetje meer tot flink meer realistisch maken. Want hoe meer je performancetest lijkt op werkelijke gebruikers hoe beter. Tenslotte zal ook niet elke gebruiker dezelfde gegevens invoeren op een pagina.

Steeds realistischer data - van eenvoudig naar moeilijk

Data in een performancetest maakt veel verschil om de performancetest realistischer te maken. Tegelijkertijd is een realistische set van data voor de performancetest een taak die veel tijd vraagt. En ook veel medewerking vraagt vanuit de organisatie. Besef dat het variëren van data, zelfs met weinig onderzoek, je performancetest al realistischer maakt. En daarmee ook betrouwbaarder. Elke kleine stap die je kan zetten bij de data voor performancetest is meegenomen. Elke kleine stap verder is weer beter. Hieronder de vier belangrijkste manieren om je data op te bouwen:

Data variëren zonder onderbouwing
Dit maakt je test maar een klein beetje realistischer, maar is wel een goede en eenvoudige eerste stap om je performancetest op het gebruik van data voor te bereiden. Kies gewoon een aantal waarden per invoerveld. Kies deze als het kan een beetje verspreid, bijvoorbeeld bij een datum een beetje verspreid door het jaar. Of bij een plaats een beetje verspreid door Nederland.

Data variëren binnen meest gebruikte waardes
Wanneer je aan statistieken kan komen hoe vaak bepaalde gegevens ingevoerd worden, dan kan je gaan kijken naar de meest gebruikte waardes. Bij een keuze in waardes van 10 of minder, kan je gaan voor de drie meest gebruikte. Of je kan kiezen voor alle waardes die boven de 10% liggen. Wat je het meest handig lijkt.

Bij andere keuzelijsten is het verstandig om te kijken naar waardes boven de 10%. Wanneer deze er niet zijn, is het vaak mogelijk om via groepen te bepalen welke waardes je moet kiezen. Ditzelfde kan ook bij velden als datums en postcodes. Als je bijvoorbeeld kijkt naar plaatsen of postcodes, kan je kijken welke provincies het meest gekozen worden en uit deze provincies plaatsen kiezen. Dit kunnen dan weer de meest gekozen plaatsen zijn. Bij datums kan je op een soortgelijke manier kijken naar de meest gekozen maanden.

Data variëren op basis van verhouding
Met dezelfde statistieken als hierboven, kan je ook een wat realistischer bestand maken, door de data naar verhouding te kiezen. Handig is om deze manier met 100 of 1000 waardes per invoerveld te starten. Minder dan 100 is niet verstandig, omdat de verhouding dan vaak niet goed aangehouden kan worden. Als je 100 landen moet hebben, kan je kijken hoe vaak een land procentueel gekozen wordt. Bij 1% kies je het land 1 keer, bij 33 procent 33 keer.

Data baseren op productiegegevens
Als het mogelijk is om voor een bepaalde periode precies te weten welke waardes voor de invoervelden in productie zijn ingevoerd, kan je de testdata baseren op productie. Er zijn drie grote verschillen:
  1. Je bepaalt nu niet per invoergegeven welke waarde je wilt gebruiken, je bepaalt welke combinatie van invoergegevens je wil gebruiken
  2. Om deze test echt realistisch te maken, moet je je baseren op een groot aantal gebruikers. Je komt al snel uit op 1000 of meer.
  3. Wanneer de productiegegevens gegevens van klanten bevatten, zal je hulp nodig hebben om deze te anonimiseren. Want gegevens gebruiken, waarin klanten te herkennen zijn, is vaak niet toegestaan.
Kies voor deze wijze van data bepalen een periode die bekend staat als een tijdstip met veel bezoekers. Achterhaal van elke bezoeker welke gegevens hij/zij heeft gebruikt. En deze combinatie van invoergegevens is een combinatie die je in je performancetest opneemt.

Bepalen van de te variëren gegevens

Binnen deze taak gaan we uit van de data die te zien is in de URL. Er zijn ook varianten waarbij de data bijvoorbeeld uit je cookie gelezen wordt wordt of via een request wordt opgevraagd. Maar de hier beschreven variant is te herkennen, doordat de data die je hebt ingevoerd, eenvoudig terug te vinden is in je URL.

Neem bijvoorbeeld de volgende twee URL's

http://9292.nl/reisadvies/station-amsterdam-centraal/station-rotterdam-centraal/vertrek/2015-11-18T1942

http://9292.nl/reisadvies/station-utrecht-centraal/station-amsterdam-centraal/aankomst/2015-11-18T1933

In deze URL's staat eerst de vertreklocatie en daarna de aankomstlocatie. Als laatste staat de datum en het tijdstip die ingevoerd is. Vertrek of aankomst is de keuze waarbij je aangeeft of het ingevoerde tijdstip het tijdstip is waarop je wilt vertrekken of het tijdstip waarop je aan wil komen.

Bepalen van de in te lezen databestanden


Voor de eerste performancetesten is het verstandig om te kiezen voor CSV-bestanden.

CSV-bestand

Een CSV-bestand wordt ook wel een kommagescheiden bestand genoemd. Dezelfde gegevens worden op elke regel opnieuw herhaald. De verschillende gegevens worden herkend, doordat ze door een komma van elkaar gescheiden zijn.

Een specifiek kenmerk van een CSV bestand is ook, dat er geen opmaak in het bestand staat. Dus bijvoorbeeld geen verschillende lettertypes. Daarnaast wordt dit formaat vrijwel altijd door een testttool ondersteunt. Het bestand is dus eenvoudig en veelgebruikt, en daarmee dus vaak een logische keuze.

Zelf maak ik een CSV-bestand altijd met het programma Kladblok, op elke computer standaard aanwezig. Bij het opslaan moet je dan wel zelf de bestandsnaam eindigen met ".csv". Maar je kan ook met Excel of een ander spreadsheet programma een CSV-bestand maken.

Meestal wordt voor een performancetest slechts 1 CSV-bestand aangehouden. Hierin staan per uit te voeren request alle gegevens die je wil gebruiken. Zelf heb ik echter de gewoonte ontwikkeld om meerdere bestanden te maken. Dit is geen verstandige keuze als je met productiedata werkt. Maar bij de andere beschreven varianten heeft dit een voordee. Als je in elk bestand net een ander aantal regels doet (zie ook afbeelding hierboven), dan krijg je automatisch nog meer variatie, zonder veel extra werk. Doordat elk bestand op een ander moment weer bovenaan begint, ontstaat heel eenvoudig een extra mogelijkheid om binnen je test steeds verschillende gegevens te laten gebruiken.

Bepalen van de waardes in je CSV-bestand

In je CSV-bestand zet je minimaal twee groepen waardes neer: de waardes die je in de URL-request terug wil zien en de waardes die je wil gebruiken om je resultaat te controleren. Stel dat je een reisadvies vanuit Amsterdam opvraagt, zou het dan geen meerwaarde hebben om te controleren of het eindresultaat ook een reisadvies vanuit Amsterdam is? En de meest eenvoudige wijze is om te controleren of het woord "Amsterdam" ook in de opgevraagde pagina voorkomt.

JMeter - Data variëren in de URL

CSV elementen toevoegen


Voor deze beschrijving gaan we uit van de test zoals gemaakt bij Een HTML pagina performancetest.

Herhaal deze volgende stappen voor elk CSV-bestand:
  • Plaats het CSV-bestand in dezelfde map als die waarin je je JMeter bestand hebt opgeslagen
  • Klik met de rechtermuisknop op Thread Group
  • Klik in het menu op Add > Config Element > CSV Data Set Config
Let op: de locatie van dit element maakt niet uit. De CSV data wordt altijd eerder ingelezen, dan het request wordt uitgevoerd. Je kan er echter voor de leesbaarheid voor kiezen om het element te verplaatsen naar bovenin de Thread Group.

Om het inlezen van het CSV bestand te testen, voegen we een View Result Tree toe. Zie voor meer informatie over dit element Performancetest inclusief afbeeldingen en scripts. Let op: bij de echte performancetest moet dit element weer verwijderd worden.
  • Klik met de rechtermuisknop op Thread Group
  • Klik in het menu op Add > Listener > View Results Tree.
CSV-bestand instellen


  • Klik op CSV Data Set Config
  • Wijzig in het veld Name de naam naar een naam waardoor je weet welke gegevens worden ingelezen
  • Voer bij Filename de naam van het bestand in
  • Voer bij Variable Names de in te lezen gegevens in. Scheidt deze met een komma.
    Gebruik in de namen geen spaties. De ingevoerde naam wordt later als variabele gebruikt en deze mag geen spaties bevatten.
URL request aanpassen


In het pad staan de gegevens die je wil gaan vervangen door de variabelen zoals aangegeven bij de CSV Data Set Config. Herhaal hiervoor per onderdeel in de URL de volgende stappen:
  • Klik op HTTP Request
  • Selecteer dat deel in de URL dat het gegeven bevat waarvoor je een variabele wil invoeren
  • Type de tekst '${'
  • Type vervolgens de naam van de variabele, zoals aangegeven bij de CSV Data Set Config in het veld Variable Names
  • Type hierna de tekst '}'
JMeter herkent de variabele doordat deze staat tussen '${' en '}'. Wanneer JMeter dit herkent, probeert het programma de variabele door de juiste tekst te vervangen. Als dit niet lukt, laat JMeter de variabele gewoon staan.

Response controle aanpassen

Voer dit onderdeel alleen uit, als je de controle van je request ook wil baseren op de ingelezen data.


  • Klik op Response Assertion
  • Selecteer de controle die al in de tabel staat
  • Klik op Delete
Voer hierna de volgende stappen per gewenste controle uit



  • Klik bij de group Patterns to Test op Add
  • Klik op de net verschenen cel in de tabel van Patterns to Test
  • Type de tekst '${'
  • Type vervolgens de naam van de variabele, zoals aangegeven bij de CSV Data Set Config in het veld Variable Names
  • Type hierna de tekst '}'
Controleren van het inlezen


Om het inlezen in te stellen, wijzigen we het inlezen van een CSV bestand zo, dat het bestand slechts 1 keer ingelezen wordt. Hierna stopt de test automatisch

  • Klik op het te wijzigen CSV Data Set Config element
  • Wijzig Recycle on EOF naar False
Hiermee geef je aan dat het bestand slechts 1 maal ingelezen wordt.

  • Wijzig Stop thread on EOF naar True
Hiermee geef je aan dat als alle waardes in het bestand zijn ingelezen, de test ook werkelijk stopt.

Vervolgens gaan we de test uitvoeren, met als doel het inlezen te controleren


  • Klik op Thread Group
  • Wijzig Loop Count naar 100
    Eigenlijk maakt deze waarde niet uit, als het maar gelijk of groter is dan het aantal keer dat je de HTTP request wil controleren. De test stopt tenslotte automatisch als het CSV bestand volledig is doorlopen.
  • Klik op Start (de groene pijl naar rechts in de knoppenbalk bovenin)
  • Wacht tot de startknop weer actief is
  • Klik op View Result Tree
  • Selecteer een in dit element aangegeven HTTP Request
  • Open het tabblad Request
Boven dit tabblad zie je de uiteindelijke URL die is verstuurd. Als je de URL goed hebt ingesteld, dan zie je hier de URL met de door jou bepaalde data. Wanneer de variabele naam niet gevonden is, zie je de variabele zelf weer terug. In dat geval moet je de naam aanpassen.

Daarnaast kan je in dit element zien of het resultaat volgens wens is verlopen. Wanneer de request faalt, kan je de reden hier ook terug vinden.




Meestal is er sprake van een fout in de variabelen van de Response Assertion. Dit kan je zien, doordat niet de concrete tekst waarop gecontroleerd moet worden, vermeld staat. Maar in plaats daarvan de naam van de variabele.
















Geen opmerkingen:

Een reactie posten

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