Hvad er softwaretest?

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Denne omfattende guide gennemgår softwaretest og dækker vigtige begreber og praktiske værktøjer for både begyndere og eksperter. Opdag forskellene mellem manuel og automatiseret testning, funktionel og ikke-funktionel testning, og lær, hvordan du navigerer i softwaretestens livscyklus.

Kvalitetssikring bliver stadig mere populært. Eksperter anslår, at antallet af testjob i USA alene vil stige med 25 % i løbet af det næste årti. Hvis det interesserer dig, spekulerer du måske på, hvor du skal begynde at lære om softwaretest.

I denne artikel besvarer jeg spørgsmål, der kan hjælpe dig med at komme i gang med softwaretest. Jeg gennemgår, hvad softwaretest er, de vigtigste testkoncepter samt nogle softwaretestværktøjer, du kan overveje. 

Softwaretest forklaret

Processen, der består af alle livscyklusaktiviteter, både statiske og dynamiske, og som vedrører planlægning, forberedelse og evaluering af en komponent eller et system samt relaterede arbejdsprodukter for at fastslå, at de opfylder specificerede krav, demonstrere, at de er egnede til formålet, og opdage fejl.

ISTQB's ordliste

Softwaretest spiller en vigtig rolle i softwareudviklingsprocessen, da den validerer, at softwareapplikationen fungerer som tilsigtet og opfylder slutbrugernes krav og forventninger.

Målet er at identificere fejl, fejlagtige funktioner og uoverensstemmelser i softwareapplikationen, før den udgives til offentligheden. Testning indebærer, at softwaren køres under forskellige betingelser, konfigurationer og scenarier for at sikre, at den fungerer korrekt og effektivt.

Hvis du er nysgerrig efter, hvordan du kommer i gang inden for softwaretest, er her en liste over almindelige spørgsmål til QA-jobsamtaler (og svar!).

Softwaretestens livscyklus

Softwaretestens livscyklus (STLC) er den proces, som softwaretestere følger for at sikre, at applikationen under test opfylder de specificerede kvalitetsstandarder og krav. STLC består typisk af flere faser, der er designet til at sikre, at softwareapplikationen testes grundigt og opfylder det ønskede kvalitetsniveau, før den udgives til slutbrugerne. Følgende er faserne i softwaretestens livscyklus:

Kravsanalyse

I denne fase analyserer softwaretesterne kravene og specifikationerne. De identificerer de funktionelle og ikke-funktionelle krav, forstår softwareapplikationens formål og målgruppe og udvikler testtilfælde og scenarier i overensstemmelse hermed.

Testplanlægning

I denne fase identificerer testteamet testens omfang, testtilgangen og de ressourcer, der kræves til testen. Testplanen identificerer også de risici og begrænsninger, der er forbundet med testprocessen, og beskriver testens tidsplan.

Testdesign

I denne fase designer testteamet testtilfælde og scenarier baseret på kravene og specifikationerne. De identificerer også de testdata, der kræves til testen, og udvikler testskripter, som automatiserer testprocessen.

Testudførelse

Testerne udfører de testtilfælde og scenarier, der blev designet i den foregående fase. Testresultaterne dokumenteres, og eventuelle fejl eller fejlagtige funktioner, der findes i softwareapplikationen, rapporteres.

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

Have an account? Log In

Testrapportering

I denne fase udarbejder testteamet en rapport med testresultaterne og de fejl, der blev identificeret under testen. Rapporten kan indeholde deres anbefalinger til løsning af fejlene og forbedring af softwareapplikationens overordnede kvalitet.

Testafslutning

Det er den sidste fase, hvor testteamet evaluerer testprocessen og identificerer områder, der kan forbedres. De udarbejder også en testafslutningsrapport, der opsummerer testprocessen og testresultaterne.

Softwaretestens livscyklus er en kontinuerlig proces, der kræver samarbejde mellem testteamet og udviklingsteamet for at sikre, at softwareapplikationen opfylder det ønskede niveau af kvalitet og funktionalitet.

Typer af softwaretest 

Der findes forskellige typer softwaretest, som QA-team bruger, afhængigt af projektets kontekst og krav.

Vi kan skelne mellem manuel test og automatiseret test afhængigt af, hvordan testene udføres. Baseret på hvad der testes, kan vi skelne mellem funktionel og ikke-funktionel test. Afhængigt af de anvendte metoder har vi statisk og dynamisk test. Baseret på tilgangen kan vi identificere testtyperne hvid boks og sort boks. Vi har også eksplorativ test, røgtest og plausibilitetstest samt regressionstest. Alle disse testtyper kan overlappe hinanden, afhængigt af hvordan de bruges. 

Manuel test

Ved manuel test udføres testen af en person uden brug af automatiserede værktøjer eller scripts. Den kan være mere fejlbehæftet og tager normalt længere tid. 

Automatiseret test

