Programvarutestning är ett hantverk. En programvarutestare är, liksom en hantverkare, tänkt att ha en gedigen förståelse för de verktyg för programvarutestning som står till deras förfogande. Vi har sammanställt en lista över 9 olika typer av programvarutestning och de verktyg som varje typ använder, för att hjälpa QA-analytiker och alla andra som arbetar inom yrket programvarutestning att bättre förstå sitt hantverk.
Varför behöver vi programvarutestning?
Ibland är det viktigt att påminnas om varför det man gör spelar roll. Det enkla faktumet är att all programvara som någonsin har utvecklats och nått framgång gjorde det med hjälp av programvarutestare som outtröttligt arbetade för att säkerställa att produkten höll så hög standard som möjligt. Här är tre anledningar till varför programvarutestning är viktigt.
- Kundnöjdhet: När man utvecklar ett projekt är det lätt att gå vilse bland kodens alla detaljer och glömma att användaren också behöver vara nöjd med hur programvaran fungerar. QA-analytiker och andra QA-medlemmar fyller den rollen.
- Produktkvalitet: Inom alla yrken där ett team eller en individ skapar något från grunden behövs ett annat team som upptäcker deras misstag. Författare behöver redaktörer. Filmregissörer behöver också redaktörer. Programvaruutvecklare behöver inte redaktörer, men de behöver ett QA-team som kan ge ett objektivt perspektiv och upptäcka eventuella fel.
- Säkerhet: För varje dag som går verkar den här punkten bli allt viktigare. Kunder vill känna sig trygga med att informationen de lägger in i programvaran och det arbete de utför i den förblir privat. En del av QA-arbetet är att se till att kunderna kan ha det förtroendet.
Metoder för programvarutestning
Varje typ av programvarutestningsteknik som nämns i den här artikeln tillhör en av två huvudkategorier: statisk testning och dynamisk testning. Innan vi går igenom de specifika detaljerna i de nio olika programvarutestningsteknikerna förklarar jag skillnaden mellan dessa två metoder och var i programvaruutvecklingscykeln de kommer in i bilden.
Statisk testning
Statisk testning är en typ av programvarutestning som utförs tidigt i utvecklingscykeln. Det är ett kostnadseffektivt sätt att hitta buggar innan de blir stora problem för utvecklingsteamet. Statiska tester körs tidigt i utvecklingscykeln eftersom de kan utföras utan att programvaran är fullt fungerande. Just det, programvaran kan felsökas innan den ens är i närheten av att vara färdig. Ser du hur användbart det kan vara?
Statiska tester utförs på två sätt:
- Manuella granskningar: Kod analyseras av en QA-analytiker eller testare.
- Automatisk analys: Ett testverktyg kontrollerar automatiskt programdokumentet och noterar eventuella fel.
Statisk testning är:
- Utförd utan att köra kod.
- Kostnadseffektiv.
- Värdefull för att säkerställa att programvaran uppfyller verifieringsspecifikationerna.
- Ett sätt att fastställa grundorsaken till buggar.
De flesta statiska tester genomförs i form av dokumentgranskningar. I det här scenariot är ett dokument antingen en skriftlig beskrivning av en produkt (känd som ett programvarudesigndokument) eller programmets källkod. Här är några tekniker för statisk testning som alla QA-analytiker bör känna till:
- Informell granskning: Det finns inga strikta riktlinjer för den informella granskningen. Teamet går igenom testdokumenten och kommenterar det de ser. Det finns ingen dokumentation.
- Genomgång: Kodens författare går igenom sitt dokument, och QA-teamet tar upp eventuella frågor och farhågor. Genomgångar är vanligtvis mycket informella och ett bra sätt att diskutera ämnen med personer utanför programvaruområdet.
- Teknisk granskning: Tekniska experter samlas och granskar kodens tekniska specifikationer. Genom att göra detta tidigt i utvecklingsprocessen säkerställer man att slutprodukten uppfyller de krav som ställts.
- Inspektioner: Den mest formella av alla granskningar. Ett team av utbildade moderatorer inspekterar dokumenten noggrant under mötet. Alla upptäckta buggar dokumenteras formellt och loggas för granskning. En uppföljning görs för att kontrollera att de dokumenterade buggarna har åtgärdats.
I de flesta fall är statisk testning användbar eftersom hela QA-teamet analyserar produkten och föreslår ändringar baserat på problem som de ser och problem som kan förutses. Förutom fördelen med att få en stor variation av röster involverade i diskussionen har detta även den ytterligare fördelen att alla teammedlemmar får en uppdatering om projektets framsteg och utformning.
Använd statisk testning om ditt team:
- Befinner sig tidigt i utvecklingsprocessen.
- Letar efter ett kostnadseffektivt sätt att hitta buggar.
- Har programvara som inte är redo att köras.
- Vill upptäcka fel tidigt i utvecklingen.
Have an account? Log In
Dynamisk testning
Till skillnad från statisk testning är dynamisk testning en typ av programvarutestning som kräver att kod körs. Naturligtvis innebär detta att utvecklingen måste ha kommit längre i produktionscykeln. Fördelen med att testa körbar kod är att QA-analytiker kan se hur programvaran fungerar när den körs i en verklig situation. Det är ett bra sätt att kontrollera programvarans funktionella beteende och andra saker, såsom CPU-användning. Dynamisk testning kontrollerar att det förväntade resultatet överensstämmer med resultatet i verkligheten. Huvudmålet med dynamisk testning är att verifiera att produkten uppfyller de design- och funktionskrav som fastställdes innan projektet började.
Vanligtvis ingår fyra steg när systemprogramvara testas dynamiskt, och dessa bör QA-analytiker känna till:
- Enhetstestning: När programvara enhetstestas delas den upp i minsta möjliga komponenter och testas individuellt. Genom att testa på detta sätt kan QA-analytiker känna sig trygga med att varje enskild del av programvaran fungerar som avsett. Om en bugg hittas blir den också enklare att åtgärda i detta utvecklingsskede, eftersom problemkoden snabbt kan isoleras. Vanligtvis börjar QA-teamet med enhetstester när det inleder dynamisk testning (även om detta steg ibland hanteras av utvecklingsteamet).
- Integrationstestning: När programvaran har brutits ned i sina komponenter och testats noggrant genom enhetstestning sätts den ihop i grupper och testas igen. Om enhetstestning ser till att varje enskild del fungerar korrekt, ser integrationstestning till att dessa delar kommunicerar med varandra som de ska. Tänk på det som monteringen av en bil. I varje monteringsfas testas bildelarna (motorn, pedalerna och ratten) individuellt. Därefter monteras bilen och testas som en helhet, för att säkerställa att gaspedalen kommunicerar korrekt med motorn (och att bromsarna också gör det!). Vill du säkerställa en sömlös integration mellan moduler? Våra rekommenderade verktyg för programvarutestning kan hjälpa dig att uppnå just det.
- Systemtestning: Systemtestning är den tredje nivån av programvarutestning. I detta skede testas en komplett och fullt integrerad programvara. Syftet med systemtestet är att säkerställa att programvaran uppfyller kraven, det vill säga gör det den är utformad för att göra.
- Acceptanstestning: Det sista steget i dynamisk testning. Syftet med acceptanstestet är återigen att testa mot kraven och säkerställa att programvaran är tillräckligt färdigställd för att uppnå en acceptabel standard. Det görs för att säkerställa att inga fel har slunkit igenom de andra teststegen. I praktiken är det en dubbelkontroll av säkerhetsskäl.
Stadier inom dynamisk testning
- Enhetstestning
- Integrationstestning
- Systemtestning
- Acceptanstestning
Snabbtips: verifierings- kontra valideringstestning
Verifieringstestning har alla de viktigaste egenskaperna hos statisk testning. Syftet med ett verifieringstest är att verifiera alla dokument och all kod, vilket uppnås genom samma metoder som används vid statisk testning
På liknande sätt har valideringstestning alla de viktigaste egenskaperna hos dynamisk testning. Ett verifieringstest fokuserar på att bekräfta att programvaran håller hög kvalitet, vilket är exakt vad system- och acceptanstesterna fokuserar på.
Nu när vi har gått igenom några viktiga koncept inom programvarutestning ska vi utforska de 9 typer av programvarutestning som alla QA-analytiker bör känna till.
9 typer av programvarutestning som alla QA-analytiker bör känna till:
- Svart låda
- Vit låda
- Grå låda
- Automatiserad
- Enhet
- Regression
- Utforskande
- Funktionstestning
- Användbarhetstestning
1. Testning med svart låda
Testning med svart låda är en strategi för programvarutestning där utformningen av det programvarusystem som testas är okänd för testaren.
Kommer du ihåg scenen i slutet av Pulp Fiction, där Samuel Jackson öppnar portföljen och hans ansikte börjar lysa? Som publik vet vi vad portföljen betyder och representerar i filmens sammanhang, men vi får aldrig veta vad som finns inuti. En testare som arbetar med svart låda är som en person i publiken: hen vet vad saken (oavsett om det är en portfölj eller systemprogramvara) ska göra, men inte vad den består av.

