Skip to main content

Prestandatestning sparar företag miljontals dollar. Enligt en rapport från Dun & Bradstreet drabbas 59 % av Fortune 500-företagen av minst 1,6 timmars driftstopp varje vecka. Låt oss räkna lite snabbt. I genomsnitt har ett Fortune 500-företag 52 810 anställda. Om varje anställd endast tjänade 10 dollar i timmen skulle det kosta företaget 528 100 dollar i veckan i förlorad produktivitet – eller 27 461 200 dollar om året.

Det är mycket pengar som bara... försvinner.

Det ligger i allas intresse att programvarans prestanda testas noggrant. Låt oss utforska vikten av prestandatestning, olika typer, vanliga problem och värdefulla verktyg.

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

Vad är prestandatestning?

Prestandatestning kontrollerar att programvara kan köras på en hög nivå under den förväntade arbetsbelastningen. Utvecklare vill undvika att skapa programvara som är responsiv och snabb när endast en användare är ansluten, men som blir långsam när flera användare hanteras.

QA-testning handlar inte bara om buggar. Programvarans hastighet, responsivitet och resursanvändning är ytterligare områden som måste beaktas. Prestandatestning fokuserar på att identifiera och åtgärda prestandaflaskhalsar. Flaskhalsar identifieras genom att simulera användartrafik. Idealt vill QA-testare genomföra prestandatester under verkliga förhållanden. Detta är en av programvarans första resor ut ur den ideala miljön och in i slutanvändarens osäkra upplevelsevärld.

Varför bör jag testa prestandan?

Det ger intressenter konkret information om programvarans hastighet, stabilitet och skalbarhet. Utan prestandatestning riskerar programvaran att drabbas av problem med hastighet och tillförlitlighet vid lanseringen.

Vi har redan nämnt produktivitetskostnaden när ett system kraschar. I många fall är det skälet i sig tillräckligt. All programvara används dock inte internt, utan levereras och säljs till kunder. I det scenariot blir prestandatestning ännu viktigare, eftersom det sista du vill är att en stor skara kunder ska vara missnöjda med kvaliteten på din produkt.

Under utvecklingsfasen ger prestandatestning en tydligare bild av vad som behöver förbättras när det gäller hastighet, stabilitet och resursanvändning. Utan den kan programvaran släppas med flera allvarliga fel, såsom långsam körning med flera användare, krascher på grund av överbelastning från användare och en inkonsekvent användarupplevelse i olika operativsystem och webbläsare. 

Att testa efter buggar ger ingen tydlig bild av hur programvaran kommer att fungera under belastning. Det är viktigt att prestandatestning genomförs oberoende och med det enda syftet att hitta flaskhalsar. Erfarna prestandatestare vet att hastighet inte är det enda måttet på prestanda. En applikation som exempelvis laddas snabbt men använder 100 % av användarens processor har inte god prestanda. Ett sådant exempel skulle orsaka slutanvändaren många problem, såsom överhettning, förkortad livslängd för processorn, långsammare prestanda i flera applikationer och tillfälliga krascher.

Så genomför du prestandatestning

Hur prestandatestning genomförs varierar beroende på programvaran. Det finns flera olika metoder som en QA-testare kan använda. Det är en form av icke-funktionell testning, vilket innebär att den i stort sett inte fokuserar på användargränssnittet. 

Prestandatestare vill säkerställa att de interna komponenterna är så finjusterade som möjligt. De är depåteamet i ett F1-lopp.

Foto av F1

Vilken typ av testning som genomförs beror på vilken metod organisationen använder. Om de följer den traditionella vattenfallsmodellen för programvaruutveckling får prestandatestarna troligen inte tillgång till produkten förrän utvecklingen är klar. Om organisationen däremot använder den agila metoden kommer agil prestandatestning sannolikt att genomföras under hela utvecklingsprocessen.

Get regular tech leadership wisdom for delivering better software and systems.

Typer av prestandatestning

Vissa kräver manuell testning och andra kräver automatiserad testning, men i takt med den snabba ökningen av automatiserad testning och utvecklingen av effektivare och tillförlitligare verktyg varje dag finns det en tydlig preferens för automatiserad testning i dessa situationer, eftersom den kräver många virtuella användare för att köra programvaran som om de vore verkliga slutanvändare. Detta är svårt att återskapa manuellt, eftersom det skulle kräva betydligt fler testare än vad teamet sannolikt har anställda.  

Att en stor del av prestandatestningen hanteras av maskiner betyder inte att det saknas viktiga skillnader mellan olika testtyper. En QA-testare bör förstå de olika typerna av prestandatestning för att veta vilket verktyg som passar bäst för uppgiften.  

Låt oss gå igenom de olika typerna av prestandatestning och vad varje testtyp syftar till att uppnå. 

Kapacitetstestning

Testar hur många användare systemet kan hantera innan prestandan sjunker under acceptabla nivåer. Genom att testa programvarans kapacitet hjälper man utvecklare att förutse problem när det gäller skalbarhet och framtida tillväxt av användarbasen. 

Belastningstestning

Bekräftar att systemet kan hantera det erforderliga antalet användare och fortfarande fungera med hög prestanda. Lasttestningsverktyg säkerställer att det inte uppstår några prestandaproblem i det dagliga arbetet. 

Volymtestning

