Icke-funktionell testning avser programvarutestning som utförs för att testa de icke-funktionella aspekterna av en programvaruapplikation.
Det finns många olika typer av icke-funktionell testning, och vissa typer av programvarutestning kan betraktas som både funktionell testning och icke-funktionell testning på samma gång.
Icke-funktionell testning är nödvändig eftersom den utvärderar viktiga användarkriterier som prestanda och användbarhet och kontrollerar om programvaran fungerar som förväntat utanför dess grundläggande funktionalitet.
I den här artikeln utforskar vi definitionen och egenskaperna för icke-funktionell testning tillsammans med typer av icke-funktionell testning, metoder för icke-funktionell testning och testverktyg som kan hjälpa dig att optimera och förbättra dina egna icke-funktionella testprocesser.
Vad är icke-funktionell testning?
Icke-funktionell testning är en typ av programvarutestning där icke-funktionella aspekter av programvarubygget testas.
Exempel på icke-funktionell testning är testning för att bedöma kapacitet, prestanda, användbarhet, återställning och portabilitet.
Det är lika viktigt att kontrollera kvaliteten och statusen för vart och ett av dessa icke-funktionella kriterier som att kontrollera funktionerna i en programvara, men dessa parametrar testas inte i vanliga funktionella tester.
I huvudsak innebär icke-funktionell testning att man testar ”hur” programvarufunktionerna fungerar snarare än att man testar ”om” de fungerar.
1. När behöver du icke-funktionell testning?
Icke-funktionell testning utförs under systemtestningsfasen av programvarutestning efter att enhetstestning och integrationstestning har ägt rum.
Under systemtestningen utför testarna både funktionell och icke-funktionell testning och börjar med funktionell testning.
När testarna har fastställt att programvaran fungerar som förväntat utför de icke-funktionella tester för att bedöma om den också uppfyller icke-funktionella parametrar.
Det är vanligtvis nödvändigt att utföra funktionell testning före icke-funktionell testning eftersom det är omöjligt att testa tillförlitligheten eller prestandan hos funktioner som inte fungerar alls. Icke-funktionell testning är ett av de sista stegen i programvarutestningen före testning av användaracceptans och slutlig produktsläpp.
2. När du inte behöver icke-funktionell testning
Det är alltid viktigt att testa icke-funktionella aspekter av programvaran om de inte redan har testats och befunnits vara tillräckliga.
Även om du har utfört icke-funktionell testning av programvara tidigare kan det vara nödvändigt att testa icke-funktionella parametrar igen, till exempel om nya funktioner har lagts till i programvaran eller om ändringar har gjorts i koden som kan påverka prestanda och tillförlitlighet.
Målen för icke-funktionell testning
Syftet med icke-funktionell testning är att kontrollera att produkten uppfyller användarnas förväntningar och att optimera produkten innan den släpps.
Det kan också hjälpa utvecklare och testare att förstå programvaran bättre och använda denna kunskap för framtida optimeringar.
1. Kvalitetskontroll
Icke-funktionell testning syftar till att testa faktorer som påverkar produktens användbarhet, tillförlitlighet, underhållbarhet, portabilitet och effektivitet.
Genom att testa dessa delar säkerställs att den produkt som släpps ut på marknaden är av tillräckligt hög kvalitet och uppfyller användarnas förväntningar när det gäller prestanda, laddningstider och användarkapacitet.
2. Riskhantering
Icke-funktionell testning minskar också riskerna och kostnaderna i samband med att en produkt släpps på marknaden genom att maximera chanserna för teamet att släppa en tillfredsställande produkt.
Genom att kontrollera de icke-funktionella parametrarna i programvarubygget kan man minska kostnaderna för att släppa produkten eftersom behovet av ytterligare utveckling och programvaruändringar senare minskar.
3. Optimering
Icke-funktionell testning hjälper testare och utvecklare att optimera programvarubygget och optimera prestandan under installation, konfigurering, utförande och användning.
Du kan också använda icke-funktionell testning för att optimera ditt sätt att hantera och övervaka programvarubygget.
4. Insamling av uppgifter
Icke-funktionell testning gör det möjligt för testare att samla in och producera mått och mätvärden som kan användas av testteamen för intern forskning och utveckling.
Du kan använda data som du samlar in från icke-funktionella tester för att förstå hur din produkt fungerar och hur du kan optimera den mer effektivt för användarna.
5. Förbättring av kunskapen
Icke-funktionell testning förbättrar och utökar testteamets kunskap om produktens beteende och den teknik som används.
Detta hjälper inte bara testteamen att förstå programvaran de arbetar med bättre, utan kan också ge användbar kunskap som hjälper testarna att förstå framtida versioner bättre.
Vem är involverad i icke-funktionell testning?
Icke-funktionell testning utförs vanligtvis av testare i QA-miljön, men ibland kan utvecklare utföra icke-funktionell testning under utvecklingen.
Systemtestning utförs nästan alltid av testare, och detta är den fas av testningen där de flesta icke-funktionella testerna äger rum.
Om de icke-funktionella testerna misslyckas skickar testarna programvaran tillbaka till utvecklarna för att korrigera fel i prestanda innan de testar igen.
Fördelarna med icke-funktionell testning
Det finns många fördelar med att utföra icke-funktionell testning, och icke-funktionell testning är ett viktigt steg i systemtestningen.
Utan icke-funktionell testning skulle testteamen inte kunna verifiera att programvaran faktiskt uppfyller kundens krav eller att den uppfyller de krav som anges i utvecklingsplanen för programvaran.
1. Förbättra programvarans prestanda
Icke-funktionell testning kan hjälpa testare och utvecklare att förbättra programvaruapplikationernas övergripande prestanda. Icke-funktionella tester identifierar områden där programvarans prestanda är bristfällig, t.ex. när det gäller laddningshastighet eller bearbetningskapacitet, och uppmanar programvaruteam att göra ändringar för att rätta till dessa defekter.
Detta garanterar att programvaruteam endast släpper programvara till allmänheten när den är klar och när prestandan är tillräckligt bra.
2. Säkerställa programvaran
Icke-funktionell testning omfattar säkerhetstestning, som är avgörande för att se till att en programvarutillverkning är säker och skyddad mot externa hot och attacker.
Säkerhetstester gör det möjligt för testare och utvecklare att kontrollera att programvaran skyddar konfidentiella uppgifter på ett adekvat sätt och att den har tillräcklig säkerhet för att skydda sig mot dagens cyberattacker.
3. Öka programvarans användarvänlighet.
Icke-funktionell testning är det bästa sättet att göra din programvara mer användarvänlig, särskilt genom att utföra användbarhetstester som bedömer hur lätt det är för användarna att lära sig använda och hantera din programvara.
Användarvänlighet är mycket viktigt eftersom det avgör hur nöjda användarna är med din programvara och säkerställer att användarna kan dra full nytta av allt som din programvara erbjuder.
4. Se till att programvaran uppfyller användarnas behov.
Att se till att programvaran uppfyller användarnas behov bör vara en av de viktigaste prioriteringarna för alla team för utveckling och testning av programvara. Användarna förväntar sig inte bara att programvaran ska vara funktionell, utan också att den ska fungera bra, fungera smidigt och skydda konfidentiella uppgifter.
Icke-funktionell testning är ett av de enda sätten att se till att programvaran uppfyller dessa krav.
Utmaningarna med icke-funktionell testning
Det finns vissa nackdelar med att utföra icke-funktionell testning. Även om icke-funktionell testning är viktig under systemtestningsfasen av programvarutestning kan processen för icke-funktionell testning innebära utmaningar för programvaruteam som inte har tillräckligt med resurser och verktyg.
1. Upprepning
Icke-funktionell testning i programvarutestning måste utföras varje gång programvaran uppdateras av utvecklarna eller varje gång koden ändras. Detta innebär att icke-funktionell testning kan vara mycket repetitiv, vilket inte bara tar tid utan också tröttar ut testarna.
Trötta testare som utför mycket repetitiva uppgifter är också mer benägna att bli distraherade och göra misstag.
2. Kostnad
Eftersom icke-funktionell testning är så repetitiv kan den också vara ganska kostsam, särskilt för testteam som förlitar sig på manuell icke-funktionell testning.
Programvaruteam måste avsätta tid och budget för frekventa icke-funktionella tester, och programvaruutvecklare måste betala extra för dessa extra tester.
Vad testar vi vid icke-funktionell testning?
Icke-funktionell testning kan användas för att testa många olika icke-funktionella parametrar som alla påverkar systemets kvalitet och användbarhet. Var och en av dessa parametrar testas under systemtestningen mot kriterier som fastställs i testplanen.
1. Säkerhet
Säkerhetstestning är en typ av icke-funktionell testning som mäter hur väl ett system är skyddat mot externa hot och attacker. Det handlar om avsiktliga säkerhetsöverträdelser, dataläckor och andra vanliga överträdelser.
Säkerhetstestning är ett viktigt steg i icke-funktionell testning eftersom det ger slutanvändare och kunder en trygghet i att deras data är säkra.
2. Tillförlitlighet
Testare använder icke-funktionell testning för att bedöma programvarans tillförlitlighet och för att säkerställa att programvaran kontinuerligt kan utföra sina specificerade funktioner utan fel.
Funktionell testning säkerställer att programvaran utför sina nyckelfunktioner, men det är bara icke-funktionell testning som faktiskt testar tillförlitligheten och upprepbarheten av dessa resultat.
3. Överlevnadsförmåga
Överlevnadsförmåga beskriver hur ett programvarusystem reagerar om det inte fungerar, och testning av överlevnadsförmåga säkerställer att systemet kan återhämta sig om fel och brister inträffar.
Testning av överlevnadsförmåga kan till exempel kontrollera om programvaran kan spara data för att minimera dataförluster vid plötsliga fel.
4. Tillgänglighet
Programvarans tillgänglighet avser i vilken grad användaren kan lita på systemet under dess drift. Detta kallas också stabilitet och testas genom stabilitetstestning.
Stabilitetstestning har vissa likheter med tillförlitlighetstestning eftersom den kontrollerar om systemet kan fungera enligt förväntade standarder på ett konsekvent sätt.
5. Användbarhet
Användbarhetstestning är en annan viktig typ av icke-funktionell testning i programvarutestning. Denna typ av testning bedömer hur väl användaren kan lära sig, hantera och använda programvarusystemet genom att följa instruktionerna på skärmen och andra grundläggande anvisningar.
Användbarhetstester är viktiga eftersom om programvaran inte är lätt att använda kommer de flesta användare helt enkelt att överge den eller välja att använda något annat.
6. Skalbarhet
Med skalbarhetstestning testas i vilken utsträckning en programvaruapplikation kan utöka sin bearbetningskapacitet för att möta ökad efterfrågan.
Om programvaran till exempel är utformad för att användas av flera användare i ett enda nätverk samtidigt, hur fungerar den då när tio användare loggar in samtidigt? Påverkar högre antal användare prestanda eller laddningstider på ett betydande sätt?
7. Driftskompatibilitet
Interoperabilitetstestning är en typ av icke-funktionell testning som kontrollerar hur väl ett programvarusystem fungerar som gränssnitt mot andra programvarusystem.
Detta är särskilt viktigt när programvaran utformas som en del av en serie produkter som alla integreras med varandra.
8. Effektivitet
Effektivitet i programvarutestning avser i vilken utsträckning ett programvarusystem kan hantera kapacitet, kvantitet och svarstid.
Testare kan till exempel bedöma hur många användare som kan logga in i systemet samtidigt, hur lång tid det tar att hämta data från databasen eller hur snabbt programvaran kan utföra grundläggande uppgifter.
9. Flexibilitet
Flexibilitet är ett mått på i vilken grad ett programvarusystem kan fungera med olika typer av hårdvara och kringutrustning.
Till exempel hur mycket RAM-minne programvaran kräver eller om den kräver en viss mängd processor. Ju lägre kraven på programvaran är, desto mer flexibel är programvaran.
10. Portabilitet
Testning av portabilitet används för att testa hur flexibelt programvaran kan överföras från sin nuvarande maskin- eller programvarumiljö och hur lätt det är att göra det.
Portabilitet är viktigt eftersom det påverkar hur lätt slutanvändarna kan hantera programvaran och flytta den mellan olika system.
11. Återanvändbarhet
Testning av återanvändbarhet är en typ av icke-funktionell testning som testar om delar av programvarusystemet kan omvandlas för återanvändning i en annan applikation.
Testning av återanvändbarhet påverkar vanligtvis inte kunder och slutanvändare, men det är en bra återspegling av hur effektivt utvecklarna skapar komponenter som kan återanvändas i framtiden.
Egenskaperna hos icke-funktionella tester
För att förstå vad icke-funktionella tester är måste man förstå egenskaperna hos icke-funktionella tester. Dessa egenskaper definierar icke-funktionell testning inom programvarutestning.
1. Mätbar
Icke-funktionell testning är alltid kvantitativ och mätbar, vilket innebär att testare inte använder subjektiva fraser som ”trevligt” eller ”bra”, utan istället använder siffror och fakta för att beskriva resultatet av icke-funktionell testning.
I stället för att beskriva laddningstider som ”snabba” eller ”långsamma” bör icke-funktionell testning resultera i specifika siffror som visar antalet gånger.
2. Specifika
Vid icke-funktionell testning bör syftet med testerna vara specifikt för programvarans konstruktionsspecifikationer.
Om programvaruprojektplanen till exempel hänvisar till antalet användare som ska kunna logga in samtidigt, bör detta prioriteras vid icke-funktionell testning.
3. Okänd
Icke-funktionell testning kan utformas specifikt för att mäta egenskaper som anges i projektplaner, men i många fall är dessa egenskaper inte specificerade i förväg.
I det här fallet bör testarna helt enkelt utföra icke-funktionell testning för att bedöma programvaran utifrån varje parameter och senare jämföra dessa med förväntningarna.
Livscykeln för icke-funktionella tester
Eftersom icke-funktionell testning inte hänvisar till en specifik fas i livscykeln för programvarutestning utan bara till en typ av testning som vanligtvis sker under systemtestningsfasen av programvarutestning, kan livscykeln för icke-funktionell testning variera mycket mellan olika projekt.
I allmänhet följer den en liknande livscykel som andra typer av programvarutestning, som börjar med att analysera projektets krav och slutar med testutförande och uppfyllande av cykeln.
1. Analys av programvarukrav
Det första steget i livscykeln för icke-funktionell testning är analysen av programvarukraven. Programvaruteam arbetar efter specifika kriterier när de bygger och testar applikationer, och dessa kriterier bör diktera vilken typ av tester som ska utföras.
2. Testplanering
Nästa steg i livscykeln är testplanering. Under testplaneringsfasen sammanställer QA-ledaren en detaljerad testplan som beskriver vad som ska testas, vem som ska utföra testningen och vilka testmetoder och verktyg som ska användas.
Testplanen bör innehålla alla nödvändiga detaljer som testare behöver för att skapa och utföra testfall.
3. Skapande av testfall
Skapandet av testfall är nästa steg i den icke-funktionella testningen. I detta skede utvecklas icke-funktionella testfall som testare kommer att utföra i ett senare skede för att testa systemets icke-funktionella krav.
Testfall beskriver vad som kommer att testas, hur det kommer att testas och vad det förväntade resultatet av testet är.
4. Inställning av testmiljön
Nästa steg i livscykeln för icke-funktionell testning är att inrätta testmiljön innan testningen börjar.
Testmiljön är den plats där all testning äger rum, och här finns resurser och verktyg som du använder för att utföra icke-funktionella tester.
Testteamet förbereder testmiljön före testutförandet.
5. Utförande av testet
Testutförandet är nästa fas i livscykeln för icke-funktionell testning. Det handlar om att utföra de testfall som skapats tidigare för att testa olika aspekter av programvarutillämpningar, t.ex. säkerhet, laddningstider, kapacitet och portabilitet.
Testteamet utför varje fall individuellt och kontrollerar resultatet av varje test mot det förväntade resultatet.
6. Upprepa cykeln
Det sista steget i livscykeln för icke-funktionell testning är att genomföra cykeln och upprepa den. Efter att ha utfört alla testfall kontrollerar testarna vilka test som klarade testet och vilka som misslyckades.
Tester som misslyckas tyder vanligtvis på att det finns en defekt som måste åtgärdas av utvecklarna. När utvecklarna har korrigerat eller redigerat koden upprepas testcykeln igen tills inga fel har hittats.
För att reda ut en viss förvirring:
Icke-funktionell testning kontra funktionell testning
Funktionell testning och icke-funktionell testning är två olika men lika viktiga typer av programvarutestning som tillsammans används för att bedöma om en programvaruapplikation uppfyller användarnas krav enligt projektbeskrivningen.
Även om de båda är nödvändiga typer av testning som gör det möjligt för programvaruteam att identifiera fel i programvarubyggnader, är funktionell och icke-funktionell testning helt olika från varandra.
1. Vad är skillnaden mellan funktionell och icke-funktionell testning?
Skillnaden mellan funktionell och icke-funktionell testning ligger i vad de testar. Funktionell testning testar applikationens funktioner och kontrollerar om de fungerar som förväntat. Icke-funktionell testning testar andra aspekter av applikationen som påverkar användarnas tillfredsställelse och applikationens kvalitet.
Funktionell och icke-funktionell testning sker i olika faser av programvarutestning, men båda typerna av testning utförs vanligtvis under systemtestningsfasen.
Både funktionell och icke-funktionell testning kan hjälpa oss att förstå hur väl en applikation fungerar och om den utför sitt arbete på ett tillfredsställande sätt.
Om du t.ex. testar en mobilapp som gör det möjligt för användarna att spara listor över saker att göra och inköpslistor, kan funktionstestning testa funktioner som att skapa en ny lista, spara en lista och göra ändringar i befintliga listor.
Icke-funktionell testning kan bedöma hur väl applikationen fungerar på olika mobila enheter, hur snabbt listorna laddas och hur mycket appens prestanda påverkas när andra appar körs i bakgrunden.
2. Slutsats: icke-funktionell testning kontra funktionell testning
Både funktionell och icke-funktionell testning är viktiga typer av programvarutestning som kan hjälpa testare och kvalitetssäkringsteam att bedöma om en applikation uppfyller de aktuella kraven.
Medan funktionell testning testar programvarans funktioner, testar icke-funktionell testning andra aspekter som kan påverka prestanda, effektivitet och säkerhet.
Enhetstestning, integrationstestning och API-testning är alla former av funktionstestning. I vart och ett av dessa stadier av programvarutestning bedömer testarna hur väl funktioner och egenskaper fungerar, antingen enskilt eller tillsammans, och identifierar fel och brister som hindrar funktionerna från att fungera som förväntat.
Säkerhetstestning, användbarhetstestning, portabilitetstestning och belastningstestning är alla former av icke-funktionell testning som gör det möjligt för testare att bedöma hur väl en app utför sina funktioner och stöder användarnas behov.
Typer av icke-funktionell testning
Det finns många olika typer av icke-funktionell testning, var och en av dem testar en annan icke-funktionell aspekt av en programvaruapplikations prestanda eller effektivitet.
Var och en av dessa typer av tester testar olika parametrar, och vissa tester kan testa samma parametrar på olika sätt.
1. Prövning av prestanda
Prestandatester är en typ av icke-funktionella tester som kontrollerar hur väl olika programvarukomponenter fungerar. I stället för att testa deras funktionalitet, vilket är vad funktionstestning gör, kan prestandatesterna testa svarstider, flaskhalsar och felpunkter. Prestandatester hjälper testare att se till att programvaran är av hög kvalitet och att den är snabb, stabil och tillförlitlig.
2. Stresstester
Stresstestning är en typ av icke-funktionell testning där man testar hur väl programvaran fungerar när den utsätts för onormal stress. Det kan innebära att du testar hur programvaran fungerar när någon försöker använda många olika funktioner samtidigt, eller när många andra program körs samtidigt.
Stresstestning syftar till att identifiera den gräns vid vilken programvaran slutar att fungera korrekt och vad som händer när systemet utsätts för stress. Det gör det möjligt för testarna att förstå om systemet kan återställa sig självt och om det meddelar användarna med lämpliga felmeddelanden.
3. Belastningstester
Belastningstestning är en typ av testning där man bedömer hur väl programvaran fungerar både under normala förhållanden och vid större belastning. Det används för att avgöra hur mycket programvaran kan hantera samtidigt utan att prestandan påverkas negativt.
Belastningstestning kan användas för att testa hur applikationer fungerar när många användare använder dem samtidigt eller när användare försöker ladda ner många data samtidigt.
Belastningstestning är viktigt om du vill kontrollera om din programvara är skalbar.
4. Säkerhetstester
Säkerhetstester utvärderar programvarutillämpningar och letar efter sårbarheter i programvarans säkerhet. Det handlar bland annat om potentiella säkerhetsrisker som kan leda till dataförluster eller överträdelser som avslöjar konfidentiella uppgifter.
Säkerhetstester är viktiga eftersom de säkerställer att produkten är tillräckligt skyddad mot hackning, dataintrång och andra externa säkerhetshot.
Några exempel på säkerhetstester som testare kan utföra är säkerhetsrevisioner, etisk hackning, penetrationstester, säkerhetsskanning och statusbedömningar.
5. Test av uppgradering och installation
Testning av uppgraderingar och installationer är en typ av icke-funktionell testning av programvara som verifierar hur väl programvaran fungerar på olika maskiner.
Syftet med denna typ av testning är att se till att nya användare enkelt kan installera programvaran på sina maskiner och att befintliga användare kan uppgradera den när nya uppgraderingar släpps.
Testning av uppgradering och installation är viktigt eftersom slutanvändarna måste kunna installera din produkt på ett enkelt sätt, förutsatt att de arbetar med en maskin som är kompatibel med produkten.
6. Volymtester
Volymtestning är en typ av testning som syftar till att verifiera vad som händer när stora datamängder läggs till i databasen samtidigt. Detta identifierar om programmet kan hantera stora datamängder och vad som händer med systemet om det inte kan det.
Volymtestning kallas också för översvämningstestning och kan användas för att bedöma dataförluster och felmeddelanden som uppstår när stora mängder data läggs till i systemet.
Volymtester är det enda sättet att se till att programvaran kan hantera de datamängder som användarna förväntar sig att den ska hantera.
7. Test för återvinning
Återhämtningstester innebär att man tvingar mjukvarusystemet att misslyckas för att testa hur väl systemet återhämtar sig efter en krasch.
Testning av återställning kan hjälpa testare att förstå hur programvaran återställer data och förhindrar förluster om hårdvaran kopplas ur under användning, om programvaran kopplas bort från nätverket under en dataöverföring eller om du startar om systemet oväntat.
Den här typen av testning är viktig eftersom system som inte har ordentliga återställningsprotokoll kan drabbas av allvarliga dataförluster när olyckor som denna inträffar.
Vad du behöver för att börja med icke-funktionell testning
Innan du börjar med icke-funktionell testning måste du se till att du har förberett testmiljön och samlat ihop de verktyg och data som du behöver.
1. Testplan
Innan du börjar med icke-funktionell testning ska du se till att du har en färdig testplan som har undertecknats av lämpliga personer.
Din testplan bör innehålla alla relevanta detaljer om vad du ska testa och hur du ska göra det. Den bör förklara när du kommer att använda manuell testning och när du kommer att använda automatiserad testning, samt beskriva roller och ansvarsområden för alla som är involverade i testprocessen.
2. Testfall
Innan du kan utföra icke-funktionella tester måste du skapa testfall. Varje testfall beskriver en specifik sak som du ska testa, förklarar hur du ska testa den och beskriver det förväntade resultatet av testet.
Om du till exempel utför belastningstester kan ett exempel på ett testfall vara att testa hur programvaran beter sig när tio användare använder samma modul samtidigt.
3. Verifiering av funktionalitet
Du kan inte utföra icke-funktionella tester på programvarukomponenter om de inte är funktionella.
Om du till exempel vill testa hur många användare programvaran kan hantera som är inloggade samtidigt är det först viktigt att kontrollera att enskilda användare faktiskt kan logga in i programvaran.
Innan du börjar med icke-funktionell testning ska du försäkra dig om att alla funktionella tester har godkänts och att programvaran fungerar som du förväntar dig.
Detta innebär vanligtvis att rök- och sanitetstestning, enhetstestning, integrationstestning och funktionell systemtestning redan har utförts.
4. Testverktyg
Innan du börjar med icke-funktionell testning ska du samla ihop alla testverktyg som du vill använda för att genomföra testerna.
Oavsett om du använder automatiseringsverktyg för att delvis automatisera några av dina tester eller dokumentationsverktyg som hjälper dig att hantera och lagra testrapporter för senare användning, se till att de verktyg som du vill använda är tillgängliga och redo att användas och att alla i testteamet vet hur de ska använda verktygen på rätt sätt.
5. Testmiljö
Sätt upp testmiljön innan du börjar med icke-funktionell testning. Du kanske redan har en lämplig testmiljö, särskilt om du kan använda samma miljö för icke-funktionell systemtestning och funktionell systemtestning.
Den idealiska testmiljön gör det möjligt att testa alla element som du behöver på rätt enheter.
Om du t.ex. testar volymhantering på smartphone-enheter är det bättre att testa detta på en riktig smartphone-enhet än att försöka emulera en mobil miljö på en stationär dator.
Processen för icke-funktionell testning
Testning av icke-funktionella aspekter av en programvarutillverkning är en process i flera steg som innebär att man förbereder testmiljön, skapar testfall, samlar in testdata och utför icke-funktionella tester.
Det är möjligt att dela upp testprocessen i små delar för att göra den lättare att följa för nybörjare inom icke-funktionell testning.
1. Kontroller av beredskap för icke-funktionell testning
Innan du kan börja med icke-funktionell testning är det viktigt att kontrollera att du är redo för den här fasen av testningen.
Detta kan innebära att man utvärderar utgångskriterierna för den sista testfasen för att se till att programvaran har klarat den och att man ser till att programvaran har klarat alla funktionella tester som krävs innan icke-funktionell testning äger rum.
Vissa team kan skapa inträdeskriterier för icke-funktionell testning, som omfattar alla villkor som måste vara uppfyllda innan icke-funktionell testning påbörjas.
2. Skapa en testplan
Du kanske redan har utfört det här steget tidigare om du utför icke-funktionell testning som en del av systemtestningen och följer din systemtestningsplan. I en testplan beskrivs alla tester som du behöver utföra och hur du tänker utföra dem.
Utan en tydlig testplan är det lätt att tappa bort räckvidden och målen för de tester du utför.
3. Skapa testfall
Nästa steg i den icke-funktionella testningen är att skapa testfall som är utformade för att testa varje icke-funktionell parameter i programvaran.
Varje testfall bör ha ett testfalls-ID, ett namn på testfallet, en beskrivning och uppgifter om det förväntade resultatet av testet samt eventuella kriterier för godkänt eller underkänt som fastställts i förväg. Detta hjälper testarna att förstå hur de ska utföra varje test och vilka resultat de ska leta efter.
4. Samla in testdata.
Innan du kan utföra varje testfall måste du samla in testdata som du kommer att använda för varje testfall.
Detta innebär vanligtvis att du samlar in kod och data från olika moduler och komponenter som utgör de funktioner och områden som du ska testa. Om du vill maximera testtäckningen bör du ha mycket testdata att arbeta med.
5. Gör testmiljön klar
Nästa steg i den icke-funktionella testningen är att förbereda testmiljön. Testmiljön är en testserver som du använder för att utföra många olika typer av programvarutestning.
Det gör det möjligt att skapa identiska förhållanden för att testa programvaran och att ställa in programvaran med olika konfigurationer för konfigurationstestning, säkerhetstestning och andra typer av icke-funktionell testning.
6. Utföra icke-funktionella tester
När testmiljön är klar är det dags att utföra icke-funktionella tester. Du kan välja att utföra testerna i ordning efter typ, till exempel börja med prestandatester innan du går vidare till säkerhetstester och andra typer av icke-funktionella tester.
När du utför varje test antecknar du resultaten i din testrapport. Om du automatiserar testning har ditt automatiseringsverktyg också ett standardiserat sätt att rapportera resultaten på ett tydligt och entydigt sätt.
7. Rapportera testresultaten.
Efter att ha utfört varje testfall sammanställer du resultaten av dina icke-funktionella tester i en enda rapport.
Rapporten ska vara tydlig med resultaten av varje test och otvetydig om huruvida varje test är godkänt eller underkänt.
Följ en standardiserad struktur för din testrapport för att se till att all information som du behöver lämna över finns med.
8. Åtgärda fel
När testresultaten är klara lämnar du tillbaka programvaran till utvecklarna om testerna misslyckades eller om du har identifierat några icke-funktionella fel som måste åtgärdas.
Om programvaran till exempel inte klarar av att hantera ett lämpligt antal användare samtidigt eller om prestandan saktar ner för mycket när flera program körs samtidigt, måste dessa problem sannolikt åtgärdas i koden för att se till att användarna är nöjda med produkten.
9. Upprepa testcykeln
När utvecklarna har åtgärdat eventuella fel som upptäckts under den första icke-funktionella testfasen kan testcykeln börja om igen.
Utvecklarna testar de ändringar de gör och skickar den nya byggnaden tillbaka till QA-testarna, som sedan utför hela testpaketet, med början i röktestning, enhetstestning, integrationstestning och slutligen systemtestning.
Testcykeln upprepas tills inga buggar eller defekter förekommer i någon punkt, varefter byggnaden kan gå in i det sista teststeget: testning av användaracceptans.
Testfall för icke-funktionell testning
Testfall är en viktig aspekt av all programvarutestning, och när du utför både funktionell och icke-funktionell testning använder du testfall för att definiera vad du ska testa och hur du ska testa det.
Varje testfall kan ses som ett minitest, och varje testfall har sina egna definierade utfall och resultat.
1. Vad är testfall för icke-funktionell testning?
Ett testfall är en uppsättning åtgärder som utförs på en programvarubyggnad för att testa om den uppfyller de villkor som definierats i programvaruplanen. Varje testfall talar effektivt om för testarna vad de ska testa och hur, och är utformat för att testa en specifik funktion eller icke-funktionell egenskap hos programvaran.
Icke-funktionella testfall kan till exempel vara att testa vad som händer när någon försöker få tillgång till säkra data i systemet eller att testa hur snabbt programvaran laddas när den startas.
2. Hur utformar man icke-funktionella testfall?
När du utformar testfall för icke-funktionell testning är det viktigt att du följer standardmetoderna för testfall samtidigt som du har målen för dina icke-funktionella tester i åtanke.
Följ stegen nedan för att skriva testfall för icke-funktionell testning som tydligt beskriver vad testarna måste göra för att utföra varje test.
1. Definiera det område som du vill täcka.
För varje testfall ska du överväga vilket område av programvaran som testfallet ska täcka.
Om du till exempel skriver testfall för testning av installation och uppgradering kan du inkludera testfall som bedömer hur lätt det är att installera programmet på olika enheter och hur lång tid det tar att uppgradera programvaran med en ny patch.
2. Skapa ett unikt ID för testfallet
Varje testfall ska ha ett unikt testfalls-ID. Detta gör det lätt att hitta testfallets beskrivning och resultat senare och undanröjer eventuella förvirringar om vilket testfall du hänvisar till om två testfall har liknande namn eller beskrivningar.
3. Namn och beskrivning av varje test.
Testfallets ID identifierar testet, men du vill också ange ett namn och en beskrivning för varje testfall som du skriver.
Det bör vara ett enkelt namn som sammanfattar vad du testar, medan beskrivningen är en enda mening som beskriver detta lite mer detaljerat.
Beskrivningen ska vara tillräckligt tydlig för att testarna ska veta vad som ska testas och hur det ska testas, samt vilka särskilda villkor som måste uppfyllas i testet.
4. Ange det förväntade resultatet.
För varje testfall ska du beskriva det resultat som ska uppnås om programvaran fungerar som förväntat.
I icke-funktionella tester, t.ex. prestandatester och belastningstester, kan detta i många fall innebära att programvaran fortsätter att fungera normalt utan att sakta ner, bli långsam eller krascha.
I andra fall kan det innebära att vissa felmeddelanden visas för att informera användaren om problemet och rekommendera en lösning.
5. Rekommendera testmetoder.
För varje testfall rekommenderar du vilken typ av testteknik och verktyg för icke-funktionell testning som du anser att testaren bör använda under testningen.
Vid icke-funktionell testning kan testare använda mycket olika metoder för olika typer av testning.
Belastningstestning och stresstestning kan till exempel kräva automatisering eftersom det är opraktiskt att simulera extremt tung trafik manuellt, medan andra testtyper kan vara lättare att utföra utan särskilda verktyg eller tekniker.
6. Få varje testfall granskat av kollegor.
Innan du skriver under på varje testfall bör du få varje fall granskat av någon som du samarbetar med. Detta kan vara en annan testare eller en QA-ansvarig.
Genom att granska testfall med kollegor säkerställs att de är tillräckligt tydliga för att kunna följas av en tredje part och att de inte innehåller några tvetydigheter eller misstag som kan leda till felaktig testning.
3. Exempel på icke-funktionella testfall
Om du skriver testfall för icke-funktionell testning kan de se ut ungefär som exemplen på icke-funktionell testning nedan.
Exempel på testning av skalbarhet
Testfalls-ID: 6671
Testfallets namn: Test för inloggning med flera användare
Beskrivning: Emulera mer än 20 användare som loggar in i programvaran samtidigt med hjälp av automatiseringsverktyg.
Förväntade resultat: Programvaran ska köras som vanligt för varje användare och varje användare ska kunna logga in på mindre än 5 sekunder.
Exempel på testning av kompatibilitet
Testfallets ID: 5214
Testfallets namn: Laddning av programmet i webbläsaren Opera
Beskrivning: Ladda programmet i Opera-webbläsaren.
Förväntade resultat: Programmet laddas som vanligt i webbläsaren Opera med standardupplösning och layout.
Manuella eller automatiserade icke-funktionella tester?
När du väljer mellan olika tekniker för icke-funktionella tester måste du bestämma om du vill utföra manuella eller automatiserade icke-funktionella tester.
Manuella tester utförs av mänskliga testare, vilket innebär att de vanligtvis är mer tidskrävande att utföra, men de erbjuder också möjligheter till utforskande tester.
Automatiserade icke-funktionella tester är snabbare och på vissa sätt mer tillförlitliga, men de kräver också mer resurser eller verktyg. Automatisering och hyperautomatisering blir alltmer populärt inom testning, särskilt när det gäller icke-funktionell testning.
Manuell icke-funktionell testning: Fördelar, utmaningar och processer
Manuell icke-funktionell testning utförs enbart av testare som testar varje enskilt icke-funktionellt element oberoende av varandra.
Vid manuella icke-funktionella tester måste testarna samla in information om programvaran, skapa enskilda testfall som motsvarar testplanen och utföra dessa testfall manuellt.
Detta tar mycket tid i anspråk, men det innebär också att QA-testarna har frihet att bestämma vad som ska testas och hur.
1. Några av fördelarna med manuell testning är:
● Manuell testning kan vara billigare än automatiserad testning eftersom den inte kräver specifik teknik eller teknisk kunskap.
● Manuell testning gör det möjligt för testare att erbjuda mänsklig insikt och subjektivitet i hur programvaran fungerar och om den fungerar på ett tillfredsställande sätt.
● Manuell testning kan användas för att utföra systemtestning i scenarier där det är omöjligt att automatisera.
● Manuell testning gör det möjligt för testarna att bedöma systemets visuella aspekter, t.ex. det grafiska gränssnittet och andra faktorer som kan påverka användbarheten.
● Manuell testning ger testare ett bredare perspektiv på systemet som helhet och hur olika moduler och komponenter fungerar tillsammans.
Men det finns också nackdelar med manuell testning.
2. Några av utmaningarna med manuell testning är:
● Vissa typer av icke-funktionell testning, inklusive belastningstestning och prestandatester, är opraktiska att utföra manuellt.
● Manuell testning tar betydligt mer tid än automatiserad icke-funktionell testning.
● Manuella testare kan bli distraherade, tappa fokus och göra misstag, särskilt när de utför mycket repetitiva testuppgifter.
Automatiserad icke-funktionell testning: Fördelar, utmaningar och processer
Automatiserad icke-funktionell testning utförs med hjälp av automatiserade skript och testverktyg. När automatiserade testmetoder används kan testarna utföra testerna i bakgrunden medan de fortsätter med andra uppgifter, när de automatiserade testerna har startats.
1. Några av fördelarna med att automatisera icke-funktionella tester är:
1. Spara tid och resurser genom att minska den tid du lägger ner på långa och tidskrävande uppgifter.
2. Automatisering gör det möjligt att öka testtäckningen genom att täcka ett större antal komponenter och funktioner.
3. Det är lättare att utföra automatiserade tester ofta eftersom de tar mindre tid att utföra.
4. Automatiserad testning är idealisk för tidskrävande testuppgifter som belastningstestning, volymtestning och stresstestning som är mycket svåra att utföra manuellt.
5. Risken för att fel uppstår vid automatiserad testning är mindre.
Men det finns också vissa nackdelar med automatiserad testning, vilket innebär att det inte alltid är rätt metod för alla typer av icke-funktionell testning.
2. Några av utmaningarna med automatiserad icke-funktionell testning är följande:
1. Automatiserad testning är dyrare att installera än manuell testning.
2. Det kan ta tid och tekniska resurser att installera testautomatisering.
3. Testautomatisering ger inte utrymme för utforskande testning.
4. Automatisering av tester kräver fortfarande tid för att skapa testfall.
Slutsats: Manuell eller automatiserad
icke-funktionell testning?
I de flesta typer av programvarutestning ger en kombination av manuell och automatiserad testning vanligtvis de bästa resultaten. På så sätt kan testteamen dra nytta av effektiviteten, tillförlitligheten och noggrannheten hos automatiserad testning samtidigt som de utför utforskande testning som gör det möjligt för testarna att bedöma programvaran ur ett mer subjektivt perspektiv.
När det gäller icke-funktionell testning är både manuell och automatiserad testning praktiskt taget nödvändig för de flesta testteam.
Manuell testning används bäst för att utföra icke-funktionella testuppgifter som användbarhetstestning, medan automatiserad testning oftast används för att utföra tester som skulle vara för tidskrävande och svåra att utföra manuellt, t.ex. stresstestning eller volymtestning.
Icke-funktionell testning är ett av de mest uppenbara områdena att använda tekniker för testautomatisering eftersom det är en kvantitativ, mätbar typ av testning som inte kräver subjektiva resultat.
Liksom andra typer av testning utförs icke-funktionell testning vanligtvis med hjälp av en blandning av manuell testning och automatiserad testning.
Automatiserad testning är dock praktiskt taget nödvändig för många typer av icke-funktionell testning, och parametrarna och mätvärdena för icke-funktionell testning innebär att automatiseringen lämpar sig bättre för denna typ av testning än för funktionell testning.
Bästa praxis för icke-funktionell testning
När du genomför icke-funktionell testning för första gången kan du följa bästa praxis för testning för att standardisera din testprocess och optimera testets effektivitet.
Bästa praxis fungerar som riktlinjer för testteam som vill förbättra testprocesserna och anpassa sig till industristandarderna.
1. Använd automatiseringsverktyg
Vid icke-funktionell testning är det viktigare än vid andra typer av testning att använda automatiseringsverktyg för att automatisera vissa typer av testning, särskilt volymtestning, stresstestning och belastningstestning.
Dessa typer av tester kontrollerar vanligtvis hur väl programvaran fungerar under hårt tryck från användare, data och trafik, vilket kan vara mycket svårt att efterlikna manuellt.
Att automatisera dessa typer av icke-funktionella tester blir inte bara effektivare utan också mer exakt och gör det möjligt för testarna att enkelt replikera högre belastningar och stress.
2. Granskning av all dokumentation.
Förutom att be kollegor att granska testfall som du skapar, be kollegor inom testteamet att granska felrapporter, testrapporter, testplaner och andra former av formell dokumentation som skapas under testprocessen.
Detta minskar risken för små misstag som kan orsaka allvarliga förseningar i test- och utvecklingsprocessen.
3. Definiera mätbara krav
När du definierar kraven på din programvara innan den icke-funktionella testningen börjar, se till att varje krav är objektivt och mätbart.
Detta gör det lättare för testarna att fastställa om programvaran uppfyller dessa krav under testningen och lämnar inget utrymme för tolkning.
Vad räknas som ”snabbt” eller ”effektivt”? Använd siffror och kvantitativa värden för att definiera vad du letar efter.
4. Överväga testmetoderna noggrant.
Innan du bestämmer dig för vilka mätvärden du ska använda för att mäta programvarans prestanda bör du fundera på vad programvarans användare vill ha och vilka mätvärden som faktiskt stämmer överens med programvaruplanen och kraven.
De flesta programvaror ska vara snabba och tillförlitliga, men vilka andra mätvärden kan dina användare leta efter? Finns det några programvaruspecifika mätvärden som du bör ta hänsyn till under testprocessen?
Typer av resultat från ett icke-funktionellt test
När du utför icke-funktionell testning får du olika typer av resultat från de tester du utför.
Dessa skiljer sig vanligtvis mycket från resultaten av funktionella tester, som ofta är tydligare, eftersom funktionella tester bara testar om en funktion fungerar som den ska eller inte.
Precis som vid funktionell testning bör testarna fastställa tydliga förväntningar för varje testfall så att det blir lätt att avgöra om testet är godkänt eller misslyckat.
1. Absoluta tal
När du utför prestandatestning, stresstestning och andra typer av icke-funktionell testning är de resultat som du oftast tittar på hastigheter och andra absoluta tal.
Prestandatestning kontrollerar hur snabbt systemet kan utföra vissa uppgifter, och detta mäts i sekunder eller millisekunder.
Om du utför belastningstester kan du bedöma hur mycket data programvaran kan hantera samtidigt utan att krascha eller bli långsam.
2. Meddelande om fel
Icke-funktionell testning kontrollerar också hur systemet fungerar när fel uppstår, t.ex. säkerhetsfel, valideringsfel och konfigurationsfel.
Det är viktigt att systemen visar korrekta och tydliga felmeddelanden när fel uppstår, så att användarna kan vidta åtgärder för att rätta till problemet och fortsätta använda programvaran.
Felmeddelanden bör också förekomma under säkerhetstesterna när systemet hindrar användarna från att bryta mot programvarans inbyggda säkerhetsfunktioner.
3. Krascher
Krasch är ett tecken på systemfel och indikerar vanligtvis att systemet inte kan prestera på den nivå som du testar och kan betyda att testet är godkänt.
I vissa fall kan systemet krascha men ändå klara testfallet du arbetar med, till exempel om systemet klarar av den nödvändiga mängden stress eller trafik innan det kraschar.
Vid icke-funktionell testning bör testarna förvänta sig att systemet kraschar regelbundet, särskilt när de pressar det till sin gräns för stresstestning och andra prestandatester.
Exempel på icke-funktionella tester
Exemplen på icke-funktionella testfall liknar exemplen ovan för icke-funktionella testfall.
Du kan titta på exempel på icke-funktionella tester för att bättre förstå vad icke-funktionell testning är och vad den testar i en programvaruapplikation.
1. Exempel på prestandatester
Om du arbetar med en mobilapplikation som ansluter användare till en onlinedatabas är det viktigt att ett stort antal användare kan få tillgång till och ladda ner data från databasen samtidigt.
Detta är också en viktig del av skalbarhetstesterna, särskilt om du vill öka antalet användare i appen i framtiden.
Du kommer sedan att testa hur systemet reagerar när till exempel 1000 användare försöker få tillgång till samma databas samtidigt och ställa krav på hur snabbt programmet ska laddas under dessa förhållanden.
2. Testning av kompatibilitet
Om du testar ett nytt dokumenthanteringsprogram måste du testa att det fungerar på alla enheter som det är avsett för.
Detta innebär att du testar att du kan installera och ladda programmet på alla de senaste versionerna av Windows, Mac och andra operativsystem (t.ex. Linux) som du vill att programmet ska vara kompatibelt med.
3. Testning av säkerheten
När du utför säkerhetstester testar du några av de sätt på vilka människor kan försöka komma åt konfidentiella uppgifter eller bryta mot programvarans säkerhetsåtgärder för att kontrollera att systemet beter sig som du förväntar dig att det ska göra i dessa situationer.
Du kan till exempel logga in som användare och försöka komma åt filer som du inte har säkerhetsbehörighet för för att se till att systemet inte låter dig komma åt dessa filer.
Typer av fel och buggar som upptäcks
Genom icke-funktionell testning.
Icke-funktionell testning kan avslöja många fel och brister som inte är lika lätta att hitta som de som identifieras i funktionell testning. Det beror på att icke-funktionell testning ofta kräver att testarna verifierar olika konfigurationer, inställningar och kombinationer av förhållanden för att bedöma hur väl systemet fungerar i en mängd olika inställningar.
1. Brister i prestanda
Prestandafel uppstår när systemet fungerar, men inte så snabbt eller effektivt som du förväntar dig.
Du kan till exempel upptäcka att systemet inte laddas tillräckligt snabbt under vissa förhållanden eller att det till och med kraschar om för många användare loggar in samtidigt.
Prestandafel hindrar inte helt och hållet människor från att använda din programvara, men de kan göra den mindre användbar och göra det mindre troligt att den uppfyller användarnas krav.
2. Brister i säkerheten
Säkerhetsfel är fel som påverkar säkerheten i ditt programvarusystem och de data som lagras i det.
Säkerhetsbrister kan till exempel uppstå om användare kan få tillgång till konfidentiella uppgifter som de inte borde ha tillgång till, om vissa delar av applikationen inte är korrekt lösenordsskyddade eller om krypteringen misslyckas.
Detta kan leda till säkerhetsöverträdelser som kan få allvarliga konsekvenser för programvarutillverkarens rykte.
3. Funktionsfel
Även om icke-funktionell testning inte är utformad för att testa funktionerna i en programvara kan icke-funktionell testning i vissa fall identifiera funktionella defekter i programvaran.
Syftet med tillförlitlighetstestning är till exempel inte att testa om appen fungerar, utan att testa om appen fungerar på ett tillförlitligt sätt vid upprepade försök.
Detta kan visa att vissa funktioner inte fungerar korrekt när en åtgärd upprepas, och dessa kan klassificeras som funktionella fel.
Vanliga mätvärden för icke-funktionell testning
Mätvärden för icke-funktionell testning beskriver de mätvärden som används för att mäta systemets prestanda och effektivitet.
Olika typer av icke-funktionell testning bygger på olika mätvärden, och du kan välja att använda olika mätvärden beroende på projektets slutmål.
1. Tid
Tidsmått mäter hur lång tid det tar att utföra vissa uppgifter eller hur länge användarna måste vänta på att funktioner ska laddas.
Några exempel på tidsmått är antalet transaktioner eller nedladdningar som ett program kan göra inom en viss tidsram, svarstiderna för olika funktioner och den tid det tar för programmet att slutföra en viss operation.
Olika typer av tester mäter resultaten i sekunder eller som en presentation av hur många operationer per sekund.
2. Rymden
Utrymme är ett annat viktigt mått vid icke-funktionell testning. Utrymmesmätningar kan testa hur mycket processorutrymme systemet kräver eller hur mycket utrymme på hårddisken som programvaran tar upp när den är helt installerad.
Några exempel på rymdmått är cacheminne, huvudminne och extraminne.
Programvara som kräver mycket utrymme för att fungera smidigt kan vara lämplig för ett mindre antal kunder.
3. Användbarhet
Vissa mätvärden i icke-funktionell testning tar hänsyn till systemets användbarhet, till exempel hur lång tid det tar att utbilda användarna att använda systemet korrekt, hur många valmöjligheter användarna måste navigera genom för att utföra viktiga funktioner eller hur många musklick det krävs för att utföra vissa uppgifter.
Icke-funktionella tester kan mäta vart och ett av dessa mått kvantitativt, där lägre siffror i allmänhet innebär högre användbarhet.
4. Tillförlitlighet
Ett annat viktigt mått i icke-funktionell testning är tillförlitlighet. Tillförlitlighet är sannolikheten för att systemet beter sig på samma sätt gång på gång eller fungerar som det ska under en lång tidsperiod.
Några exempel på mått som används för att mäta tillförlitlighet är medeltid till fel, felfrekvens, tillgänglighet och sannolikhet för driftstopp.
Var och en av dessa mätvärden hjälper testarna att verifiera att systemet kan köras under lång tid utan att det uppstår fel eller krascher.
5. Robusthet
Robusthet är ett mått på hur väl systemet hanterar fel och hur väl systemet kan återhämta sig i händelse av fel.
Några exempel på mått som mäter robusthet är den tid det tar för systemet att återställa sig självt efter ett fel, procentandelen incidenter som leder till katastrofala fel och sannolikheten för att datafiler skadas efter ett systemfel.
Detta är viktiga mätvärden eftersom användarna förväntar sig att systemen ibland kan gå sönder utan att all data går förlorad eller filer skadas.
6. Bärbarhet
Mätning av portabilitet mäter hur lätt programvaran kan överföras till olika system eller flyttas till en ny plats i ett nätverk.
Några exempel på mått som mäter portabilitet är procentandelen icke portabel kod och antalet system som programvaran kan köras på.
Programvara som kan köras på många olika system är helst mer portabel och därför lämpligare att använda i miljöer som ofta måste flyttas eller flyttas.
Strategier för att genomföra icke-funktionella tester
När du börjar med icke-funktionell testning är det viktigt att du närmar dig denna testfas med en strategi i åtanke. QA-ledare och chefer för programvarutestning bör överväga riskerna med testningen, de resurser de har till sitt förfogande och syftet med testningen innan den icke-funktionella testningen påbörjas.
Att utveckla en strategi kan hjälpa dig att optimera dina icke-funktionella tester redan från början.
1. Fördela roller och ansvarsområden
Innan du börjar med icke-funktionell testning ska du fördela roller och ansvarsområden till nyckelmedlemmarna i testteamet. Detta gör det lättare att hantera arbetsbelastningen för icke-funktionell testning och att se till att erfarna testare ansvarar för att upprätthålla kvaliteten och effektiviteten i de tester som du utför.
Se till att de personer som du väljer att ta på sig dessa roller har den kunskap och erfarenhet som de behöver för att utföra de uppgifter som du förväntar dig av dem, särskilt om dessa uppgifter kräver tekniska färdigheter.
2. Samla in relevanta testverktyg.
Samla ihop alla tekniker och verktyg som du vill använda för att utföra icke-funktionell testning. Se till att alla i teamet vet hur de ska användas effektivt, och genomför utbildning för att fylla kunskapsluckor där det behövs.
Genom att se till att alla vet vilka testverktyg som ska användas och hur de ska användas innan testningen av icke-funktionella funktioner börjar minskar risken för att testningen måste avbrytas eller göras om på grund av otillräcklig kunskap.
3. Prioritera testning
Innan du börjar med icke-funktionell testning bör du göra en lista över alla aspekter av systemet som du behöver testa och prioritera dem utifrån hur brådskande och viktiga de är.
Du kan prioritera icke-funktionell testning baserat på risknivån för varje aspekt av systemet som du testar.
Till exempel kan grundläggande säkerhetstestning ske eftersom tillräcklig säkerhet anses vara extremt viktigt i modern programvara. Ju tidigare du identifierar högriskfel, desto mindre kan dessa fel påverka andra delar av systemet.
7 bästa verktygen för icke-funktionell testning
Verktyg för icke-funktionell testning kan effektivisera testprocessen, göra det enklare och mer kostnadseffektivt att automatisera testning och hjälpa QA-ansvariga att hantera testnings- och dokumentationsprocessen.
Det finns många kostnadsfria verktyg för icke-funktionella tester på nätet, men det finns även verktyg som du kan betala en månadsavgift för att uppgradera.
1. ZAPTEST FREE edition
ZAPTEST är ett populärt verktyg för programvarutestning som gör det möjligt för användare att snabbt och enkelt utföra både funktionella och icke-funktionella programvarutester. Du kan använda ZAPTEST för att automatisera programvarutester och använda RPA-teknik för att emulera olika funktioner och tillstånd i icke-funktionella tester.
ZAPTEST FREE-utgåvan är bara en nedbantad version av företagsutgåvan och erbjuder många av samma funktioner i mindre skala. Du kan söka support på ZAPTEST-forumet och utföra prestandatester med obegränsat antal virtuella användare.
2. Appium
Appium är ett kostnadsfritt verktyg för programvarutestning som lämpar sig bäst för att testa mobilapplikationer på en rad olika plattformar, inklusive iOS- och Android-enheter. Appium ger användarna stor flexibilitet att utforma sina egna testramar och teststrategier samtidigt som de kan dra nytta av Appiums automatiseringsmöjligheter.
3. Loadium
Loadium är ett verktyg för icke-funktionell testning som bäst används för att utföra prestandatester och belastningstester, två typer av icke-funktionell testning som är mycket lättare att utföra med hjälp av automatiseringsverktyg.
Loadium gör det möjligt för användare att köra storskaliga belastningstester och erbjuder anpassade lösningar så att du kan skräddarsy dina tester för att uppnå dina programvarumål.
Du kan prova Loadium gratis eller betala för att ladda ner den fullständiga versionen av programmet.
4. Obkio
Obkio är ett verktyg för mjukvarutestning som hjälper QA-ledare och testledare att prioritera och kategorisera problem utifrån hur allvarliga de är. Obkio kan upptäcka problem innan användarna gör det, erbjuder användarna smarta meddelanden och kan hjälpa till att upptäcka var problemet finns.
Obkio är inte bara avsett för icke-funktionell testning, utan är ett mycket användbart gratis testverktyg som kan användas i alla skeden av testningens livscykel.
5. SonarQube
SonarQube är ett verktyg för säkerhetstestning med öppen källkod som automatiskt analyserar kod för att upptäcka fel och sårbarheter. SonarQube är skrivet i Java och du kan använda SonarQube för att analysera kod i över tjugo olika programmeringsspråk, och systemets rena gränssnitt gör det enkelt att upptäcka problem som kan orsaka säkerhetsbrister i framtiden.
6. Tsung
Tsung är ett annat verktyg för icke-funktionell testning som är idealiskt om du vill automatisera belastnings- och stresstestning men inte kan använda gratisversionen av Loadium.
Tsung är ett verktyg med öppen källkod som gör det möjligt för användare att utföra belastningstester i stora volymer över flera protokoll och servrar, inklusive HTTP och SOAP.
Tsung är helt gratis och kan hjälpa testare att se till att programvaran de arbetar med har hög prestanda under olika utmanande förhållanden.
7. Sikuli
Sikuli är en annan applikation som använder robotiserad processautomatisering för att automatisera testprocessen. Programmet kan automatisera allt som syns på skärmen. Du kan använda Sikuli för att testa icke webbaserade program och snabbt reproducera fel.
Checklista, tips och tricks för icke-funktionell testning
Innan du börjar med icke-funktionell testning bör du kontrollera att du har allt du behöver för att utföra grundliga icke-funktionella tester i en förberedd miljö.
Följ checklistan nedan för att få tips och tricks innan du börjar med icke-funktionell testning.
1. Arbeta enligt ett schema
Oavsett om du inkluderar det i din testplan eller skapar ett separat dokument för det, strukturera dina programvarutester utifrån ett testschema.
Om du hittar fler fel och brister än du förväntar dig kan du ibland avvika från schemat, men att ha ett schema till att börja med kan hjälpa till att vägleda testarna och motivera dem att arbeta effektivt, särskilt när de utför tidskrävande manuella tester.
2. Identifiera ditt testteam
Genom att delegera ansvar och tilldela medlemmarna i testteamet officiella roller och titlar kan du se till att testprocessen går smidigt.
Kommunicera tydligt roller och ansvar inom teamet innan testningen börjar och ge olika testare ansvar för olika aspekter av icke-funktionell testning så att alla hålls ansvariga för sina egna uppgifter.
3. Välj verktyg och teknik före testning.
Om du bestämmer dig för att arbeta med vissa verktyg och tekniker först efter att du har börjat med icke-funktionell testning kan detta fördröja testprocessen och skapa förvirring bland testarna.
Gör istället din research i förväg och bestäm om det finns några verktyg som du vill använda innan testningen börjar. Detta gör det enkelt att införliva verktygen i testplanen och att utbilda dina testare i att använda dem innan testningen börjar.
4. Få alltid ett formellt godkännande av tester och dokumentation.
Testning är en kvalitetssäkringsprocess, och det bästa sättet att maximera värdet av de tester du utför är att utföra grundläggande kvalitetssäkring av de tester du planerar och utför.
Inför enkla protokoll som kräver att testare ber QA-ansvariga och chefer att granska och godkänna testplaner och testrapporter innan de går vidare till nästa steg.
Detta ökar chansen att testfel upptäcks och åtgärdas i ett tidigt skede.
7 misstag och fallgropar att undvika när du implementerar icke-funktionella tester
Om du är nybörjare inom icke-funktionell testning kan det vara lätt att göra några vanliga misstag som testare och QA-personal ofta gör.
Icke-funktionell testning är ett komplext arbete som innebär att man måste betrakta en programvarutillverkning från alla vinklar och perspektiv.
Nedan följer en lista över några av de vanligaste fallgroparna som testare gör när de utför icke-funktionell testning.
1. Inte planera
Om du är nybörjare på icke-funktionell testning kanske du tror att du bara kan hoppa in i testfasen utan att skapa en grundlig testplan i förväg.
Vissa testteam kan sammanställa ofullständiga testdokument eller ytliga sammanfattningar av testplanen som inte på ett tillfredsställande sätt beskriver de åtgärder som testarna måste vidta under icke-funktionell testning.
2. Felaktig hantering av testerna
Problem kan uppstå om testerna hanteras felaktigt i något skede av testprocessen. Otillräcklig hantering kan innebära att testarna inte har rätt resurser för att utföra testerna ordentligt eller att testarna inte får tillräckligt med tid för att testa varje aspekt av byggnaden.
Testledare måste kunna lära sig av de misstag de gör och utveckla effektivare testplaner för framtiden.
3. Dålig kommunikation
Dålig kommunikation kan orsaka många problem under testprocessen, särskilt vid icke-funktionell testning.
Det kan handla om dålig kommunikation inom testteamet eller dålig kommunikation mellan testare, utvecklare och intressenter.
Detta inträffar ofta när testare inte underhåller testdokumenten tillräckligt eller inte kommunicerar regelbundet med andra avdelningar under testprocessen.
4. Ignorera utvecklare
Testare och utvecklare arbetar vanligtvis åtskilda från varandra, men testteam som arbetar nära utvecklare kan dra nytta av ytterligare kunskap om hur programvaran fungerar och hur olika moduler interagerar med varandra.
Att involvera utvecklare i testprocessen, eller att begära feedback från utvecklare vid viktiga tillfällen, kan hjälpa testteamen att skapa effektivare och grundligare testplaner.
5. Syftet med testningen
Många testare tror fortfarande att syftet med testning är att kontrollera att programvaran fungerar eller att visa intressenter och investerare att programvaran fungerar.
Istället bör testare närma sig testning med inställningen att syftet med testning är att leta efter fel.
Testare som inte hittar fel kan vara nöjda med att programvaran de testar är fri från fel endast om de är övertygade om att de har letat överallt där fel kan finnas.
6. Manuella fel jämfört med automatiserade fel
Det är viktigt att du tar dig tid att överväga om manuell testning eller automatiserad testning är bättre för varje typ av testning som du utför.
Automatiserade testmetoder lämpar sig utmärkt för nästan alla former av icke-funktionell testning, och testgrupper som är vana vid funktionell testning kan göra misstaget att anta att de kan testa icke-funktionella funktioner lika lätt manuellt.
7. Användning av fel testverktyg
Det är lätt att välja fel testverktyg och teknik innan man börjar med icke-funktionell testning, särskilt om testteamen är vana vid manuell testning och inte är vana vid att använda testverktyg.
Undersök de metoder för icke-funktionell testning som du vill använda i förväg och välj programvaruverktyg och automatiseringsverktyg som uppfyller projektets specifika krav.
Slutsats
Icke-funktionell testning är ett viktigt steg i testprocessen som gör det möjligt för testare att kontrollera hur väl ett system fungerar och i vilken utsträckning det uppfyller icke-funktionella krav, t.ex. laddningstider, kapacitet och säkerhetsskydd.
Det finns många olika sätt att utföra icke-funktionell testning, men moderna automatiseringsverktyg gör det lättare att maximera testtäckningen och noggrannheten utan att kompromissa med kvaliteten på resultaten.
Vanliga frågor och resurser
Om du vill veta mer om icke-funktionell testning finns det många vanliga frågor och resurser på nätet.
Bläddra bland våra favoritresurser för icke-funktionell testning online nedan eller läs svaren på några av de vanligaste frågorna om icke-funktionell testning.
1. De bästa kurserna om icke-funktionell testning
Det finns många kurser på nätet som kan hjälpa dig att utöka dina kunskaper om metoder och tillvägagångssätt för icke-funktionell testning.
En del av dessa kurser är gratis, medan andra kan ge ett certifikat eller en kvalifikation mot en avgift. Om du vill gå en ackrediterad kurs kan du fråga din arbetsgivare om de kan sponsra dig och täcka undervisningskostnaderna.
Några av de bästa kurserna om icke-funktionell testning är:
- TSG: Icke-funktionell utbildning 2-dagars kurs
- Udemy: Det kompletta Bootcampet för 2023 mjukvarutestning
- Edx: Certifikat för professionell testning av programvara
- Utbildande: Automatisering av prestandatester 101
2. Vilka är de fem vanligaste intervjufrågorna om icke-funktionell testning?
Om du förbereder dig för en anställningsintervju för att arbeta med programvarutestning kan intervjuaren ställa frågor om icke-funktionell testning för att försäkra sig om att du förstår hur detta viktiga steg i programvarutestning fungerar. Förbered dig inför intervjun genom att i förväg förbereda effektiva svar på vanliga intervjufrågor.
● Hur kan de metoder och tillvägagångssätt som du använder vid icke-funktionell testning skilja sig från de tillvägagångssätt som du använder vid funktionell testning?
● Hur skiljer sig icke-funktionell testning från funktionell testning?
● Vilka olika typer av icke-funktionell testning finns det?
● Hur prioriterar du funktionella tester och testfall?
● I vilket skede av programvarutestningen utförs vanligtvis funktionell testning?
3. De bästa YouTube-handledningarna om icke-funktionell testning
Om du föredrar att lära dig genom att titta på videoklipp kan YouTube-tutorials om icke-funktionell testning vara ett bra sätt att lära dig mer om denna typ av programvarutestning.
Nedan följer några av de bästa YouTube-handledningarna om programvarutestning som finns tillgängliga idag.
Vad är icke-funktionell programvarutestning? En handledning i programvarutestning
Hjälp med programvarutestning: Icke-funktionell testning
Icke-funktionell testning i programvarutestning
Besök W3Schools
Funktionell och icke-funktionell testning
4. Hur man underhåller icke-funktionella tester
Ett korrekt testunderhåll säkerställer att programvarutesterna kan upprepas utan att kvaliteten på testresultaten äventyras.
Genom att upprätthålla icke-funktionella tester kan du se till att testerna i varje skede av utvecklingsprocessen är tillräckliga och att testerna alltid uppdateras i takt med att koden ständigt förändras.
Du kan upprätthålla icke-funktionella tester genom att följa våra tips nedan.
● Kommunicera tydligt med testteamet när du skapar testfall och skriver dokumentation.
● Följ alltid de bästa metoderna för testdesign
● Omvärdera testprotokoll i olika skeden av testprocessen.
● Uppdatera ändringar i ditt test under tiden
Beakta framtida projekt när du gör ändringar i pågående tester.
5. Är icke-funktionell testning black box eller white box-testning?
Icke-funktionell testning är en typ av black box-testning, vilket innebär att testarna inte bryr sig om hur systemet fungerar internt, utan endast om dess externa resultat.
Detta står i kontrast till white box-testning, som testar hur systemet fungerar internt. Exempel på white box-testning är enhetstestning och integrationstestning.
Testning av funktionella och icke-funktionella krav är exempel på testning i svart låda. Detta innebär att testare inte behöver ha avancerade tekniska färdigheter eller kunskaper i datorprogrammering för att utföra black box-testning, och de behöver inte heller lära sig att implementera de system som de testar.