En testare som ansvarar för svartlådetestning av ett tidsspårningsprogram öppnar programmet utan kännedom om programvarans interna utformning och provar de olika funktionerna och menyerna för att säkerställa att de fungerar som förväntat. Anledningen till att använda svartlådetestning är att testaren, utan ingående kunskap om programvarans utformning, närmar sig programvaran med förväntningar som liknar slutanvändarens.
Några fördelar med svartlådetestning är:
- Testare behöver inte ha särskilt stora kunskaper i programmeringsspråk eftersom testaren använder programvaran ur en användares perspektiv.
- Ger en opartisk granskning av programvaran eftersom programvarutestet utförs av QA-teamet i stället för programvaruutvecklarna.
- Testarna behöver inte vara insatta i utvecklingen av programvarusystemet, vilket innebär att det krävs mycket kort förberedelsetid innan testerna kan genomföras.
Relaterad läsning: 10 bästa verktygen för svartlådetestning
2. Testning med vit låda
Vid vitlådetestning har QA-medlemmen full förståelse för den interna strukturen och utformningen av programvaran som testas. Hen genomför testet som en inspektör och ser till att varje del av programmet körs korrekt. Vitlådetestning kallas ibland för testning med genomskinlig låda eftersom testaren observerar interaktionerna mellan enheter medan programvaran testas. Till skillnad från vid svartlådetestning är en vitlådetestare inte alls lika fokuserad på användarupplevelsen.
Några fördelar med vitlådetestning är:
- Tester kan genomföras i tidiga utvecklingsstadier. Det grafiska användargränssnittet (GUI) behöver inte vara fullt fungerande.
- Testerna är mer grundliga och genomtänkta än svartlådtesterna.
I Pulp Fiction-exemplet är vitlådetestaren Tim Roths rollfigur, som tittar direkt på det som finns i portföljen.

