Kodedækningsvejledning: Filial, erklæring, beslutning, FSM

Indholdsfortegnelse:

Anonim

Hvad er kodedækning?

Kodedækning er et mål, der beskriver, i hvilken grad kildekoden til programmet er testet. Det er en form for test af hvide kasser, der finder de områder af programmet, der ikke udøves af et sæt testsager. Det opretter også nogle testsager for at øge dækningen og bestemme et kvantitativt mål for kodedækning.

I de fleste tilfælde indsamler kodedækningssystemet oplysninger om det kørende program. Det kombinerer også det med kildekodeoplysninger for at generere en rapport om testsuiteens kodedækning.

I denne vejledning lærer du-

  • Hvad er kodedækning?
  • Hvorfor bruge kodedækning?
  • Metoder til kodedækning
  • Erklæringens dækning
  • Beslutningsdækning
  • Filialdækning
  • Tilstandsdækning
  • Endelig maskindækning
  • Hvilken type kodedækning du skal vælge
  • Kodedækning vs. funktionel dækning
  • Kodedækningsværktøjer
  • Fordele og ulemper ved at bruge kodedækning

Hvorfor bruge kodedækning?

Her er nogle hovedårsager til at bruge kodedækning:

  • Det hjælper dig med at måle effektiviteten af ​​testimplementering
  • Det giver en kvantitativ måling.
  • Den definerer i hvilken grad kildekoden er testet.

Metoder til kodedækning

Følgende er vigtige kodedækningsmetoder

  • Erklæringens dækning
  • Beslutningsdækning
  • Filialdækning
  • Skift dækning
  • FSM-dækning

Erklæringens dækning

Statement Coverage er en testteknik i hvid boks, hvor alle de eksekverbare udsagn i kildekoden udføres mindst én gang. Det bruges til beregning af antallet af udsagn i kildekoden, der er blevet udført. Hovedformålet med Statement Coverage er at dække alle mulige stier, linjer og udsagn i kildekoden.

Erklæringsdækning bruges til at udlede scenarier baseret på strukturen for den testede kode.

I White Box Testing koncentrerer testeren sig om, hvordan softwaren fungerer. Med andre ord vil testeren koncentrere sig om den interne bearbejdning af kildekoden vedrørende kontroldiagrammer eller flowdiagrammer.

Generelt i enhver software, hvis vi ser på kildekoden, vil der være en bred vifte af elementer som operatører, funktioner, looping, ekstraordinære håndterere osv. Baseret på input til programmet, kan nogle af kodesætningerne muligvis ikke udføres . Målet med erklæringens dækning er at dække alle mulige stier, linjer og udsagn i koden.

Lad os forstå dette med et eksempel, hvordan man beregner sætningsdækning.

Scenarie til beregning af erklæringens dækning for den givne kildekode. Her tager vi to forskellige scenarier for at kontrollere procentdelen af ​​erklæringens dækning for hvert scenario.

Kildekode:

Udskriver (int a, int b) {------------ Printsum er en funktionint resultat = a + b;Hvis (resultat> 0)Udskriv ("Positivt", resultat)AndetUdskriv ("negativ", resultat)} ----------- Slut på kildekoden

Scenarie 1:

Hvis A = 3, B = 9

Sætningerne markeret med gul farve er dem, der udføres i henhold til scenariet

Antal udførte udsagn = 5, samlet antal udsagn = 7

Erklæringens dækning: 5/7 = 71%

Ligeledes vil vi se scenario 2,

Scenarie 2:

Hvis A = -3, B = -9

Sætningerne markeret med gul farve er dem, der udføres i henhold til scenariet.

Antal udførte udsagn = 6

Samlet antal udsagn = 7

Erklæringens dækning: 6/7 = 85%

Men generelt, hvis du ser, er alle udsagn dækket af 2. scenarie overvejes. Så vi kan konkludere, at den samlede erklæring dækning er 100%.

Hvad dækkes af erklæringens dækning?

  1. Ubrugte udsagn
  2. Dead Code
  3. Ubrugte grene
  4. Manglende udsagn

Beslutningsdækning

