Inspiration & Kunskap

Ordlista prestanda (de viktigaste orden och begreppen) 

Att prestandatesta sina mjukvaror är otroligt viktigt för att vara säker på att de klarar av den kapacitet de är tänkta att klara av. Inom prestanda är det dock en hel del ord och begrepp att hålla koll på, därför har vi satt ihop en ordlista där vi har samlat de viktigaste. 


Här är de vanligaste orden och begreppen inom prestanda: 

Belastning 

Vid användning av system kommer dessa försättas under belastning. Det betyder att de interaktioner som användare eller andra applikationer utför mot system som ska testas, leder till att resurser kommer förbrukas. Detta kan till exempel vara att systemens processorutnyttjande eller minnesanvändning höjs. Det kan också vara att logiska enheter inne i mjukvaran allokeras. Ju högre belastningen är, desto mindre resurser kommer finnas över till ytterligare användning av systemet vilket i sin tur kan leda till en lägre upplevd prestanda. 

Lasttest

Ett test som utför simultana interaktioner mot systemet och på det viset försätter applikationerna under belastning. Lasttester kan hitta alla möjliga belastningsproblem i applikationer relaterade med till exempel minne, trådsynkronisering eller robusthet.

Prestandatest

Ett test som mäter ett systems prestanda. Många prestandatester är även lasttester, det vill säga tester som både belastar och mäter prestandan av system. Ett av de vanligaste mätvärdena för prestanda är svarstider.

 

Prestandakrav

Prestandakrav är en del av den icke-funktionella kravställningen för applikationer/tjänster där förväntningarna för prestandan framkommer. Dessa krav kan både formuleras från en användares perspektiv, så väl som ur ett mer tekniskt och lösningsnära perspektiv. Prestandakrav baseras dels på förväntningarna av prestanda (till exempel svarstider), men också vilka belastningsnivåer och användarscenarios som kravet avser. 

Prestandatest-verktyg

Ett prestandatest-verktyg kan vara ett datorprogram, ett kodbibliotek eller annat tekniskt stöd som ger testaren de förutsättningar som behövs för att skapa och exekvera prestandatester. De flesta verktyg erbjuder dessutom någon form av analys och rapportering av testresultatet. 

Produktionslik testmiljö

För att få ett resultat av ett prestandatest som säger något om hur prestandan kommer vara i produktion, behöver testmiljön som används vara produktionslik i en mängd aspekter. Det innefattar bland annat resursbestyckning, datavolymer, redundans samt infrastruktur och konfigurering. 

Script

Den delen av ett prestanda- eller lasttest som beskriver vilken belastning som ska simuleras och vilka transaktioner som ska utföras. De trådar som används i testet kommer var och en köra scriptet om och om igen tills testet är klart. Ett scriptexempel kan vara följande: En användare laddar webbsidan som ska testas. Användaren trycker på logga in-knappen. Användaren fyller i inloggningsuppgifter och trycker på OK, och väntar tills webbsidan visar de uppgifter som tillhör personen. Användaren loggar ut.

 

Skalbarhet

Skalbarheten kan mätas i hur utbyggbart ett system är. Om ett system skalar linjärt så betyder detta att en dubblering av applikationer och resurser skulle ge en kapacitetsdubblering i hur mycket last som systemen som helhet skulle klara av och forfarande leverera samma prestanda. Ett system som har dålig skalbarhet kanske inte får någon eller till och med förminskad belastningkapacitet. Med prestanda och lasttester kan skalbarheten i ett system mätas, så kallade skalbarhetstester. 


End-To-End 

Prestandatester som testar End-To-End betyder att man testar så nära användarens perspektiv, i ett fullständigt system utan att mocka bort vissa delar. En fördel med dessa tester är att man får en heltäckande test som faktiskt säger något om den prestandan som användaren kommer uppleva. Det ger även goda möjligheter för verksamheten att förstå vad som prestandatestas, och också kravställa därefter. Dock ställer dessa tester stora krav på förbereda en testmiljö, testdata samt att man använder en typ av prestandatestverktyg som klarar att simulera korrekt belastning.

 