3. Testning med grå låda
Vid grålådetestning har testaren viss kunskap om programvarans interna struktur och utformning (vit låda), men testar fortfarande ur en slutanvändares perspektiv (svart låda). Så föddes grålådetestning. Vid grålådetestning utformas testet genom att man granskar programvarans interna struktur, medan själva testet genomförs med hjälp av användargränssnittet.
Om det här återigen hade varit den berömda scenen i Pulp Fiction skulle grålådetestaren varken vara publiken eller Tim Roth. Den här gången är testaren Quentin Tarintino själv.
4. Automatiserad testning
Automatiserade tester använder programvara för att utföra uppgifter utan manuella instruktioner från en testare.
Vid manuell testning skriver testaren den kod som ska köras eller planerar den programvaruväg som ska kontrolleras för att se om den fungerar korrekt. Automatiserade tester tar hand om sådant åt testaren. Här är en kort lista över automatiserade programvaru- och QA-verktyg som QA-analytiker bör känna till:
För en mer djupgående granskning av verktyg för automatiserad testning kan du läsa listan över de bästa verktygen för automatiserad testning som du bör använda.
5. Enhetstestning
Verktyg för enhetstestning säkerställer att varje enskild del av programvaran fungerar korrekt. Det är oerhört viktigt att enhetstestningen genomförs korrekt, annars drabbas utvecklingsteamet av ett stort bakslag när de senare upptäcker att en viktig del av programvaran inte fungerar.
6. Regressionstestning
Verktyg för regressionstestning kör gamla tester på nya versioner för att säkerställa att programvaran fortfarande fungerar som avsett. Regressionstester skyddar utvecklare mot latenta effekter genom att säkerställa att en ändring i programvaran vid punkt A inte av misstag har förstört något långt borta vid punkt D.
För en QA-analytiker bör två steg framåt och ett steg bakåt inte ses som något negativt. Genom att ta ett steg bakåt då och då säkerställer du att du inte riskerar att senare behöva ta femtio steg bakåt.
7. Explorativ testning
Explorativ testning är testning för personer som inte tycker om att planera. I de flesta andra situationer planeras testfallet noggrant innan det genomförs. Så är det inte här. När en testare utför ett explorativt test utforskar hen programvaran utan någon fördefinierad plan med hjälp av specialiserade verktyg för explorativ testning.
Fördelen med explorativ testning är att testaren kan anpassa sig efter sina upptäckter direkt, utan att behöva skriva ett nytt testfall. Explorativ testning möjliggör också samarbete, teoriutveckling och gemensamt arbete direkt på plats.
I takt med att den agila utvecklingsteorin har blivit allt mer framträdande har även explorativ testning blivit det. Genom att låta QA-testare använda sin intuition upptäcks många intressanta buggar som ett traditionellt testgenomförande kanske inte hade letat efter.
Varning: explorativ testning kan kräva stor kreativitet.