Automatiseret test udføres af en maskine, der kører scripts, som er skrevet på forhånd. Det kræver større teknisk ekspertise, for eksempel kendskab til et programmeringssprog og automatiseringsværktøjer som Selenium. Det kan være dyrere end manuel test, og visse aspekter af testprocessen kan ikke automatiseres.

Funktionel test

Funktionel test betyder, at man verificerer hvad applikationen gør. Funktionel test kontrollerer softwareapplikationens funktioner og muligheder og sikrer, at de opfylder kravene og specifikationerne.

Ikke-funktionel test

I modsætning til funktionel test fokuserer ikke-funktionelle test på, hvordan appen opfører sig. Der findes flere undertyper af ikke-funktionel test, afhængigt af hvad testenes primære mål er. I denne artikel vil jeg kun gennemgå nogle få af dem. 

Ydelsestest: Måler softwareapplikationens svartid, gennemløb og skalerbarhed under forskellige belastningsforhold. Den kontrollerer softwareapplikationens evne til at håndtere flere brugere og transaktioner samtidigt og sikrer, at den fungerer effektivt under maksimal belastning.

Belastningstest: Simulerer belastninger fra brugere i den virkelige verden og udføres for at fastslå et systems adfærd under normale forhold og maksimal belastning. Den bruges til at identificere, om den infrastruktur, der anvendes til at hoste applikationen, er tilstrækkelig, og fortæller os, hvor mange samtidige brugere applikationen kan håndtere, samt hvilken skala applikationen kræver med hensyn til hardware, netværkskapacitet osv., så flere brugere kan få adgang til applikationen.

Stresstest: Omfatter test ud over den normale kapacitet, ofte helt til et brudpunkt, for at observere resultaterne. Målet er at sikre, at softwaren ikke går ned under forhold med utilstrækkelige computerressourcer (såsom hukommelse, diskplads, netværksanmodninger osv.).

Sikkerhedstest: Sikrer, at softwareapplikationen er sikker og beskyttet mod uautoriseret adgang. Sikkerhedstest kontrollerer, om der er sårbarheder og svagheder i softwareapplikationens sikkerhedsprotokoller, og identificerer potentielle sikkerhedstrusler.

Brugervenlighedstest: Bruges til at vurdere, om applikationen er brugervenlig. Den kontrollerer, hvor nemt det er for brugere at navigere i softwareapplikationen og udføre de tilsigtede funktioner effektivt.

Tilgængelighedstest: Tilgængelighedstest betragtes som en delmængde af brugervenlighedstest og udføres for at sikre, at den testede applikation kan bruges af personer med handicap.

Lokaliseringstest: En type softwaretest, hvor softwarens adfærd testes for en bestemt region, lokalitet eller kultur. Nogle egenskaber, der skal tages i betragtning under lokaliseringstest, er: tekst, der er korrekt oversat, valuta, måleenheder, tilladte specialtegn og formater for telefonnumre

Kompatibilitetstest: Tester, om applikationen er tilstrækkeligt velfungerende til at køre i forskellige browsere, databaser, hardwaremiljøer, operativsystemer, mobilenheder og netværk

Statisk test og dynamisk test

Statisk test er baseret på manuel undersøgelse af arbejdsprodukter (dvs. gennemgange) eller værktøjsbaseret evaluering af koden (tænk på kodegennemgange) eller andre arbejdsprodukter (dvs. statisk analyse). Den kan udføres på, men er ikke begrænset til, specifikationer, forretningskrav, acceptkriterier, kildekode, testplaner, testcases, testskripter og brugervejledninger. 

Dynamisk test er den faktiske udførelse af den software, der testes. Den kan være manuel eller automatiseret, eller

Test af hvid boks og test af sort boks 

White box-testning er en type testning, hvor testeren har kendskab til den interne struktur i applikationens kode, mens black box-testning udføres uden behov for at forstå kildekoden. Hver af disse testtyper anvender forskellige testteknikker, såsom ækvivalensklassedeling, grænseværdianalyse og beslutningstabel ved black box-testning samt sætningstestdækning og beslutningsdækning ved white box-testning.

Eksplorativ testning

Eksplorativ testning er en type erfaringsbaseret testning. Den indebærer minimal planlægning og maksimal testudførelse. 

Aktiviteterne for testdesign og testudførelse udføres parallelt, typisk uden formelt at dokumentere testbetingelserne, testtilfældene eller testskripterne.

Det er en nyttig tilgang, når der ikke findes specifikationer, eller når specifikationerne er mangelfulde, og tiden er meget begrænset. Den fungerer også godt som supplement til automatiseret testning.

Røgtest 

Røgtest, som nogle gange kaldes "build-verifikationstest" eller "tillidstest",  er en softwaretestproces, hvor testerne verificerer, om den implementerede build er stabil. Røgtestning er en validering af, at vi kan gå videre med yderligere softwaretestning. Den består af et minimalt antal test, der køres for hver build for at teste kritiske softwarefunktioner. 

