Dela via


Arkitekturstrategier 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 handlar om 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

Begrepp Definition
Kaostestning Ett prestandatest som syftar till att testa motståndskraften och stabiliteten i ett system 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.
Prestandabaslinje 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.

Prestandatestning hjälper dig att samla in mätbara data på 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 utvecklingen. Du kan använda ett konceptbevis (POC) om produktionskoden inte är klar.

Förbereda testet

Att förbereda prestandatester är 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

Villkor för godkännande anger de prestandakrav som en arbetsbelastning måste uppfylla för att anses vara acceptabel eller lyckad. 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, resursanvändning eller andra relevanta prestandaindikatorer. Du kan till exempel ha ett mål för svarstiden att ligga under ett visst tröskelvärde, till exempel mindre än 2 sekunder.

Definiera villkor 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 kriterier för godkännande för att avgöra om arbetsbelastningen uppfyller önskad prestandanivå.

När du definierar acceptanskriterier ä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ändarens behov och krav. Tänk på följande när du ska införliva användarperspektivet i acceptanskriterierna:

  • 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 acceptanskriterier som fångar upp önskad användarupplevelse. Ta med faktorer som svarstid, användbarhet, tillgänglighet och övergripande tillfredsställelse.

  • Funktionskrav: Hantera de specifika funktioner som användaren förväntar sig att se i arbetsbelastningen. Definiera acceptanskriterier kring dessa funktionskrav 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 acceptanskriterier 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 acceptanskriterierna som anger om arbetsbelastningen uppfyller prestandamålen. Dessa tröskelvärden definierar det acceptabla prestandaintervallet för varje mått. Anta till exempel att godkännandekriteriet för svarstid ä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 anses vara ett prestandaproblem.

Definiera villkor för att skicka. Upprätta kriterier för att avgöra om arbetsbelastningen har godkänts eller misslyckats med prestandatestet. Du kan definiera överföring som att uppfylla alla godkännandekriterier eller uppnå en viss procentandel av dem.

Välj testtyp

För att 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 felkorrigering ska anses vara klar. Prestandatester bör syfta till att verifiera 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ännandevillkoren 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 acceptanskriterierna 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 acceptanskriterierna.

Följande tabell innehåller ett exempel på testtyper och deras användningsfall.

Testtyp Description Användningsfall
Belastningstestning Simulera realistiska användarbelastningar för att mäta hur arbetsbelastningen 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 arbetsbelastningen 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 bedöma 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 dina valda testtyper baserat på arbetsbelastningens egenskaper och krav. Tänk på faktorer som kritiskhet för prestandamått, användarens 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 nödvändiga funktioner 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 prestandaflaskhalsar i koden. Profilering hjälper till 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. Överväg 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 verktyg för prestandatestning 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 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 licensieringskrav 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 kanaler för teknisk support för att hjälpa till med eventuella utmaningar eller problem som kan uppstå under testningsprocessen.

Skapa testscenarier

När du skapar testscenarier avses processen för 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 för 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.

  • Iterativt förfina skript. 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 processen med att konfigurera de infrastruktur-, programvaru- och nätverkskonfigurationer som du behöver för att skapa en miljö som liknar produktionsmiljön.

Om du vill konfigurera testmiljön på ett sätt som ökar prestandaeffektiviteten inkluderar du följande steg i konfigurationsprocessen:

  • Spegla produktionsmiljön. Konfigurera testmiljön så att den liknar produktionsmiljön. 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 som 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ätningar.

  • 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 varierande 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, felfrekvenser, 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 omfatta höga svarstider, resursbegränsningar, databasproblem, nätverksfördröjning och skalbarhetsbegränsningar. Genom att hitta rotorsakerna till dessa flaskhalsar kan du prioritera prestandaförbättringar.

  • Korrelera mått. Utvärdera relationer och korrelationer 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 med hög användning eller återkommande prestandaproblem.

Utvärdera godkännandekriterier. Jämför de nya testresultaten med de fördefinierade acceptanskriterierna och prestandamålen. Utvärdera om arbetsbelastningen uppfyller önskade prestandastandarder. Om arbetsbelastningen inte uppfyller godkännandevillkoren 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 omfatta spårning genom arbetsbelastningskomponenterna, undersökning av loggfiler, övervakning av resursanvändning eller analys av felmeddelanden. Gå djupare in 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 ögonblicksbilder av dokumentprestanda som gör att du kan lära dig över tid och optimera. Använd dessa baslinjemätningar som ett 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 ett 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 processor-, minnes- och diskanvändning.
  • Registrera meningsfulla mätningar. Registrera de prestandamått som du får under testet som baslinjemätningar. Dessa mätningar representerar den startpunkt som du jämför framtida prestandatester med.

  • 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 ska 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 gränserna för prestanda. Här följer några viktiga metoder:

  • Ange nedbrytningsgrä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 ta emot 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 aviseras de nödvändiga teamen omedelbart för att agera.

  • Testa ändringar. Vissa prestandaproblem kanske bara visas i en live-inställning. Tillämpa noggranna testmetoder för föreslagna kod- och infrastrukturändringar. Använd kodinstrumentation för att få insikter om programmets prestandaegenskaper, till exempel heta 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 acceptabla gränserna.

Azure-stöd

Utför testerna: Med Azure Pipelines kan du integrera prestandatestning i DIN CI/CD-pipeline. Du kan använda belastningstestning som ett steg i pipelinen för att verifiera prestanda och skalbarhet för dina program.

Azure Chaos Studio är ett sätt för dig att 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 din molnprogram- och tjänstresiliens.

Azure Load Testing är en belastningstestningstjänst som genererar hög skalbar belastning 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 testvillkor, till exempel genomsnittlig svarstid eller tröskelvärden för fel, och automatiskt stoppa belastningstester baserat på specifika felvillkor. Belastningstestning erbjuder en instrumentpanel som tillhandahå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 molnet 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.

Checklista för prestandaeffektivitet

Se den fullständiga uppsättningen rekommendationer.