Beslutningsdækning er en testboks til hvid boks, der rapporterer de sande eller falske resultater for hvert boolsk udtryk for kildekoden. Målet med beslutningsdækningstestning er at dække og validere al tilgængelig kildekode ved at kontrollere og sikre, at hver gren af ​​alle mulige beslutningspunkter udføres mindst en gang.

I denne dækning kan udtryk nogle gange blive komplicerede. Derfor er det meget svært at opnå 100% dækning. Derfor er der mange forskellige metoder til rapportering af denne metric. Alle disse metoder fokuserer på at dække de vigtigste kombinationer. Det svarer meget til beslutningsdækning, men det giver bedre følsomhed over for kontrolflow.

Eksempel på beslutningsdækning

Overvej følgende kode-

Demo (int a) {Hvis (a> 5)a = a * 3Print (a)}

Scenarie 1:

Værdien af ​​a er 2

Koden fremhævet med gult udføres. Her er "Nej" resultatet af beslutningen Hvis (a> 5) er markeret.

Beslutningsdækning = 50%

Scenarie 2:

Værdien af ​​a er 6

Koden fremhævet med gult udføres. Her er "Ja" resultatet af beslutningen Hvis (a> 5) er markeret.

Beslutningsdækning = 50%

Test sag Værdi af A Produktion Beslutningsdækning
1 2 2 50%
2 6 18 50%

Filialdækning

Grenafdækning er en testmetode i den hvide boks, hvor hvert resultat fra et kodemodul (sætning eller løkke) testes. Formålet med filialdækning er at sikre, at alle beslutningsbetingelser fra hver filial udføres mindst én gang. Det hjælper med at måle brøker af uafhængige kodesegmenter og finde ud af sektioner, der ikke har nogen grene.

For eksempel, hvis resultaterne er binære, skal du teste både sande og falske resultater.

Formlen til beregning af filialdækning:

Eksempel på filialdækning

For at lære filialdækning, lad os overveje det samme eksempel, der blev brugt tidligere

Overvej følgende kode

Demo (int a) {Hvis (a> 5)a = a * 3Print (a)}

Filialdækning vil også overveje ubetinget gren

Test sag Værdi af A Produktion Beslutningsdækning Filialdækning
1 2 2 50% 33%
2 6 18 50% 67%

Fordele ved filialdækning:

Filialdækning Testning giver følgende fordele:

  • Giver dig mulighed for at validere - alle grene i koden
  • Hjælper dig med at sikre, at ingen forgrenede fører til unormalitet i programmets drift
  • Filialdækningsmetode fjerner problemer, der opstår på grund af testdækning for udsagnsdækning
  • Giver dig mulighed for at finde de områder, der ikke er testet med andre testmetoder
  • Det giver dig mulighed for at finde et kvantitativt mål for kodedækning
  • Grenafdækning ignorerer grene inde i de boolske udtryk

Tilstandsdækning

Betingelsesdækning eller ekspressionsdækning er en testmetode, der bruges til at teste og evaluere variabler eller underudtryk i den betingede erklæring. Målet med tilstandsdækning er at kontrollere individuelle resultater for hver logisk tilstand. Tilstandsdækning giver bedre følsomhed over for kontrolflowet end beslutningsdækning. I denne dækning betragtes kun udtryk med logiske operander.

For eksempel, hvis et udtryk har boolske operationer som AND, OR, XOR, hvilket indikerer samlede muligheder.

Tilstandsdækning giver ikke garanti for fuld beslutningsdækning.

Formlen til beregning af betingelsesdækning:

Eksempel:

Til ovenstående udtryk har vi 4 mulige kombinationer

  • TT
  • FF
  • TF
  • FT

Overvej følgende input

X = 3

Y = 4