Sundhedstest

Sundhedstest er en type softwaretest, der udføres efter leveringen af en softwarebuild med mindre kode- eller funktionsændringer for at bekræfte, at fejlene er blevet løst, og at der ikke er blevet introduceret nye problemer som følge af disse ændringer. Formålet er at bekræfte, at den foreslåede funktion fungerer omtrent som forventet.

Regressionstest

Regressionstest er en type softwaretest, hvor vi tester eksisterende funktionalitet igen for at validere, at den stadig fungerer korrekt efter ændringer eller opdateringer af softwareapplikationen. Regressionstest sikrer, at de nye ændringer eller opdateringer ikke har påvirket softwareapplikationens eksisterende funktionalitet.

Kompatibilitetstest

Kompatibilitetstest bruges til at sikre, at softwareapplikationen fungerer korrekt på tværs af forskellige platforme, enheder og browsere. Den kontrollerer, at softwareapplikationen er kompatibel med forskellige hardware- og softwarekonfigurationer

AI-genereret billede af arbejdsrobotter på en samlebåndslinje for at demonstrere, hvordan softwaretest fungerer.

Testniveauer

Softwaretest kan kategoriseres i forskellige niveauer baseret på testens omfang og formål. Følgende er de almindelige niveauer inden for softwaretest:

Enhedstest

Enhedstest er det første testniveau og fokuserer på at teste individuelle komponenter eller kodenheder isoleret. Enhedstest verificerer, at hver kodenhed fungerer som forventet og opfylder de angivne krav.

Integrationstest

Integrationstest fokuserer på at teste samspillet mellem forskellige moduler eller komponenter i softwareapplikationen. Integrationstest verificerer, at modulerne eller komponenterne fungerer sammen som tilsigtet og opfylder de angivne krav.

More Articles

Systemtest

Systemtest er det testniveau, hvor hele softwareapplikationen testes som et komplet system. Systemtest verificerer, at softwareapplikationen opfylder de angivne krav og fungerer som forventet i forskellige scenarier.

Brugeraccepttest

Accepttest er det testniveau, hvor softwareapplikationen testes fra slutbrugerens perspektiv. Accepttest verificerer, at softwareapplikationen opfylder slutbrugerens behov og krav og fungerer som forventet i brugermiljøet. Almindelige typer af brugeraccepttest er alfatest og betatest.

Hvert testniveau er vigtigt og tjener et specifikt formål i softwaretestprocessen. Der bør udføres test på hvert niveau for at sikre, at softwareapplikationen opfylder det ønskede niveau af kvalitet og funktionalitet og fungerer som forventet i forskellige scenarier. 

Principper for softwaretest

Der er syv hovedprincipper for testning, som defineret af ISTQB:

  1. Test viser tilstedeværelsen af fejl, ikke deres fravær: Du kan ikke garantere, at applikationen er fejlfri, blot fordi den er blevet testet. Efter testningen kan tilliden til produktet dog øges.
  2. Udtømmende testning er umulig: De fleste apps er utroligt komplekse, så det er umuligt at teste alle mulige kombinationer og variationer, især fordi tiden og ressourcerne til testning også er begrænsede.
  3. Tidlig testning: Jo tidligere fejl og mangler opdages i softwareudviklingens livscyklus, desto lettere er de at rette. Her gør Agile det rigtige, da testaktiviteterne begynder meget tidligt.
  4. Fejl samler sig: Det betyder, at områder, hvor der er fundet fejl, sandsynligvis vil have endnu flere fejl. Ifølge Pareto-princippet kan 80 % af fejlene findes i 20 % af funktionaliteten.
  5. Pesticidparadokset: Hvis de samme test køres gentagne gange uden at blive opdateret, vil de sandsynligvis ikke afsløre nye problemer. 
  6. Testning er kontekstafhængig: Applikationer testes forskelligt afhængigt af deres kontekst – du tester for eksempel en API anderledes end en brugergrænseflade, og webapplikationer testes anderledes end mobil- eller desktopapps.  
  7. Fejlslutningen om fravær af fejl: Kort sagt betyder det, at softwaren ikke nødvendigvis er nyttig for brugerne, blot fordi fejlene er blevet fundet og rettet.

Konklusion

Softwaretestning er et meget komplekst område, og der kan udføres mange forskellige typer test. Det er vigtigt at tilpasse din teststrategi baseret på konteksten for det softwareprodukt, der testes. Der findes uendeligt mange ressourcer om softwaretestning, herunder podcasts, bøger og meget mere.

Hvis du nød denne artikel, kan du tilmelde dig QA Leadens nyhedsbrev og være blandt de første til at høre om nye indlæg, der dækker testning og kvalitet.

Andreea Draniceanu
Hi there! My name is Andreea, I’m a software test engineer based in Romania. I’ve been in the software industry for over 10 years. Currently my main focus is UI test automation with C#, but I love exploring all QA-related areas 😊

You may also like