Vad är belastningstestning? (Exempel)

⚡ Smart sammanfattning

Lasttestning mäter hur en programvara beter sig när många användare använder den samtidigt, upp till den förväntade toppen. Den identifierar den maximala driftskapaciteten, de flaskhalsar som begränsar den och om den nuvarande infrastrukturen är tillräcklig.

  • 👥 Kärndefinition: Ett icke-funktionellt test som tillämpar den förväntade maximala användarbelastningen och mäter responsen.
  • ⏱️ Huvudmått: Svarstiden, som måste vara kvantitativ, relevant, realistisk, uppnåelig och mätbar.
  • 🏗️ Vad den hittar: Maximal kapacitet, infrastrukturluckor, databasbegränsningar och konfigurationsproblem.
  • 📉 Belastning kontra stress: Lasten stannar vid den förväntade toppen; spänningen trycker sig avsiktligt förbi den för att hitta brytpunkten.
  • 🛠️ Verktygsalternativ: JMeter, Gatling och k6 är öppen källkod; LoadRunner är det etablerade kommersiella valet.
  • 📋 Nödvändig förutsättning: Kör det bara när applikationen är funktionellt stabil, annars maskerar defekter prestandaresultat.

Vad är belastningstestning

Vad är belastningstestning?

Lasttestning är en icke-funktionell mjukvarutestprocess där prestandan hos mjukvaruapplikationen testas under en specifik förväntad belastning. Den bestämmer hur programvaran beter sig medan den nås av flera användare samtidigt. Målet med Load Testing är att förbättra prestandaflaskhalsar och att säkerställa stabilitet och smidig funktion hos mjukvaruapplikationen före driftsättning.

Denna testning identifierar vanligtvis -

  • Den maximala driftskapaciteten för en applikation
  • Bestäm om den nuvarande infrastrukturen är tillräcklig för att köra applikationen
  • Applikationens hållbarhet med avseende på maximal användarbelastning
  • Antal samtidiga användare som en applikation kan stödja och skalbarhet för att ge fler användare åtkomst till den.

Det är en typ av icke-funktionell testning. Inom mjukvaruteknik används belastningstestning vanligtvis för klienten/servern, webbaserade applikationer – både intranät och internet.

Lasttestning

Varför behövs belastningstestning?

Vissa extremt populära webbplatser har drabbats av allvarliga driftstopp när de får enorma trafikvolymer. E-handelswebbplatser investerar mycket i reklamkampanjer, men inte i belastningstestning för att säkerställa optimal systemprestanda, när marknadsföringen drar in trafik.

Exempel på belastningstester

  • Toysrus.com kunde inte hantera den trafik som deras egen reklamkampanj genererade, vilket ledde till att både marknadsföringsutgifterna och den försäljning som de var avsedda att producera gick förlorade.
  • En flygbolags webbplats kunde inte hantera 10000 XNUMX+ användare under ett festivalerbjudande.
  • Encyclopedia Britannica förklarade fri tillgång till deras onlinedatabas som ett kampanjerbjudande. De kunde inte hänga med i trafikens anstormning på flera veckor.

Många webbplatser drabbas av försenade laddningstider när de stöter på tung trafik. Lite fakta -

  • Övergivandet ökar kraftigt efter cirka 3 sekunders laddningstid, och effekten förstärks på mobila anslutningar.
  • Långsamma sidor kostar e-handelswebbplatser mätbara intäkter vid varje besök, vilket är anledningen till att prestanda behandlas som ett affärsmått snarare än ett tekniskt.

Varför belastningstestning?

  • Belastningstestning ger förtroende för systemet och dess tillförlitlighet och prestanda.
  • Lasttestning hjälper till att identifiera flaskhalsarna i systemet under svåra användarstressscenarier innan de inträffar i en produktionsmiljö.
  • Belastningstestning ger utmärkt skydd mot dålig prestanda och rymmer kompletterande strategier för prestandahantering och övervakning av en produktionsmiljö.

