‘Een’ performancetest bestaat niet

Veel bedrijven begrijpen dat de tevredenheid van applicatiegebruikers voor een groot deel afhangt van de snelheid en stabiliteit van de applicatie. Daarom wordt voor de livegang van een nieuwe applicatie, of een update daarvan, een performancetest uitgevoerd. In de praktijk zien we vaak dat de test succesvol wordt afgerond en de applicatie er glansrijk doorheen komt. Vervolgens wordt de applicatie live gebracht, maar gaat deze toch down zodra het aantal gebruikers toeneemt. Dat is vreemd, want ‘de performancetest’ was toch succesvol?

Door Marcel Wigman – Performance Architect

Performancetest geen garantie voor succes

Met een goede performancetest wordt proefondervindelijk vastgesteld of het samenspel van applicatie, configuratie en omgeving voldoet in een productiesituatie. De test moet aantonen dat de input van de diverse expertises die betrokken zijn geweest bij de totstandkoming van de applicatie en haar omgeving, samen een passende oplossing vormen. Bij het ontwerp is nagedacht over specifieke risico’s en verwachte extreme situaties. Het is dus belangrijk om deze risico’s ook bij het ontwerp van de performancetest te dekken. Doe je dat niet, dan loop je het risico dat de applicatie na een geslaagde performancetest in productie alsnog down gaat.

Welke test voor welk risico?

Niet alle risico’s gelden voor alle applicaties. performancetestEen applicatie die maar door enkele personen in een bedrijf gebruikt wordt moet wel snel zijn maar zal niet overbelast worden. Een eenvoudige loadtest voldoet in dat geval. Voor een landelijke website die wordt gebruikt in noodsituaties gelden heel andere risico’s. Hoge aantallen gebruikers moeten kunnen worden bediend en waarschijnlijk zal de schaalbaarheid een belangrijke eigenschap zijn voor deze applicatie. Kortom, voor verschillende applicaties gelden verschillende risico’s en dus eisen. Het type performancetest moet gericht zijn op de risico’s die moeten worden gedekt. De vraag om ‘een performancetest’ zou dan ook altijd beantwoord moeten worden met een wedervraag: wat zijn de risico’s die u loopt? Vervolgens kan een op maat gesneden performancetest worden uitgevoerd.

Een greep uit de risico’s die we in de praktijk tegen komen:

  • Snelheid van de software
  • Bedrijfszekerheid
  • Schaalbaarheid en uitwijk
  • Bestandheid tegen overbelasting
  • Memoryleaks
  • Sessiemanagement en concurrency

Enkele voorbeelden

De vraag: bedrijfszekerheid

De applicatie moet 99% van de tijd beschikbaar zijn. Onderhoud moet dus kunnen worden uitgevoerd terwijl de applicatie door draait. Applicatie- of database nodes moeten worden gewisseld zonder een te grote invloed op gebruikers.

Het antwoord: failover testen

Om te toetsen of de applicatie aan de vraag voldoet worden responstijden gemeten, maar ook metrieken ingericht die verbindingen tussen componenten monitoren. Vervolgens worden tijdens een ‘normale loadtest’ componenten aan- of uitgezet. Analyse van de testresultaten en metrieken wijzen uit of de samenstelling van applicatie, infrastructuur en configuratie zich gedraagt zoals verwacht.

De vraag: snelheid

Een applicatie waarvoor snelheid belangrijk is wordt blootgesteld aan een belastingpatroon dat representatief is voor een piekbelastingniveau zoals in de productiesituatie verwacht kan worden. Dit niveau moet de applicatie langere tijd kunnen verdragen.

Het antwoord: loadtest en duurtest

Tijdens de test wordt de snelheid per gebruikeractie gemeten en vergeleken met de snelheidseisen die gesteld zijn aan de applicatie. Aansluitend wordt een duurtest uitgevoerd om vast te stellen dat de applicatie ook technisch gezond blijft bij langdurige belasting. Mocht blijken dat de snelheid niet voldoet, dan wordt een botleneck analyse uitgevoerd met diagnostische tools. Daaruit blijkt welke maatregelen genomen kunnen worden om de gewenste snelheid wel te halen.

De vraag: concurrency: 

Sommige websites worden alleen gebruikt bij calamiteiten, bijvoorbeeld bij een brand of overstroming. We lezen regelmatig dat alarm-websites plat gaan door hoge aantallen gebruikers. De eis is daarom dat veel gebruikers tegelijkterijd gebruik kunnen maken van de applicatie.

Het antwoord: stresstest: 

Voor dit soort applicaties wordt een bijzonder soort stresstest uitgevoerd. Met eenvoudige klikpaden maar met extreme aantallen bezoekers (sessies) die relatief kort actief zijn. Tegelijkertijd wordt het geheugen van de webserver gemeten om te zien hoeveel impact de belasting heeft op met name geheugen en hoe snel dit vrijgegeven wordt.

Mijn advies

Wat mij betreft bestaat er niet zoiets als ‘een performancetest’. Performancetesten worden uitgevoerd om te toetsen of een applicatie bestand is tegen belastingpatronen en grilligheden die redelijkerwijs kunnen worden verwacht in een productiesituatie. Productiesituaties verschillen per type applicatie, toepassing of omgeving.  Voor elk geval zal apart bekeken moeten worden welke test nodig is. Voor sommige applicaties worden zelfs meerdere typen testen uitgevoerd om de risico’s voldoende te dekken. Mijn advies is: probeer te voorkomen dat een performancetest alleen een vinkje op de vrijgavelijst is. Laat u adviseren over de test die past bij de praktijk van uw applicatie!

 

Lees ook:

 

Sorry, comments are closed for this post.

Welke performancetest heeft u nodig? Wij geven graag advies.  

  • Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.