APM

Application Performance Management är en teknologi där ett eller flera verktyg ger möjlighet att monitorera system och dess prestanda. 


Trådar

En teknik i mjukvaran för att kunna utföra parallella aktiviteter. Trådar är i många fall en vital del av lasttester, då det möjliggör att simulera ett stort antal användare som interagerar med systemet samtidigt. En enskild tråd kan liknas vid en enskild användare, eller ett enskilt kodstycke som utför uppgifter sekventiellt. Lägger man flera trådar parallellt i ett lasttest så får man effekten av flera användare. 

Transaktion

Anrop av systemen som ligger till grund för lastnivå och resultat. Exempelvis kan en transaktion vara aktiviteten att klicka på en länk och sedan vänta tills sidan har laddats. 

Genomströmning (Throughput)

Den mängd transaktioner ett lasttest utsätter ett system med. Genomströmningen kan uttryckas i antal transaktion / sekund.

 

Svarstid

Den tid det tar från det att ett anrop skickats, tills dess att svaret från systemet kommit tillbaka. Ett exempel kan vara hur lång tid det tar att ladda en viss webbsida. 

Throttling / Pacing

En teknik för att begränsa belastningen till en mer produktionslik nivå. Om En throttlingnivå sätts till 10 / sekund, så kommer inte testet att utföra fler transaktioner under testet än just 10 per sekund.

Iteration

En iteration är en exekvering av scriptet av en tråd vid ett tillfälle. Iterationen kan både användas för att avgöra hur länge testet ska köra, och om en Throttle ska sättas på iterationsnivå. 

 

Rampup

Av olika anledningar kan det vara bra att börja med en låg belastning för att successivt öka lasten under en tid, tills dess att målbelastningen nås. Detta kallas för att man rampar upp lasten. 

Percentil

Ett begrepp som ofta används i rapporteringen av prestandatestet och som också kan användas i kravställningen. Om ett prestandatest har utfört 1000 transaktioner av typen "logga in", så kan resultatet till exempel visa att den 90:e percentilen är 2 sekunder. Det betyder att 900 av alla inloggningar tog 2 sekunder eller under och 100 inloggning tog över 2 sekunder. Vid resultat där svarstiderna fluktuerar kraftigt är ett percentilvärde en bättre representation av det faktiska resultatet, än till exempel medelsvarstid.

Prestandatestmock

Prestandatestmock är ett substitut av en komponent i en integrerad lösning som simulerar den komponenten så att testerna ändå kan göras. Typiskt så mockar man vanligen bort till exempel externa integrationer för att det inte finns någon testmiljö. Detta görs i både funktionella tester och prestandatester, men i prestandatester behöver vissa särskilda aspekter belysas. Testdatastödet i en mock som ska användas för prestandatester behöver i en del fall kunna ge ett stort antal unika svar, matchande de förfrågningar som görs från de anropande systemen. Man kan också behöva simulera den svarstid som integrationen förväntas leverera, för att få ett mer fullständigt resultat i prestandatestet. 

 

Sammanfattning 

Att prestandatesta sina mjukvaror är mycket viktigt för att vara säker på att produkten klarar av den kapacitet som den är tänkt att klara av. Men det finns en hel del begrepp och ord att hålla koll på inom just prestanda, i det här blogginlägget har vi därför gjort en ordlista över de viktigaste. 

Vill du vara säker på att inte missa liknande blogginlägg i framtiden? Prenumerera på bloggen genom att fylla i formuläret här på sidan! 

 

 

Skrivet av

Stefan Vahlgren

har djupa kunskaper i prestanda och testautomatisering. Stefan driver ett egenutvecklat Open Source verktyg (Loadcoder) för prestandatestning i Java. Han förkovrar sig i nya tekniker genom olika forum och brinner för enkelhet och ständiga förbättringar. Stefan föreläser också om hur organisationer kan bli mer effektiva genom att arbeta med prestanda i ett tidigt skede.

Prenumerera för mer nyheter och inspiration