Mål för belastningstestning

Laddningstestning identifierar följande problem innan applikationen flyttas till marknaden eller produktion:

  • Svarstid för varje transaktion
  • Prestanda för systemkomponenter under olika belastningar
  • Prestanda för databaskomponenter under olika belastningar
  • Nätverksfördröjning mellan klienten och servern
  • Mjukvarudesignproblem
  • Serverkonfigurationsproblem som en webbserver, applikationsserver, databasserver etc.
  • Hårdvarubegränsningsproblem som CPU-maximering, minnesbegränsningar, nätverksflaskhals etc.

Belastningstestning kommer att avgöra om systemet behöver finjusteras eller modifiering av hårdvara och mjukvara krävs för att förbättra prestandan. För att effektivt genomföra lasttestning kan du använda olika verktyg för prestandatestning som är tillgängliga för att hjälpa dig identifiera förbättringsområden.

Förutsättningar för belastningstestning

Huvudmåttet för belastningstestning är svarstid. Innan du börjar belastningstestning måste du fastställa –

  • Huruvida svarstiden redan är uppmätt och jämförd – Kvantitativt
  • Huruvida svarstiden är tillämplig på affärsprocessen – Relevant
  • Huruvida svarstiden är försvarlig – Realistisk
  • Huruvida svarstiden är uppnåbar – Achievable
  • Huruvida svarstiden är mätbar med hjälp av ett verktyg eller stoppur – Mätbar

Miljöinstallation före belastningstestning

Hardware Platform Programvarukonfiguration
  • Servermaskiner
  • Processorer
  • Minne
  • Disklagring
  • Ladda maskiners konfiguration
  • Nätverkskonfiguration
  • Operating System
  • Serverprogramvara

Strategier för belastningstestning

Det finns många olika sätt att utföra lasttestning. Följande är några belastningsteststrategier-

Strategier för belastningstestning

  • Manuell belastningstestning: Detta är en av strategierna för att utföra belastningstestning, men det ger inte repeterbara resultat, kan inte ge mätbara nivåer av stress på en applikation och är en omöjlig process att samordna.
  • Egenutvecklade lasttestverktyg: En organisation som inser vikten av belastningstester kan bygga sina egna verktyg för att utföra belastningstester.
  • Lasttestverktyg med öppen källkod: Det finns flera lasttestverktyg tillgängliga som öppen källkod som är gratis. De kanske inte är lika sofistikerade som deras betalda motsvarigheter, men om du har en budget är de det bästa valet.
  • Verktyg för belastningstestning i företagsklass: De kommer vanligtvis med inspelnings-/uppspelningsmöjlighet. De stöder ett stort antal protokoll. De kan simulera ett exceptionellt stort antal användare.

Hur man gör belastningstestning

Lasttestningsprocessen kan kort beskrivas enligt nedan –

  1. Skapa en dedikerad Testmiljö för belastningsprovning
  2. Definiera belastningstestscenarierna
  3. Bestäm lasttestningstransaktioner för en applikation
    • Förbered data för varje transaktion
    • Antalet användare som kommer åt systemet måste förutsägas
    • Bestäm anslutningshastigheter. Vissa användare kan vara anslutna via hyrda förbindelser medan andra kan använda uppringd
    • Bestäm olika webbläsare och operativsystem som används av användarna 
    • En konfiguration av alla servrar som webb-, applikations- och DB-servrar
  4. Utförande och övervakning av testscenario. Samla in olika mått
  5. Analysera resultaten. Ge rekommendationer
  6. Finjustera systemet
  7. Testa om

Riktlinjer för belastningstestning

Riktlinjer för belastningsprovning

  1. Belastningstestning bör planeras när applikationen blir funktionellt stabil.
  2. Ett stort antal unika data bör vara redo i datapoolen
  3. Antal användare bör bestämmas för varje scenario eller skript
  4. Undvik att skapa detaljerade loggar för att spara på diskutrymmet
  5. Försök att undvika nedladdning av bilder på webbplatsen
  6. I processen att exekvera testfall för belastningstester, bör konsistensen av svarstiden över den förflutna perioden loggas och densamma bör jämföras med olika testkörningar.

