Skip to main content

Programvarutestning är ett hantverk. En programvarutestare ska, liksom en hantverkare, 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 används för varje typ, 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 har gjort det med hjälp av programvarutestare som outtröttligt arbetat 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 spelar roll. 

  1. Kundnöjdhet: När man utvecklar ett projekt är det lätt att gå vilse i kodens snår och glömma att användaren också behöver vara nöjd med hur programvaran fungerar. QA-analytiker och andra QA-medlemmar får ta ansvar för den rollen. 
  2. Produktkvalitet: Varje yrke där ett team eller en individ skapar något från grunden kräver ett annat team som kan upptäcka deras misstag. Författare behöver redaktörer. Filmregissörer behöver också redaktörer. Programvaruutvecklare behöver inga redaktörer, men de behöver ett QA-team som kan bidra med ett objektivt perspektiv och upptäcka eventuella fel. 
  3. Säkerhet: För varje dag som går verkar den här punkten bli allt viktigare. Kunder vill kunna 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 har det förtroendet. 

Metoder för programvarutestning

Alla typer av programvarutestningstekniker 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 ska jag förklara skillnaden mellan dessa två metoder och var i programvaruutvecklingscykeln de kommer in i bilden. 

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

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 genomfö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: Koden 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 koden körs.
  • Kostnadseffektiv.
  • Hjälpsam 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 dokument för programvarudesign) eller programmets källkod. Här är några statiska testtekniker som varje 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 genomförs för att kontrollera att de dokumenterade buggarna har åtgärdats. 

I de flesta fall är statiska testgranskningar användbara eftersom hela QA-teamet analyserar produkten och föreslår ändringar baserat på problem de ser och problem som kan förutses. Förutom fördelen med att få en mängd olika röster involverade i diskussionen innebär detta också 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.

Get regular tech leadership wisdom for delivering better software and systems.

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, exempelvis 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, som QA-analytiker bör 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 är den dessutom lättare 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 teststeg 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 alltså säkerställer att varje enskild del fungerar korrekt, säkerställer integrationstestning att dessa delar kommunicerar med varandra som de ska. Tänk på det som monteringen av en bil. I varje monteringssteg 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 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 har utformats för att göra. 
  • Acceptanstestning: Det sista steget i dynamisk testning. Vid acceptanstestningen testas programvaran återigen mot kraven för att säkerställa att den är färdigställd enligt en godtagbar standard. Detta görs för att säkerställa att inga fel har slunkit igenom de andra teststegen. I grunden handlar det om en extra kontroll för säkerhets skull. 

Stadier i dynamisk testning

  1. Enhetstestning
  2. Integrationstestning
  3. Systemtestning
  4. Acceptanstestning

Snabbtips: Verifiering kontra valideringstestning 

Verifieringstestning har alla de viktigaste kännetecknen för statisk testning. Syftet med ett verifieringstest är att verifiera alla dokument och all kod, och detta uppnås genom samma metoder som används vid statisk testning

På motsvarande sätt har valideringstestning alla de viktigaste kännetecknen för 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 begrepp inom programvarutestning ska vi utforska de nio 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:

  1. Svart låda
  2. Vit låda
  3. Grå låda 
  4. Automatiserad 
  5. Enhet
  6. Regression
  7. Utforskande
  8. Funktionstestning
  9. Användbarhetstestning

1. Svartlådetestning

Svartlådetestning är en programvarutestningsstrategi där testaren inte känner till utformningen av det programvarusystem som testas.

Kommer du ihåg scenen i slutet av Pulp Fiction, där Samuel Jackson öppnar portföljen och hans ansikte lyses upp? Som publik vet vi vad portföljen betyder och representerar i filmens sammanhang, men vi får aldrig veta vad som finns inuti. En svartlådetestare är som en person i publiken som vet vad saken (oavsett om det är en portfölj eller programvara) ska göra, men inte vad den är gjord av.

Foto av svartlådetestning, typer av programvarutestning

En testare som ansvarar för svartlådetestning av ett tidsspårningsprogram öppnar programmet utan kunskap om programvarans interna utformning och provar de olika funktionerna och menyerna för att se till att de fungerar som förväntat. Anledningen till svartlådetestning är att testaren, utan ingående kunskap om programvarans utformning, närmar sig programvaran med ungefär samma förväntningar som slutanvändaren. 

Några fördelar med svartlådetestning är:

  • Testare behöver inte ha särskilt mycket kunskap om 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 lite förberedelsetid innan testerna kan utföras.

Relaterad läsning: 10 bästa verktygen för svartlådetestning

2. Vitlådetestning

Vid vitlådetestning har QA-medlemmen full förståelse för den interna strukturen och utformningen av programvaran som testas. Testaren närmar sig testet som en inspektör och ser till att varje del av programmet körs korrekt. Vitlådetestning kallas ibland 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 kö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ådetester.

I Pulp Fiction-exemplet är vitlådetestaren Tim Roths rollfigur, som tittar direkt på det som finns inuti portföljen. 

3. Grålådetestning

Vid grålådetestning har testaren viss kunskap om programvarans interna struktur och utformning (vit låda), men testar fortfarande ur slutanvändarens perspektiv (svart låda). På så sätt föddes grålådetestning. Vid grålådetestning utformas testet genom att man granskar programvarans interna struktur, medan själva testet utförs med hjälp av användargränssnittet.

Om detta å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 Tarantino 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 programvarusökvä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 automatiserad programvara och QA-verktyg som QA-analytiker bör känna till:

För en mer ingå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 på rätt sätt, annars drabbas utvecklingsteamet av ett stort bakslag när de senare inser att en viktig del av programvaran inte fungerar. 

6. Regressionstestning

Verktyg för regressionstestning kör gamla tester på nya byggen 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 då och då ta ett steg tillbaka säkerställer du att du inte senare står inför att behöva ta femtio steg tillbaka.

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 de 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 till sina upptäckter direkt, utan att behöva skriva ett nytt testfall. Explorativ testning möjliggör också samarbete, teoriutveckling och gemensamt arbete i realtid.

I takt med att den agila utvecklingsmetoden har blivit 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 en hel del kreativitet. 

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 vid 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 men 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 ur användarens perspektiv är helt omöjlig att navigera i. Detta kan förklaras av brist på användbarhetstestning under testfasen av programvaran.

I slutändan är 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 ha 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, inklusive podcastavsnitt, böcker, nyhetsbrev och mycket mer.

Prenumerera på The CTO Clubs nyhetsbrev för produktuppdateringar, verktygsrecensioner och fler sammanställningar av resurser.