Kontrollerar att programvaran kan hantera och bearbeta stora mängder data samtidigt utan att krascha, bli långsammare eller förlora information.

Stresstestning

Försöker avsiktligt att få programvaran att sluta fungera genom att simulera ett antal användare som kraftigt överstiger förväntningarna. Lanseringsdagen för en ny iPhone och den plötsliga ökningen av användartrafiken på Apples webbplats är ett utmärkt exempel på ett stresstest i verkligheten.

Uthållighetstestning

Simulerar hög trafik under en längre period. Kontrollerar programvarans förmåga att tåla längre perioder med hög trafik.

4 vanliga prestandaproblem

Prestandatestare stöter vanligtvis på minst ett av dessa fyra problem under testningen.

  1. Lång laddningstid – Ingen tycker om att stirra på skärmen i 30–60 sekunder medan ett program laddas. Det är tråkigt, särskilt om det är en app som du öppnar flera gånger om dagen. Med undantag för viss mycket resurskrävande programvara bör de flesta program, webbsidor och programvaror kunna öppnas på mindre än några sekunder. Lasttester upptäcker vanligtvis programvara som har problem med att öppnas inom en godtagbar tidsram.
  2. Dålig svarstid – Liknar problemet med långa laddningstider. Det är lika frustrerande när det, efter att appen äntligen har öppnats, även tar 30–60 sekunder att navigera mellan menyer eller mata in data. Tänk på apparna du använder varje dag – hur många av dem får dig att vänta på att en sida ska laddas? Troligen inte särskilt många. Långa laddningstider gör att människor tappar intresset.
  3. Bristande skalbarhet – Detta kallas informellt för ”Slashdot-effekten” eller ”internets dödskram”. Har du någon gång hört talas om en intressant webbplats som någon delade med dig på Facebook, och när du klickade på länken laddades sidan inte? Det beror på att du och en miljon andra ville besöka den häftiga lilla webbplatsen, men att den saknade infrastrukturen för att hantera en plötslig tillströmning av användare. En graf över webbplatsens trafik skulle se ut ungefär så här:
Skärmbild av bristande skalbarhet
(källa: olino.org)

4. Flaskhalsar – Flaskhalsar uppstår när ett system fördelar sin processorkraft på ett ineffektivt sätt. Om programvaran kräver att användarnas CPU körs på 100 % finns det inget minne kvar för att köra ytterligare uppgifter. Detta är dåligt och leder ofta till överhettning och en betydande prestandaförsämring. Det finns flera ställen där flaskhalsar kan uppstå. Några av de vanligaste är:

  • CPU
  • Minne
  • GPU
  • Diskanvändning

Bästa verktygen för prestandatestning

Vilket verktyg för prestandatestning som passar dig beror på ditt projekt och dina mål. Vissa, till exempel Jmeter, är mycket bra på att köra last- och stresstester. Det beror också på din budget. Mindre företag kan välja ett av många högkvalitativa prestandatestningsverktyg som är kostnadsfria och har öppen källkod för att minska kostnaderna.

Prestandatestningsverktyg med öppen källkod

Ett topprankat testverktyg med öppen källkod är Jmeter. Det har varit ett självklart alternativ för små företag som vill genomföra effektiva tester. Prestandatestning med Jmeter analyserar noggrant serverns prestanda under belastning. Det gör att du kan köra last- och stresstester för att kontrollera om programvaran kan hantera det normala och maximala förväntade antalet användare.

När prestandatesterna är klara kan du med Jmeter visa testresultaten på flera lättförståeliga sätt. Ett alternativ är att skriva ut resultaten i diagramform. Så här ser diagram från Jmeter ut:

(källa: StackExchange)

När du läser diagrammet är den viktigaste parametern genomströmningen (den gröna linjen), som visar antalet förfrågningar som skickades under testet. Ju högre antal, desto bättre. Den visar hur många förfrågningar programvaran kan hantera per minut. I det här exemplet är det 8 003 förfrågningar per minut.

Andra populära verktyg: 

  1. The Grinder
  2. Gatling
  3. Multi-Mechanize
  4. Siege
  5. Taurus

Det finns vissa nackdelar med prestandatestning med öppen källkod. En av dem är att alla simulerade användare körs på företagets servrar. Det innebär att testerna utförs under idealiska prestandaförhållanden i stället för under verkliga förhållanden. För små företag som inte förväntar sig någon betydande belastning kan detta passa deras behov bra. När företaget växer kan det däremot börja överväga att köpa ett kommersiellt verktyg för prestandatestning.

Här är en kort lista över några kommersiella verktyg för prestandatestning:

  1. CloudView
  2. HP LoadRunner
  3. Neotys
  4. LoadNinja
  5. WebLoad

Prestandatestning är i allmänhet likartad i olika operativsystem. Många av verktygen för prestandatestning på Mac fungerar på Windows. 

Avslutande tankar

Prestandatestning är en oumbärlig del av arbetet med att säkerställa programvarans tillförlitlighet och effektivitet, särskilt för SaaS-företag som växer snabbt. Genom att använda ledande verktyg får QA-ansvariga ovärderliga insikter i sina systems skalbarhet, uthållighet och förmåga att hantera hög trafik. Prenumerera på vårt nyhetsbrev för fler insikter från experter inom kvalitetssäkring!