Skillnad mellan belastnings- och stresstestning

Lasttestning Stresstestning
Belastningstestning identifierar flaskhalsarna i systemet under olika arbetsbelastningar och kontrollerar hur systemet reagerar när belastningen gradvis ökar Stresstestning bestämmer brytpunkten för systemet för att avslöja den maximala punkten efter vilken det bryts.
För att känna igen den övre gränsen för systemet, ställ in SLA för appen och kontrollera hur systemet kan hantera en tung belastning. För att kolla hur systemet beter sig under extrema belastningar och hur det återhämtar sig efter fel.
Att generera ökad belastning på en webbapplikation är huvudsyftet med lasttestning. Stresstester syftar till att säkerställa att servrarna inte kraschar under en plötslig hög belastning under en längre tid.
Attributen som kontrolleras i ett belastningstest är toppprestanda, serverkvantitet och svarstid. Denna typ av testning kontrollerar stabilitetens svarstid, etc.
I belastningstestning är belastningsgränsen en tröskel för ett avbrott. I stresstester är belastningsgränsen över tröskeln för ett brott.

Skillnad mellan funktions- och belastningstestning

funktions~~POS=TRUNC Lasttestning
Resultaten av funktionstester är lätta att förutsäga eftersom vi har korrekta steg och förutsättningar definierade Resultaten av belastningstester är oförutsägbara
Resultaten av funktionstester varierar något Belastningstestresultaten varierar drastiskt
Utförandefrekvens funktions~~POS=TRUNC kommer att vara hög Frekvensen för att utföra lasttestning kommer att vara låg
Resultat av funktionstester är beroende av testdata Belastningstestning beror på antalet användare.

Ladda testverktyg

LoadRunner

LoadRunner, ursprungligen från HP och nu en del av OpenText Efter förvärvet av Micro Focus testar den applikationer under normal och maximal belastning. Den genererar belastning genom virtuella användare som emulerar verklig nätverkstrafik och rapporterar resultaten grafiskt.

Läs mer i LoadRunner-handledning.

Apache JMeter

En öppen källkod Java verktyg och det mest använda gratisalternativet. Det stöder HTTP, JDBC, JMS, FTP med mera, lagrar testplaner som XML och integreras i CI-pipelines. Se JMeter handledning för en genomgång.

gatling

Ett verktyg med öppen källkod vars tester skrivs som kod i Scala eller JavaDen hanterar hög samtidighetsnivå på blygsam hårdvara och producerar detaljerade HTML-rapporter, vilket passar team som föredrar versionskontrollerade testskript.

k6

Ett verktyg med öppen källkod och tester skrivna i JavaSkript, utformat för utvecklarägd prestandatestning inuti en CI-pipeline snarare än som en separat QA-aktivitet.

Att välja ett verktyg

Pick JMeter för bredast möjliga protokolltäckning utan kostnad, Gatling eller k6 när teamet vill att tester ska hållas i källkodskontroll tillsammans med applikationen, och ett kommersiellt verktyg som LoadRunner när stöd för företagsprotokoll och leverantörshjälp motiverar licensen.

Fördelar och nackdelar med belastningstestning

Följande är fördelarna med lasttestning:

  • Identifiering av prestandaflaskhalsar före produktion
  • Förbättrar systemets skalbarhet
  • Minimera risken i samband med systemavbrott
  • Minskade kostnader för misslyckande
  • Öka kundnöjdheten

Nackdelar med lasttestning:

  • De flesta verktyg kräver programmeringskunskaper för att skapa realistiska scenarier.
  • Verktyg kan vara dyra eftersom priset beror på antalet virtuella användare som stöds.

Viktiga mätvärden att samla in under ett belastningstest