More Articles
8. Funktionstestning
Funktionstestning genomförs för att säkerställa att systemprogramvaran motsvarar projektets krav innan utvecklingen påbörjades.
Programvarutestaren kontrollerar att indata motsvarar det förväntade resultatet. Den genomförs under ett av de sista teststegen, antingen som systemtestning eller acceptanstestning, och är uteslutande en form av svartlådetestning eftersom den inte bryr sig om hur programvaran fungerar, så länge den fungerar.
9. Användbarhetstestning
Användbarhetstestare säkerställer att designvalen är funktionella och samtidigt intuitiva.
Om du förutser att många användare av programvaran vill säkerhetskopiera sina dokument varje halvtimme är det bäst att placera säkerhetskopieringsfunktionen på en lättillgänglig plats i stället för att gömma den bakom fyra undermenyer.
Vid många tillfällen har programvara utvecklats som fungerar felfritt och fyller ett viktigt behov på marknaden, men som är helt omöjlig att navigera i ur användarens perspektiv. Detta kan förklaras av bristande användbarhetstestning under programvarutestfasen.
I slutändan blir det svårt att hitta en marknad för programvara, oavsett hur tekniskt bra den är, om användarna inte tycker om att använda den.
Vill du veta mer?
Programvarutestningsbranschen förändras ständigt, och QA-analytiker behöver hålla sig uppdaterade om aktuella trender. Det finns oändligt många resurser om programvarutestning, bland annat poddar, böcker, nyhetsbrev och mycket mer.
Prenumerera på The CTO Clubs nyhetsbrev för produktuppdateringar, verktygsrecensioner och fler resurssammanställningar.




