Vad är icke-funktionell testning?
I Kör funktionella tester i Azure Pipelineshar du lagt till Selenium UI-tester i pipelinen. Användargränssnittstester är en form av funktionell testning. I den här delen utforskar du vilka typer av icke-funktionella tester som du kan köra i en pipeline.
Teamet definierar först icke-funktionella tester. De pratar om vissa typer av dessa tester. Sedan bestämmer de sig för ett icke-funktionellt test som ska läggas till i pipelinen.
Hur jämförs icke-funktionella tester med funktionella tester?
I Kör funktionella tester i Azure Pipelinesdefinierade vi funktionella tester och icke-funktionella tester.
Kort funktionella tester kontrollera att varje funktion i programvaran gör vad den ska. Funktionstester verifierar med andra ord programmets funktioner.
Icke-funktionella tester kontrollera icke-funktionella aspekter av ett program, till exempel prestanda och tillförlitlighet. Du kan också köra icke-funktionella tester på system som inte är appar, till exempel infrastrukturkomponenter. Ett exempel på ett icke-funktionellt test är att avgöra hur många personer som samtidigt kan logga in på ett program utan att orsaka problem, till exempel långsammare svarstider.
På Space Game webbplats som exempel kan ett funktionellt test verifiera att rankningslistan visas korrekt och att den visar rätt poster när användaren väljer ett filter. Ett icke-funktionellt test kan verifiera att rankningslistefiltreringen slutar på mindre än en sekund, även när många användare ansluter till webbplatsen samtidigt.
Icke-funktionell testning testar alltid något som är mätbart. Målet är att förbättra produkten. Du kan till exempel göra det genom att förbättra hur effektivt programmet använder resurser, eller genom att förbättra svarstiderna när många kunder använder dem samtidigt. Här är några av de frågor som icke-funktionella tester kan besvara:
- Hur fungerar programmet under normala omständigheter?
- Hur fungerar programmet när många användare loggar in samtidigt?
- Hur säkert är programmet?
Vilka typer av icke-funktionella tester kan jag köra?
Det finns många typer av icke-funktionella tester. Många av dem passar in i de breda kategorierna för prestandatestning och säkerhetstestning.
Prestandatestning
Målet med prestandatestning är att förbättra programmets hastighet, skalbarhet och stabilitet. Testning för hastighet avgör hur snabbt ett program svarar. Testning för skalbarhet avgör den maximala användarbelastning som ett program kan hantera. Testning för stabilitet avgör om programmet förblir stabilt under olika belastningar. Två vanliga typer av prestandatester är belastningstester och stresstester.
Belastningstestning
Belastningstester bestämmer en applikations prestanda under realistiska belastningar. Till exempel kan belastningstester avgöra hur bra ett program presterar på den övre gränsen för sitt serviceavtal (SLA). I grund och botten avgör belastningstestning programmets beteenden när flera användare behöver det samtidigt.
Användare är inte nödvändigtvis personer. Ett belastningstest för skrivarprogramvara kan till exempel skicka stora mängder data till programmet. Ett belastningstest för en e-postserver kan simulera tusentals samtidiga användare.
Belastningstestning är också ett bra sätt att upptäcka problem som bara finns när programmet körs vid sina gränser. Det är då problem som buffertspill och minnesläckor kan uppstå.
I den här modulen använder du Apache JMeter för att utföra belastningstester. Du använder en uppsättning simulerade användare som kommer åt webbplatsen samtidigt.
Stresstest
Stresstester fastställer en applikations stabilitet och robusthet under hög belastning. Belastningarna går längre än vad som har angetts för programmet. Stresstesterna avgör om programmet kraschar under dessa belastningar. Om programmet misslyckas kontrollerar stresstestet att det misslyckas smidigt. En smidig felhantering kan till exempel resultera i ett lämpligt, informativt felmeddelande.
Scenarier där program måste fungera under onormalt stora belastningar är vanliga. Om videon till exempel blir viral vill du veta hur väl servrarna kan hantera den extra belastningen. Ett annat typiskt scenario är hög trafik på shoppingwebbplatser under semesterperioder.
Säkerhetstestning
Säkerhetstestning säkerställer att program är fria från sårbarheter, hot och risker. Noggranna säkerhetstester hittar alla systemets möjliga kryphål och svagheter som kan orsaka ett informationsintrång eller intäktsförlust.
Det finns många typer av säkerhetstester. Två av dem är intrångstestning och efterlevnadstestning.
Intrångstestning
penetrationstestning, eller penntestning, är en typ av säkerhetstestning som testar programmets osäkra områden. I synnerhet testas sårbarheter som en angripare kan utnyttja. En auktoriserad, simulerad cyberattack är vanligtvis en del av intrångstestningen.
Efterlevnadstestning
Efterlevnadstestning avgör om ett program är kompatibelt med vissa krav, inom eller utanför företaget. Till exempel behöver sjukvårdsorganisationer vanligtvis följa HIPAA (Health Insurance Portability and Accountability Act från 1996), som tillhandahåller datasekretess och säkerhetsbestämmelser för att skydda medicinsk information.
En organisation kan också ha egna säkerhetskrav. Programvaran måste testas för att se till att den följer dessa krav. I Linux-system måste till exempel standardanvändarmasken vara 027 eller mer restriktiv. Ett säkerhetstest måste bevisa att detta krav uppfylls.
Planen
I resten av den här modulen konfigurerar du din Azure DevOps-miljö, lär dig mer om att planera belastningstester med hjälp av Apache JMeter och köra belastningstester i Azure Pipelines.