Avsnittet om förkunskaper fastställer svarstid som det viktigaste måttet. I praktiken behöver en belastningstestrapport sexsiffriga tal, eftersom svarstiden ensam inte kan berätta varför ett system saktade ner.

metrisk Vad det säger dig Varningstecken
Genomsnittlig svarstid Den typiska användarupplevelsen Stiger när belastningen ökar
95:e percentilens svarstid Upplevelsen för de långsammaste användarna Långt över genomsnittet
genomströmning Antal förfrågningar som hanterats framgångsrikt per sekund Plattar ut eller faller medan lasten stiger
Felhastighet Andel misslyckade eller tidsgränsade förfrågningar Varje höjning över det överenskomna tröskelvärdet
Samtidiga användare Faktiska samtidiga sessioner uppnådda Lägre än det avsedda scenariot
Serverresursanvändning CPU, minne, disk och nätverksutrymme Alla resurser över ungefär 80 procent

Läsdataflöde tillsammans med svarstid. Ökande svarstid med ökande dataflöde betyder helt enkelt att systemet är mer upptaget. Ökande svarstid med faller genomströmning innebär att den har överskridit sin kapacitet och nu förlorar arbete, vilket är den punkt testet finns för att hitta.

Rapportera aldrig enbart genomsnittet. Ett genomsnitt på 900 ms med en 95:e percentil på 1.1 sekunder beskriver ett konsekvent system. Samma genomsnitt med en 95:e percentil på 11 sekunder innebär att en användare av tjugo har en oacceptabel upplevelse som genomsnittet döljer.

Hur detta test står sig i jämförelse med andra prestationstester

Prestandatestning är en familj av tester som skiljer sig åt i formen av den applicerade belastningen, vilket är anledningen till att de så lätt förväxlas.

Testtyp Vad som ökas Fråga den svarar
Lasttestning Samtidiga användare, till den förväntade toppen Uppfyller den målen under normal trafiktopp?
Volymtestning Data som lagras i databasen Klarar den sig av att datamängden växer?
Stresstestning Belastning över kapacitet, tills fel uppstår Var går den sönder, och hur?
Spike testning Ladda, omedelbart och extremt Överlever den och återhämtar sig från en chock?
Uthållighetstestning Varaktighet, vid normal belastning Försämras prestandan med tiden?
Blötläggningstestning Varaktighet, tittar på resurser Finns det minnes- eller handle-läckor?
Stabilitetstestning Varierande förhållanden Förblir den tillförlitlig även när förhållandena förändras?

Den skillnad som är viktigast här: Volymtestning skalar data, belastningstestning skalar användarna. En rapport som körs på två sekunder mot tiotusen rader och två minuter mot tio miljoner rader har ett volymproblem, inte ett belastningsproblem, och ingen extra serverkapacitet kommer att åtgärda det.

Vanliga frågor

Lasttestning tillämpar den förväntade toppbelastningen och kontrollerar att målen uppnås. Stresstestning överskrider medvetet kapaciteten för att hitta brytpunkten och bekräfta att systemet slutar fungera och återställer sig smidigt.

När applikationen är funktionellt stabil, och tillräckligt tidigt, så att en upptäckt flaskhals fortfarande kan åtgärdas. Att köra den under den sista veckan ger ingen tid att agera på vad den hittar.

JMeter, eftersom det är gratis, stöder det bredaste utbudet av protokoll och har den största mängden dokumentation. Byt till Gatling eller k6 om teamet föredrar tester skrivna som versionskontrollerad kod.

AI härleder realistiska belastningsprofiler från produktionstrafikloggar, upptäcker avvikelser i resultaten automatiskt och förutspår vilka kodändringar som sannolikt kommer att försämra prestandan innan en körning schemaläggs.

Ja. AI-verktyg konverterar registrerade användarresor eller API-specifikationer till körbara skript. Verifiera de genererade betänketiderna och dataparametriseringen, eftersom orealistiska värden ger missvisande resultat.

Sammanfatta detta inlägg med: