Sådan sikrer du passende test med testdesignteknikker
Er du udvikler eller tester, og sidder du på et projekt, hvor I har svært at finde de gode testcases og at sikre jer, at de testcases, I vælger, også har en passende dækning? I denne artikel vil jeg give en introduktion til, hvordan testdesignteknikker kan hjælpe jer med netop dette.
Hvad er “dækning”?
“Dækning” siger noget om, hvor godt de forskellige aspekter af et system er testet. Testdækning måler, hvor mange af systemets funktioner, moduler, eller kodelinjer der er blevet testet. En god testdækning betyder, at I kan øge sandsynligheden for at finde fejl eller mangler i systemet og dermed opnå en større tillid til systemets pålidelighed og funktionalitet.
Men en høj testdækning er ikke nødvendigvis lig med en god testdækning, og flere testcases er ikke altid bedre. For at finde ud af, hvordan I skal teste jeres system, bør I starte med at lave en risikoanalyse.
Start med en risikoanalyse
Risikoanalysen har til formål at afdække risikoen for fejl i løsningen, så I kan målrette jeres test derefter.
Er risikoen lav, kan I måske nøjes med en uformel og mindre struktureret test.
Er risikoen høj, bør testen være grundig. Dette betyder ikke, at I blot skal have flere testcases. Flere testcases sikrer ikke automatisk, at testen bliver bedre. I stedet bør I gå systematisk til værks og bruge testdesignteknikker til at udlede jeres testcases. Testdesignteknikker hjælper med at sikre, at alle relevante funktioner, scenarier og grænsetilfælde dækkes uden at spilde tid og ressourcer på unødvendige testcases.
Hvad er en testdesignteknik?
En testdesignteknik kan beskrives som “en systematisk tilgang til at identificere og udvælge testcases, så alle vigtige scenarier og grænsetilfælde dækkes”.
Teknikkerne hjælper dig samtidig med at balancere antallet af testcases, da I ved at bruge teknikkerne til at udvælge jeres testcases samtidig tager et aktivt valg, om hvilken dækning I ønsker.
Teknikkerne kan ofte bruges til at opnå en grundig test med et beskedent antal testcases. I opnår dermed en mere effektiv test, da I ikke spilder tiden med unødvendigt mange testcases, der måske ikke engang tester det vigtigste.
De mest anvendte testdesignteknikker
Der er forskellige testdesignteknikker til rådighed, og valget afhænger af den specifikke testopgave og kontekst.
Nogle af de mest anvendte testdesignteknikker er:
Ækvivalenspartitionering (“Equivalence Partitioning”):
Denne teknik deler inputområdet i forskellige ækvivalensklasser/grupper, hvor elementerne i hver klasse forventes at opføre sig ens. Du vælger så en repræsentativ værdi fra hver klasse til din(e) test(s). Det reducerer antallet af testcases, der skal udføres, samtidig med at alle relevante scenarier dækkes. Et eksempel kan være “køb af en busbillet”, hvor du kun tester med én værdi for hver af ækvivalensklasserne “barn”, “voksen” og “pensionist”.
Grænseværdianalyse (“Boundary Value Analysis”):
Denne teknik fokuserer på at teste inputdata på grænserne for ækvivalensklasserne. Fejl opleves oftest ved disse grænser, og ved at teste grænseværdierne kan du afsløre potentielle problemer.
Hvis eksempelvis alle i aldersgruppen 16-66 år regnes som voksne, skal du her teste værdierne 15, 16, 66 og 67 for at dække grænserne mellem ækvivalensklasserne og sikre, at systemet prissætter billetterne korrekt.
Beslutningstabel (“Decision Table Testing”):
Beslutningstabel er en testdesignteknik, der bruges til at teste forskellige kombinationer af logiske betingelser og handlinger. I en beslutningstabel repræsenteres betingelser og handlinger som rækker, mens hver kolonne repræsenterer en specifik kombination af betingelser. Ved at teste hver kombination kan du sikre, at systemet reagerer korrekt i forskellige scenarier. Teknikken er særligt god til test af komplekse forretningsregler.
Herunder ses et simpelt eksempel på en beslutningstabel:

