Rekommendationer för prestandatestning
Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:
PE:06 | Testprestanda. Utför regelbundna tester i en miljö som matchar produktionsmiljön. Jämför resultat med prestandamålen och prestandamåttet. |
---|
Den här guiden beskriver rekommendationerna för testning. Prestandatestning hjälper dig att utvärdera funktionerna i en arbetsbelastning i olika scenarier. Det innebär att testa arbetsbelastningens svarstid, dataflöde, resursanvändning och stabilitet för att säkerställa att arbetsbelastningen uppfyller sina prestandakrav.
Testning hjälper till att förhindra prestandaproblem. Det hjälper också till att säkerställa att din arbetsbelastning uppfyller sina serviceavtal. Utan prestandatestning kan en arbetsbelastning uppleva prestandaförsämringar som ofta kan förhindras. Arbetsbelastningsprestanda kan avvika från prestandamål och etablerade baslinjer.
Definitioner
Period | Definition |
---|---|
Kaostestning | Ett prestandatest som syftar till att testa systemets motståndskraft och stabilitet genom att avsiktligt införa slumpmässiga och oförutsägbara fel eller störningar. |
Belastningstest | Ett prestandatest som mäter systemprestanda under typisk och tung belastning. |
Baslinje för prestanda | En uppsättning mått som representerar beteendet för en arbetsbelastning under normala förhållanden som verifieras genom testning. |
Stresstest | Ett prestandatest som överbelastar ett system tills det bryts. |
Syntetiskt test | Ett prestandatest som simulerar användarbegäranden i ett program. |
Viktiga designstrategier
Prestandatestning hjälper dig att samla in mätbara data för en arbetsbelastning. När du kör tester tillräckligt tidigt hjälper de dig också att skapa arbetsbelastningar enligt rätt specifikationer. Du bör utföra prestandatester så tidigt som möjligt i livscykeln för programvaruutveckling. Med tidig testning kan du fånga upp och åtgärda prestandaproblem tidigare under utveckling. Du kan använda ett konceptbevis (POC) om produktionskoden inte är klar.
Förbereda testet
Att förbereda prestandatester syftar på att konfigurera och ordna de resurser, konfigurationer och testscenarier som du behöver för att utföra prestandatestning effektivt.
Definiera kriterier för godkännande
Kriterier för godkännande anger de prestandakrav som en arbetsbelastning måste uppfylla för att anses acceptabel eller framgångsrik. Definiera kriterier som överensstämmer med prestandamålen.
Granska prestandamål. Prestandamål definierar önskad prestandanivå för din arbetsbelastning. Granska de prestandamål som har upprättats för arbetsbelastningen. Prestandamål är mått som kan omfatta svarstid, dataflöde, resursutnyttjande eller andra relevanta prestandaindikatorer. Du kan till exempel ha ett mål för svarstiden som ska ligga under ett visst tröskelvärde, till exempel mindre än 2 sekunder.
Definiera kriterier för godkännande. Översätt prestandamålen till specifika acceptanskriterier som du kan använda för att utvärdera arbetsbelastningens prestanda. Anta till exempel att ditt prestandamål för svarstiden är 2 sekunder eller mindre. Ditt godkännandevillkor kan vara Den genomsnittliga svarstiden för arbetsbelastningen bör vara mindre än 2 sekunder. Använd dessa godkännandekriterier för att avgöra om arbetsbelastningen uppfyller önskad prestandanivå.
När du definierar kriterier för godkännande är det viktigt att fokusera på användare och deras förväntningar. Godkännandekriterier hjälper till att säkerställa att det levererade arbetet uppfyller användarnas behov och krav. Tänk på följande när du ska införliva användarperspektivet i godkännandekriterierna:
Användarkrav: Förstå användarens behov och mål för arbetsbelastningen. Överväg hur arbetsbelastningen ska fungera för att uppfylla dessa krav.
Användarupplevelse: Definiera godkännandekriterier som fångar upp önskad användarupplevelse. Ta med faktorer som svarstid, användbarhet, tillgänglighet och övergripande tillfredsställelse.
Funktionskrav: Åtgärda de specifika funktioner som användaren förväntar sig att se i arbetsbelastningen. Definiera godkännandekriterier kring dessa funktionella krav för att säkerställa att de uppfylls.
Användningsfall: Överväg olika scenarier eller användningsfall som användaren kan stöta på. Definiera godkännandekriterier baserat på dessa användningsfall för att verifiera arbetsbelastningens prestanda i verkliga situationer.
Ange tröskelvärden för godkännande. Fastställa tröskelvärdena inom godkännandekriterierna som anger om arbetsbelastningen uppfyller prestandamålen. Dessa tröskelvärden definierar det godkända prestandaintervallet för varje mått. Anta till exempel att godkännandekriteriet för svarstiden är mindre än 2 sekunder. Du kan ange tröskelvärdet till 2,5 sekunder. Den här nivån anger att svarstiden över 2,5 sekunder betraktas som ett prestandaproblem.
Definiera villkor för att skicka. Upprätta kriterier för att avgöra om arbetsbelastningen klarade eller misslyckades med prestandatestet. Du kan definiera att skicka som att uppfylla alla godkännandekriterier eller uppnå en viss procentandel av dem.
Välj testtyp
Om du vill välja rätt typ av prestandatest är det viktigt att justera testet efter dina godkännandekriterier. Godkännandekriterierna definierar de villkor som måste uppfyllas för att ett krav eller en buggkorrigering ska anses vara klar. Prestandatester bör syfta till att kontrollera om en arbetsbelastning uppfyller dessa godkännandekriterier och fungerar som förväntat under angivna förhållanden. Genom att justera prestandatesttypen med godkännandekriterierna ser du till att testet fokuserar på att uppfylla de prestandaförväntningar som kriterierna definierar.
Förstå kriterier för godkännande. Granska godkännandekriterierna för kravet eller felkorrigeringen. Kriterierna beskriver de specifika villkor och funktioner som ska uppfyllas.
Identifiera relevanta prestandamått. Baserat på godkännandekriterierna fastställer du de prestandamått som är viktiga för att uppnå önskade resultat. Om godkännandekriterierna till exempel fokuserar på svarstiden kan det vara lämpligt att prioritera belastningstestning.
Välj en lämplig testtyp. Utvärdera de tillgängliga testtyperna och välj den som bäst överensstämmer med de identifierade prestandamåtten och godkännandekriterierna.
Följande tabell innehåller ett urval av testtyper och deras användningsfall.
Testtyp | Description | Användningsfall |
---|---|---|
Belastningstestning | Simulera realistiska användarbelastningar för att mäta hur din arbetsbelastning presterar under förväntade arbetsbelastningar med hög belastning. | Avgör belastningstolerans. |
Stresstestning | Push-överför din arbetsbelastning bortom dess normala gränser för att identifiera dess brytpunkter och mäta dess förmåga att återställa. | Avgör motståndskraft och robusthet. |
Blötläggningstestning (uthållighetstestning) | Kör din arbetsbelastning under ihållande hög belastning under en längre period för att identifiera prestandaförsämring, minnesläckor eller resursproblem. | Utvärderar stabilitet och tillförlitlighet över tid. |
Topptestning | Simulera plötsliga ökningar av användarbelastningen för att utvärdera hur din arbetsbelastning hanterar plötsliga förändringar i efterfrågan. | Mäter möjligheten att skala och underhålla prestanda under perioder med hög belastning. |
Kompatibilitetstestning | Testa arbetsbelastningens prestanda på olika plattformar, webbläsare eller enheter. | Hjälper till att säkerställa konsekventa prestanda i olika miljöer. |
Prioritera de valda testtyperna baserat på arbetsbelastningens egenskaper och krav. Överväg faktorer som kritiskhet för prestandamått, användarnas förväntningar, affärsprioriteringar och kända problem eller sårbarheter.
Välj testverktyg
Välj lämpliga verktyg baserat på vilken typ av prestandatestning du vill köra. Utvärdera testmiljöns infrastruktur, resurser och begränsningar. Välj testverktyg som stöder önskade testtyper och tillhandahålla de nödvändiga funktionerna för övervakning, mätning, analys och rapportering.
Ett verktyg för övervakning av programprestanda (APM) ger djupgående insikter om program och är ett viktigt testverktyg. Det hjälper dig att spåra enskilda transaktioner och mappa deras sökvägar via olika arbetsbelastningstjänster. Efter testningen bör du använda APM-verktyget för att analysera och jämföra testdata med din prestandabaslinje.
Använd profileringsverktyg för att identifiera flaskhalsar i koden. Profilering hjälper dig att identifiera områden i koden som förbrukar mest resurser och behöver optimering. Den ger insikter om körningstid och minnesanvändning för olika delar av koden.
Följande steg kan hjälpa dig att välja lämpliga testverktyg:
Identifiera testkrav. Börja med att förstå de specifika kraven för prestandatestningen. Tänk på olika faktorer:
- Typ av arbetsbelastning
- Prestandamått att mäta, till exempel svarstid och dataflöde
- Komplexiteten i arbetsbelastningsarkitekturen
- Testmiljön, till exempel molnbaserad, lokal eller hybrid
Verktyg för forskningstestning. Utför forskning för att identifiera prestandatestverktyg som överensstämmer med dina krav. Överväg att använda kommersiella verktyg och verktyg med öppen källkod som är tillgängliga på marknaden. Leta efter verktyg som stöder dina önskade typer av prestandatestning, till exempel belastningstestning eller stresstestning, och som tillhandahåller funktioner för att mäta prestandamått.
Utvärdera verktygsfunktioner. Utvärdera de funktioner som varje testverktyg tillhandahåller. Leta efter funktioner som simulering av realistiskt användarbeteende och skalbarhet för att hantera stora användarbelastningar. Överväg att stödja olika protokoll och tekniker, integrering med andra testverktyg eller ramverk samt rapporterings- och analysfunktioner.
Överväg kompatibilitet och integrering. Fastställa kompatibiliteten för testverktygen med din befintliga infrastruktur och teknik. Se till att verktygen enkelt kan integreras i testmiljön och kan kommunicera med den arbetsbelastning som krävs för övervakning och analys.
Utvärdera kostnader och licensiering. Utvärdera kostnadsstrukturen och licensvillkoren som är associerade med testverktygen. Tänk på faktorer som initiala investeringar, underhållskostnader och supportkostnader. Överväg även andra licenskrav som är beroende av antalet användare eller virtuella användare.
Genomför en POC. Välj några verktyg som verkar vara lämpligast baserat på din utvärdering. Utför en småskalig POC för att verifiera verktygens användbarhet, funktioner och effektivitet i ditt specifika testscenario.
Överväg support och utbildning. Utvärdera den support- och utbildningsnivå som verktygets leverantör eller community tillhandahåller. Fastställa tillgängligheten för dokumentation, självstudier och tekniska supportkanaler för att hjälpa till med eventuella utmaningar eller problem som kan uppstå under testningsprocessen.
Skapa testscenarier
Att skapa testscenarier syftar på processen att utforma specifika situationer eller villkor som är lämpliga för att testa prestanda för en arbetsbelastning. Testscenarier skapas för att emulera realistiska användarbeteenden och arbetsbelastningsmönster. Dessa scenarier är ett sätt för prestandatestare att utvärdera hur arbetsbelastningen presterar under olika förhållanden.
Testscenarier gör det möjligt att replikera olika arbetsbelastningsmönster, till exempel samtidig användaråtkomst, perioder med hög belastning eller specifika transaktionssekvenser. Genom att testa arbetsbelastningen under olika arbetsbelastningsmönster kan du identifiera flaskhalsar i prestanda och optimera resursallokering.
Definiera användarbeteende. Emulera realistiska användarbeteenden och arbetsbelastningsmönster genom att identifiera de steg och åtgärder som användarna utför när de interagerar med arbetsbelastningen. Överväg aktiviteter som att logga in, utföra sökningar, skicka formulär eller komma åt specifika funktioner. Dela upp varje scenario i specifika steg och åtgärder som representerar användarens interaktion med arbetsbelastningen. Du kan inkludera att navigera genom sidor, utföra transaktioner eller interagera med olika delar av arbetsbelastningen.
Fastställ dataengagemang. Identifiera de testdata som krävs för att köra testscenarierna. Du kan till exempel skapa eller generera realistiska datauppsättningar som representerar olika scenarier, användarprofiler eller datavolymer. Se till att testdata är olika och omfattar olika användningsfall för att tillhandahålla en omfattande prestandautvärdering.
Utforma testskript. Skapa testskript som automatiserar körningen av de definierade testscenarierna. Testskript består vanligtvis av en sekvens med åtgärder, HTTP-begäranden eller interaktioner med arbetsbelastnings-API:er eller användargränssnitt. Använd verktyg för prestandatestning eller programmeringsspråk för att skriva skripten, med tanke på faktorer som parameterisering, korrelation och dynamisk datahantering. Verifiera testskripten för korrekthet och funktionalitet. Felsöka eventuella problem, till exempel skriptfel, saknade eller felaktiga åtgärder eller datarelaterade problem. Validering av testskript är avgörande för att säkerställa korrekt och tillförlitlig prestandatestkörning.
Konfigurera testvariabler och parametrar. Konfigurera variabler och parametrar i testskript för att införa variabilitet och simulera verkliga scenarier. Inkludera parametrar som användarautentiseringsuppgifter, indata eller slumpmässighet för att efterlikna olika användarbeteenden och arbetsbelastningssvar.
Förfina skript iterativt. Förfina och förbättra testskript kontinuerligt baserat på feedback, testresultat eller ändrade krav. Överväg att optimera skriptlogik, parameterisering och felhantering eller lägga till extra verifiering och kontrollpunkter.
Konfigurera testmiljön
När du konfigurerar en testmiljö avses hur du konfigurerar infrastruktur,programvara och nätverkskonfigurationer som du behöver för att skapa en miljö som liknar din produktionsmiljö.
Om du vill konfigurera testmiljön på ett sätt som ökar prestandaeffektiviteten inkluderar du följande steg i konfigurationsprocessen:
Spegla din produktionsmiljö. Konfigurera testmiljön så att den liknar din produktionsmiljö. Tänk på faktorer som infrastrukturkonfiguration, nätverksinställningar och programvarukonfigurationer. Målet är att säkerställa att prestandatestresultaten är representativa för verkliga förhållanden.
Etablera tillräckliga resurser. Allokera tillräckliga resurser, till exempel CPU, minne och diskutrymme till testmiljön. Se till att de tillgängliga resurserna kan hantera den förväntade arbetsbelastningen och tillhandahålla korrekta prestandamått.
Replikera nätverksvillkor. Konfigurera nätverksinställningarna i testmiljön för att replikera de förväntade nätverksvillkoren under den faktiska arbetsbelastningsdistributionen. Du måste inkludera bandbredd, svarstid och nätverksprotokoll.
Installera och konfigurera beroenden. Installera programvaran, biblioteken, databaserna och andra beroenden som krävs för att arbetsbelastningen ska kunna köras korrekt. Konfigurera dessa beroenden så att de matchar den förväntade produktionsmiljön.
Kompromiss: Det finns kostnader för att underhålla separata testmiljöer, lagra data, använda verktyg och köra tester. Känna till kostnaden för prestandatestning och hitta ett sätt att optimera utgifterna.
Risk: Produktionsdata kan innehålla känslig information. Utan en robust strategi för rensning och maskering riskerar du att läcka känsliga data när du använder produktionsdata för testning.
Utföra testerna
Kör prestandatesterna med hjälp av det valda testverktyget. Testning omfattar mätning och registrering av prestandamått, övervakning av hälsotillstånd och insamling av eventuella prestandaproblem som uppstår.
Övervaka och samla in prestandamått som svarstid, dataflöde, processor- och minnesanvändning och andra relevanta indikatorer.
Använd de definierade testscenarierna för att placera arbetsbelastningen under förväntade belastningar. Utför tester under dessa olika belastningsförhållanden. Du kan till exempel använda nivåer, till exempel normala nivåer, toppar och stressnivåer, för att analysera arbetsbelastningens beteende i olika scenarier.
Analysera resultaten
Analys av testresultaten innebär att undersöka insamlade data och mått från prestandatesterna för att få insikter om arbetsbelastningens prestanda. Målet är att identifiera prestandaproblem och använda feedbacken för att justera prioriteringarna i programutvecklingen. Följande åtgärder är viktiga steg för att analysera testresultat.
Granska prestandamått. Titta på de prestandamått som du samlar in under prestandatestning, till exempel svarstider, dataflöde, felfrekvens, processor- och minnesanvändning och nätverksfördröjning. Analysera dessa mått för att förstå arbetsbelastningens övergripande prestanda.
Identifiera flaskhalsar. Utvärdera prestandamåtten för att identifiera eventuella flaskhalsar eller områden med ineffektiv prestanda. Utvärderingen kan innehålla höga svarstider, resursbegränsningar, databasproblem, nätverksfördröjning och skalbarhetsbegränsningar. Genom att identifiera grundorsakerna till dessa flaskhalsar kan du prioritera prestandaförbättringar.
Korrelera mått. Utvärdera relationerna och korrelationerna mellan olika prestandamått. Du kan till exempel analysera hur ökad belastning eller resursanvändning påverkar svarstiderna. Att förstå dessa korrelationer kan ge värdefulla insikter om arbetsbelastningsbeteende under olika förhållanden. Leta efter mönster och trender i prestandadata över tid. Analysera prestanda under olika belastningsnivåer eller under specifika perioder. Genom att identifiera trender kan du identifiera säsongsvariationer, tider för hög användning eller återkommande prestandaproblem.
Utvärdera godkännandekriterier. Jämför omtestresultaten med de fördefinierade godkännandekriterierna och prestandamålen. Utvärdera om arbetsbelastningen uppfyller önskade prestandastandarder. Om arbetsbelastningen inte uppfyller godkännandekriterierna undersöker och förfinar du optimeringarna ytterligare.
Iterera och förfina analysen. Gör andra justeringar och förbättringar efter behov. Använd insamlade data och mått för att diagnostisera specifika prestandaproblem. Diagnosen kan innebära spårning genom arbetsbelastningskomponenterna, undersökning av loggfiler, övervakning av resursanvändning eller analys av felmeddelanden. Fördjupa dig i data för att förstå de underliggande orsakerna till prestandaproblem.
Baserat på analysen av testresultaten prioriterar du identifierade prestandaproblem och implementerar nödvändiga förbättringar. Förbättringarna kan innebära att optimera kod, justera databasfrågor, förbättra cachelagringsmekanismer och optimera nätverkskonfigurationer.
Upprätta baslinjer
Baslinjer ger en referenspunkt för att jämföra prestandaresultat över tid. Baslinjer bör vara meningsfulla ögonblicksbilder av arbetsbelastningsprestanda – du behöver inte använda varje test som baslinje.
Överväg arbetsbelastningsmålen och dokumentera ögonblicksbilder av prestanda som gör att du kan lära dig över tid och optimera. Använd dessa baslinjemått som riktmärke för framtida prestandatester och använd dem för att identifiera eventuell försämring eller förbättring.
Följ dessa steg för att upprätta baslinjer för prestandatestning och använda dem som riktmärke för framtida prestandatester:
Identifiera prestandamått. Fastställ de specifika prestandamått som du vill mäta och spåra. Exempel är:
- Svarstid eller hur snabbt arbetsbelastningen svarar på begäranden.
- Dataflöde eller antalet begäranden som bearbetas per tidsenhet.
- Resursanvändning, till exempel CPU, minne och diskanvändning.
Registrera meningsfulla mått. Registrera de prestandamått som du får under testet som baslinjemått. Dessa mått representerar den startpunkt som du jämför framtida prestandatester mot.
Jämför framtida tester. I efterföljande prestandatester jämför du prestandamåtten med de etablerade baslinjerna och tröskelvärdena. Med jämförelsen kan du identifiera eventuella förbättringar eller försämrad prestanda.
Testa kontinuerligt
Kontinuerlig testning omfattar löpande övervakning och förfining av dina tester. Kontinuerlig testning hjälper dig att upprätthålla konsekventa och acceptabla prestandanivåer. En arbetsbelastning bör ge en konsekvent och acceptabel prestandanivå i förhållande till baslinjen. Du bör justera arbetsbelastningen över tid för att skapa konsekventa prestanda som är inom de acceptabla prestandagränserna. Här följer några viktiga metoder:
Ange försämringsgränser. Definiera numeriska tröskelvärden som anger vilken prestandaförsämringsnivå som är acceptabel över tid. Genom att ange dessa gränser kan du övervaka prestandafluktuationer och få aviseringar när prestandan understiger det definierade tröskelvärdet.
Inkludera kvalitetssäkring. Införliva prestandakrav, till exempel CPU-användning och maximala begäranden per sekund, i kvalitetssäkringsprocessen. Behandla prestandakrav med samma prioritetsnivå som funktionskrav. Den här processen hjälper till att säkerställa att arbetsbelastningen uppfyller de definierade prestandakraven innan du distribuerar den till produktion.
Automatisera aviseringar. I realtidsmiljöer är snabb identifiering och svar avgörande. Konfigurera automatiserade aviseringssystem som använder prestandabaslinjen som referens. Om det finns en betydande avvikelse i prestandan meddelas de nödvändiga teamen omedelbart för att agera.
Testa ändringar. Vissa prestandaproblem kanske bara visas i en live-inställning. Tillämpa grundliga testmetoder för föreslagna kod- och infrastrukturändringar. Använd kodinstrumentation för att få insikter om programmets prestandaegenskaper, till exempel frekventa sökvägar, minnesallokeringar och skräpinsamling. Den här testningen säkerställer att alla ändringar som introduceras inte försämrar prestanda utöver de godkända gränserna.
Azure-underlättande
Utför testerna: Med Azure Pipelines kan du integrera prestandatestning i din CI/CD-pipeline. Du kan inkludera belastningstestning som ett steg i pipelinen för att verifiera prestanda och skalbarhet för dina program.
Med Azure Chaos Studio kan du mata in verkliga fel i ditt program så att du kan köra kontrollerade felinmatningsexperiment. Experimenten hjälper dig att mäta, förstå och förbättra molnprograms- och tjänstresiliensen.
Azure Load Testing är en tjänst för belastningstestning som genererar hög skalningsbelastning för alla program. Belastningstestning ger funktioner för att automatisera belastningstester och integrera dem i ditt CI/CD-arbetsflöde (kontinuerlig integrering och kontinuerlig leverans). Du kan definiera testkriterier, till exempel genomsnittlig svarstid eller tröskelvärden för fel, och automatiskt stoppa belastningstester baserat på specifika felvillkor. Belastningstestning erbjuder en instrumentpanel som innehåller liveuppdateringar och detaljerade resursmått för Azure-programkomponenter under ett belastningstest. Du kan analysera testresultaten, identifiera flaskhalsar i prestanda och jämföra flera testkörningar för att förstå prestandaregressioner över tid.
Analysera resultaten: Azure Monitor är en omfattande övervakningslösning för att samla in, analysera och svara på telemetri från dina molnmiljöer och lokala miljöer. Application Insights är ett tillägg av Monitor som tillhandahåller APM-funktioner. Du kan använda Application Insights för att övervaka program under utveckling och testning och även i produktion.
Kompromiss: Testning tar tid och skicklighet att utföra och kan påverka driftseffektiviteten.
Relaterade länkar
- Rekommendationer för säkerhetstestning
- Rekommendationer för att utforma en strategi för tillförlitlighetstestning
Checklista för prestandaeffektivitet
Se den fullständiga uppsättningen rekommendationer.