(x

SAND

Betingelsesdækning er ¼ = 25%

A = 3

B = 4

(a> b)

FALSK

Endelig maskindækning

Endelig maskindækning er bestemt den mest komplekse type kodedækningsmetode. Dette skyldes, at det fungerer på designets opførsel. I denne dækningsmetode skal du kigge efter, hvor mange tidsspecifikke stater, der er besøgt, transit. Det kontrollerer også, hvor mange sekvenser der er inkluderet i en finite state-maskine.

Hvilken type kodedækning du skal vælge

Dette er bestemt det sværeste svar at give. For at vælge en dækningsmetode skal testeren kontrollere, at

  • kode under test har enkelt eller flere uopdagede defekter
  • omkostningerne ved den potentielle straf
  • omkostninger ved mistet omdømme
  • omkostninger ved mistet salg mv.

Jo højere sandsynligheden for, at mangler vil medføre dyre produktionsfejl, jo alvorligere er dækningsniveauet, du skal vælge.

Kodedækning vs. funktionel dækning

Kodedækning Funktionel dækning
Kodedækning fortæller dig, hvor godt kildekoden er blevet udøvet af din testbænk. Funktionel dækning måler, hvor godt funktionaliteten i designet er blevet dækket af din testbænk.
Brug aldrig en designspecifikation Brug designspecifikation
Udført af udviklere Udfærdiget af testere

Kodedækningsværktøjer

Her er en liste over vigtige kodedækningsværktøjer:

Værktøjsnavn Beskrivelse
Cobertura Det er et open source-dækningsværktøj. Det måler testdækning ved at instrumentere en kodebase og analysere, hvilke kodelinjer der udføres, og hvilke der ikke udføres, når testpakken kører.
Kløver Clover reducerer også testng-tiden ved kun at køre de tests, der dækker applikationskoden, som blev ændret siden den forrige version.
DevPartner DevPartner gør det muligt for udviklere at analysere Java-kode for kodekvalitet og kompleksitet.
Emma EMMA understøtter klasse-, metode-, linje- og basisblokdækning, aggregeret kildefil, klasse og metodeniveau.
Kalistick Kalistick er en tredjepartsapplikation, der analyserer koderne med forskellige perspektiver.
CoView og CoAnt Kodningssoftware er et kodedækningsværktøj til metrics, skabelse af mock-objekter, kodetestbarhed, sti & grendækning osv.
Bullseye til C ++ BulseyeCoverage er et kodedækningsværktøj til C ++ og C.
Ekkolod Sonar er et åbent kodedækningsværktøj, der hjælper dig med at styre kodekvaliteten.

Fordele ved at bruge kodedækning

  • Nyttig til at evaluere et kvantitativt mål for kodedækning
  • Det giver dig mulighed for at oprette ekstra testsager for at øge dækningen
  • Det giver dig mulighed for at finde de områder af et program, der ikke udøves af et sæt testsager

Ulemper ved at bruge kodedækning

  • Selv når en bestemt funktion ikke er implementeret i design, rapporterer kodedækning stadig 100% dækning.
  • Det er ikke muligt at afgøre, om vi testede alle mulige værdier for en funktion ved hjælp af kodedækning
  • Kodedækning fortæller heller ikke, hvor meget og hvor godt du har dækket din logik
  • I tilfælde af at den angivne funktion ikke er implementeret eller ikke er inkluderet i specifikationen, kan strukturbaserede teknikker ikke finde dette problem.

Resumé

  • Kodedækning er et mål, der beskriver, i hvilken grad kildekoden til programmet er testet
  • Det hjælper dig med at måle effektiviteten af ​​testimplementering
  • Fem kodedækningsmetoder er 1.) Erklæringens dækning 2.) Tilstandsdækning 3) Afdelingens dækning 4) Skift dækning 5) FSM-dækning
  • Erklæringsdækning involverer udførelse af alle eksekverbare udsagn i kildekoden mindst en gang
  • Beslutningsdækning rapporterer de sande eller falske resultater for hvert boolsk udtryk
  • I filialdækningen testes hvert resultat fra et kodemodul
  • Betinget vil afsløre, hvordan variablerne eller underudtrykkene i den betingede erklæring vurderes
  • Endelig maskindækning er bestemt den mest komplekse type kodedækningsmetode
  • For at vælge en dækningsmetode skal testeren kontrollere omkostningerne ved den potentielle straf, mistet omdømme, mistet salg osv.
  • Kodedækning fortæller dig, hvor godt kildekoden er blevet udøvet af din testbænk, mens funktionel dækning måler, hvor godt funktionaliteten i designet er blevet dækket
  • Cobertura, JTest, Clover, Emma, ​​Kalistick er få vigtige kodedækningsværktøjer
  • Kodedækning giver dig mulighed for at oprette ekstra testsager for at øge dækningen
  • Kodedækning hjælper dig ikke med at afgøre, om vi testede alle mulige værdier for en funktion