Tilstandsovergangstest (“State Transition Testing”):
Tilstandsovergangstest er en testdesignteknik, der fokuserer på at teste overgange mellem forskellige tilstande i et system eller en applikation. Du tager udgangspunkt i et tilstandsovergangsdiagram, der viser systemets tilstande og overgangene imellem dem.
Tænk f.eks. på fartpiloten i en bil. Den kan have tilstandene: slukket, standby eller aktiv. Et tilstandsovergangsdiagram kan systematisk kortlægge overgangene mellem disse tilstande og identificere de ugyldige overgange. Dermed kan du udlede dine testcases og sikre, at fartpiloten altid transitionerer korrekt fra én tilstand til en anden. Afhængigt af hvor grundig testen skal være, kan du nøjes med at teste de enkelte overgange, f.eks. fra standby til aktiv, eller du kan teste kombinationer af overgange, f.eks. standby -> aktiv -> standby -> slukket.
Datakombinationstest (“Data Combination Testing”):
Datakombinationstest er en testdesignteknik, der involverer test af forskellige kombinationer af inputdata for at afsløre fejl og problemer relateret til interaktionen mellem disse data. Her tager du udgangspunkt i ækvivalensklasserne og tegner et træ til at skabe overblik over de mulige kombinationer. Ved at identificere relevante kombinationer og teste dem kan du sikre, at systemet håndterer forskellige datakombinationer korrekt. Du kan vælge forskellige dækningsgrader, der hjælper med at udvælge de mest hensigtsmæssige kombinationer, afhængigt af hvor grundig en dækning du ønsker.
Du kan måske forestille dig et system, der bruges til bestilling af pakkelabels, og hvor du ønsker at teste kombinationer af vægt, dimensioner på pakken og destinationsland.
Nedenfor vises et simpelt eksempel på et klassifikationstræ for bestilling af pakkelabels. Testcases angives i rækkerne og skal tolkes således, at du i testcase 1 skal kombinere en pakke med en vægt på mindre end 500g med en destination i Norden og samlede mål på mindre end 90 cm.

Hvilken testdesignteknik skal I så vælge?
Hvilken testdesignteknik, I skal vælge, afhænger af flere faktorer såsom risiko, kompetencer og ikke mindst grundlaget for testen (systemspecifikationer, krav m.m.), men i første omgang begrænses valget af testdesignteknik til, hvilken teknik der passer til det, I ønsker at teste. Teknikken tilstandsovergangstest giver eksempelvis kun mening i forhold til test af processerne i et system der kan skifte mellem flere tilstande.
Så første skridt til at bruge testdesignteknikkerne er at lære en god håndfuld teknikker at kende, så I har en teknik til de fleste situationer. For den givne kontekst, skal I tage stilling til risikoen. Er risikoen lav, er det måske slet ikke nødvendigt med test designteknikker. Er risikoen er høj, bør I finde ud af hvilke af teknikker der kan bruges og vælge en eller flere af disse teknikker.
I vil af og til komme ud for at du ikke har den nødvendige testbasis eller med andre ord, det nødvendige grundlag til at bruge dine teknikker. Lad os tage et eksempel: for at bruge teknikken tilstandsovergangstest, har I brug for et tilstandsovergangsdiagram. Hvis et sådant diagram ikke allerede findes, kan det være en god anledning til at få tegnet diagrammet ud fra den eksisterende testbasis. Diagrammet bør reviewes af de relevante interessenter, for om det korrekt beskriver den forventede systemopførsel. Sådanne diagrammer/modeller af systemet er med til at sikre en fælles forståelse for, hvordan systemet skal fungere, og medvirker til at sikre at I ikke blot får lavet nogle gode testcases, men også at I får kodet systemet rigtigt i første omgang.
Har du spørgsmål eller kommentarer til artiklen, er du velkommen til at kontakte vores senior testkonsulent Daisy Fischlein Steffensen på daisy@key2quality.dk.
Hvis du vil lære mere om risikoanalyse og anvendelse af ovenstående testdesignteknikker, så se nærmere på nogle af vores kurser her: Gå til kursussiden.
Du er altid velkommen til at kontakte både Daisy og vores andre undervisere, hvis du er i tvivl om, hvilket kursus der er det rigtige for dig. Vi tilbyder også skræddersyede kurser, der er tilpasset dit og dine medkursisters niveau, kontekst og behov.
Relaterede blogindlæg:
Vi støtter Børnetelefonen
”Traditionen tro” donerer vi hvert år 2% af vores overskud til et velgørende formål. Det er medarbejderne i Key2Quality, der i fællesskab beslutter, hvilken god sag der skal have en del af virksomhedens overskud. Sidste år donerede vi til Landsforeningen Autisme, og i år har vi valgt at støtte Børnetelefonen.
En lille arbejdsplads med stor rummelighed
Lone er vores blæksprutte og hyggetante. Hun er altid glad og smilende, når hun møder ind på kontoret. – En rigtig humørspreder, som sørger for, at alle har det godt, og at det hele ikke bliver for alvorligt. Og så er hun lige så passioneret omkring test som alle os andre. Eller det har hun i hvert fald været. Udadtil er Lone en rigtig K2Q’er. Men Lone ikke er ansat under helt de samme forudsætninger som os andre, da hun er ansat i en fleksstilling.
Key2Quality hjælper uddannelsesinstitutioner på vej med test
Hos Key2Quality vil vi gerne hjælpe de uddannelsesinstitutioner på vej, som viser interesse for test og overvejer at oprette det som fag. Derfor var vi glade for at få muligheden for at afholde et seminar om test for AspIT – en IT-uddannelse for unge og voksne med ASF (autismespektrum-forstyrrelse).
Key2Quality donerer 15.000 kr. til Landsforeningen Autisme
Glædelig jul til kunder, samarbejdspartnere og alle jer andre! I stedet for at køre rundt med julegaver til vores kunders næsten tomme kontorer, har vi i år valgt at donere 15.000 kr. til Landsforeningen Autisme. Det er 2% af vores første leveårs overskud samt lidt ekstra, som vi putter oveni…