BLOG: Hvem vil købe en indboforsikring, hvor dækningen er ukendt? Det er der næppe mange, der vil. Men når det handler om dækningen af softwaretest bliver test-dækning til tider katastrofalt negligeret.
Lidt i lighed med indboforsikringen kan man spørge, hvem vil have en softwaretest, hvor dækningen er ukendt? Det er der vel ingen, der vil. Ikke desto mindre oplever jeg til tider i mit arbejde som testkonsulent, at testdækningen enten er ukendt eller fremstår som en noget diffus størrelse.
Testdækning er vigtig Testdækning kan ses som bindeleddet mellem den valgte og formulerede teststrategi og den faktisk udførte test.
I TMap (Test Management approach metoden) er dækning defineret som forholdet mellem det, som kan testes holdt op imod det, der testes med det givne test-sæt. ISTQB syllabussen beskriver dækning som:
"Graden, udtrykt som en procentdel, af aktivering af et specificeret dækningselement ud fra en sekvens af testcases".
Testdækning er forholdsvis nemt at forholde sig til, hvis man ser på test med kode-dækning for øje. Det vil sige, hvor mange procent af den skrevne kode man får aktiveret i ens test. Når man har et eksekveret sin test har man eksempelvis eksekveret 63 procent af den skrevne kode, og dermed har man en test-dækning på 63 procent.
Uklar dækning giver uklar test Jeg oplever ofte, at testens kvalitet ikke er baseret på testdækning, men udelukkende testernes individuelle evner til at finde fejl i softwaren. Når testfasen er mod sin slutning og resultatet af testen skal gøres op På den måde har man ikke et håndfast mål for kvaliteten af ens test. Her ender man ofte med målinger af testens kvalitet, der tager udgangspunkt i antallet af eksekverede testcases, samt hvor mange kritiske fejl, der er fundet.
Men helt ærligt. Når man tester finder man fejl, og jo mere man tester des flere fejl finder man. Men man ved ikke om man har fået minimeret risikoen for at der stadig eksisterer forretningskritiske fejl i softwaren, når man ikke kender testdækningen.
Synliggør din risiko Testdækning hænger sammen med den risikoprofil, man har valgt. Med indboforsikringen som eksempel kan man vælge nogle tilvalgsdækninger. Det kan eksempelvis være en glas-, og kummeforsikring, hvor glaspladen på din induktions-kogeø og kummen på toilettet også er dækket af din forsikring.
Hvor man i forsikringsverdenen taler om udvidelser af dækningen kan man i test-verden tale om et valg af test -teknikker, der tilsammen giver en samlet dækning. Test-teknikkerne er de gængse teknikker, hvor man eksempelvis kan dække beslutningspunkter, veje gennem systemet eller grænseværdier.
Fordelen ved at få dækningen frem i lyset er, at man kan se hvor stor en del af de samtlige mulige tests ens valg af testteknikker giver, som man rent faktisk har fået eksekveret. Opnår man en dækning på eksempelvis 57 procent kan man bruge dette tal som grundlag for, om man har testet tilstrækkeligt til at det er forsvarligt at frigive softwaren.
Eksekveringsdækning som du omtaler (hvor meget kode der eksekveres under afvikling af en test) er ikke det samme som testdækning og er et ikke særlig anvendeligt tal for ens testkvalitet. Problemet med eksekveringsdækning er at den kun fortæller hvilken koder der er afviklet, ikke hvilket koden man har testet gjorde som den skulle. f.eks. kan man opnå fuld eksekveringsdækning af en program del der dividere. Hvis vi giver den talene 6 og 3 som input og ikke tester at resultatet er 2 så er det jo lige fedt om vi har eksekveret kode. Selv hvis vi testede resultatet er det ikke sikkert vi rent faktisk har testet noget som helst. f.eks. vil inputene 1 og 1 være tæt på ubrugelige. Når metoden returnerer 1 er det så fordi den har regnet rigtigt eller fordi den fejlagtigt har returneret et af argumenterne? Hvis ikke man sikre at man har ækvivalensklassedækning og at man har test af resultaterne af den kode man afvikler kan eksekveringsdækning ikke bruges som kvalitetsmåling af testudførelsen. (Det er selvfølgelig bedre end slet intet. Kan man se at dele af et system ikke er eksekveret under test kan man trods alt se at den del ikke er testet, men det ændre ikke på at man ikke kan se hvor stor en del af den kode der er eksekveret der også er testet)
Rune Funch Søltoft skrev: Eksekveringsdækning som du omtaler (hvor meget kode der eksekveres under afvikling af en test) er ikke det samme som testdækning og er et ikke særlig anvendeligt tal for ens testkvalitet...
Du har ret med hensyn til din beskrivelse af eksekveringsdækning. Jeg har her udelukkende brugt den som eksempel på en dækningstype, hvor det er forholdsvis nemt at gøre op hvor mange linjer kode, man har berørt med sin test.
Søren Nielsen skrev: syllabussen = fordanskning af engelske "syllabus" som betyder pensum. Jeg bryder mig personligt ikke om det. Ordet du mangler er "pensum".
Jeg støder tit på det hos folk, som har taget mange certificeringer i ITIL, Cobit o.lign. Er det dig Christian?
Tak for rettelsen. Ordet pensum kunne jeg lige så godt have brugt.
Og nej, jeg har ikke tapetseret væggen med certificeringer.
Domæneviden står højt på ønskelisten, når virksomheder efterspørger testressourcer. Læs her hvilke andre kvalifikationer, der er efterspurgt ifølge 2010 World Quality Report
Hvem vil købe en indboforsikring, hvor dækningen er ukendt? Det er der næppe mange, der vil. Men når det handler om dækningen af softwaretest bliver test-dækning til tider katastrofalt negligeret.
Erhvervs- og Boligstyrelsen har ikke gjort softwaretest-arbejdet godt nok på hjemmesiden Boligforbedringer. Læs her hvilken simpel test-teknik, der kunne have sikret, at Søren, Jørgen og Alfons Åberg kunne sikre sig hver deres bid af puljen.
Her er syv vaner, der kan gøre dig til en bedre tester. Det er syv gode råd til, hvordan du som tester kan være med til at skabe et bedre slutprodukt i softwareudviklingsprocessen.
Christian Carlsen er testkonsulent i Sogeti. På Testbloggen skriver han om softwareudviklingens lyksagligheder og faldgrupper set fra en testers kontorstol.
Kan gratis sikkerhedssoftware virkelig beskytte din pc? Svaret er ja, hvis du vælger det rette produkt. Læs her en test af de mest pålidelige gratis sikkerhedsprogrammer.
Næsten 200 IBM-ansatte får med få timers varsel sidste arbejdsdag i dag. Ingen var orienteret forud for dagens massefyring, som effektueres øjeblikkeligt.
Flyselskabet SAS har brugt op mod trekvart milliarder kroner og seks år på at udskifte sit bookingsystem. Undervejs har der været flere projekt-udfordringer, som kulminerede en vinternat med en big bang-migrering.