Definiera belastningstester baserat på viktiga användarflöden
Belastningstestning är en viktig del av kontinuerlig validering. För att komma igång måste du identifiera programflöden. I den här lektionen får du lära dig mer om användar- och systemflöden, varför de är viktiga och designkriterierna för testerna.
Vad är programflöden?
Ett flöde består av programinteraktioner som krävs för att slutföra en uppgift.
Användarflöde
Dessa flöden anger hur användare interagerar med ditt program. I scenariot Contoso Shoes är utcheckningsprocessen för att köpa objekt ett exempel på ett användarflöde. Den har dessa komponenter som deltar i inventeringshanteringen:
- Klientwebbprogram
- Utcheckningslogik i Azure Functions
- Serverdelsdatabas i Azure Cosmos DB
Ur ett verksamhetskritiskt perspektiv måste dessa komponenter vara mycket tillgängliga och motståndskraftiga mot fel. Till exempel måste klientsidan läsas in snabbt eftersom organisationen förväntar sig ett stort antal samtidiga användare.
Systemflöde
Dessa flöden är vanligtvis inte användarriktade, men ett avbrott eller försämring av systemflödeskomponenter kan påverka användarupplevelsen. Ett systemflöde kan till exempel vara en asynkron aktivitet som hämtar beställningar från en databas och genererar fraktetiketter.
Kommentar
De flesta program har flera flöden. Varje flöde kan beröra olika komponenter i arkitekturen. Dessutom kan en komponent visas i mer än ett flöde. Det är viktigt att förstå vilka flöden som påverkas när en komponent misslyckas.
Definiera ett belastningstest och dess tröskelvärden
Ett belastningstest simulerar verklig trafik för att testa programmets prestanda. Målet är dock inte att generera en stor belastning för att bryta systemet. Det målet kan uppnås genom stresstester.
Ett belastningstest kan hjälpa dig att identifiera prestanda, prestandabegränsningar, resursanvändning och optimal skalningsbeteende för ett användarflödes komponenter. Dina belastningstester bör återspegla varje relevant användarflöde och systemflöde. En bra design kräver kunskaper om programmet. Börja med att ställa frågor, till exempel:
- Vilka API-anrop måste göras?
- Vad är sekvensen med API-anrop?
- Vilka testdata ska användas med API-anropen?
Baserat på svaren:
Identifiera viktiga scenarier och beroenden och ange mål för förväntad användning, tillgänglighet, prestanda och skalbarhet.
Definiera en uppsättning mätbara tröskelvärden för att kvantifiera de förväntade prestandan för de viktigaste scenarierna. För en programkomponent kan du till exempel överväga tröskelvärden för det förväntade antalet användarinloggningar, begäranden per sekund i ett API och åtgärder per sekund i en bakgrundsprocess.
Använd tröskelvärdena för att definiera ett belastningstest som genererar realistisk trafik för testning av programprestanda, validering av förväntade skalningsåtgärder och relaterade aktiviteter. Använd dessa tröskelvärden för att utveckla en hälsomodell för programmet som omfattar både testning och produktion.
I exemplet med utcheckningsprocessen kan du ange ett tröskelvärde för genomsnittlig sidinläsningstid för varje steg till mindre än 500 millisekunder och stödja upp till 100 samtidiga användare.
Nu när alla tröskelvärden har definierats kan du implementera belastningstestning. Den här modulen använder Azure Load Testing.
Även om du kan konfigurera och distribuera Azure Load Testing via Azure Portal rekommenderas en programmatisk metod. Använd API:er för att distribuera, konfigurera och köra testerna på ett automatiserat sätt. Den metoden diskuteras i nästa lektion.