Kodedækning

Kodedækning  er et mål, der bruges i softwaretest . Den viser procentdelen af ​​programmets kildekode , der blev udført under testprocessen.

Kodedækning var en af ​​de første teknikker, der blev opfundet til systematisk softwaretest (især white box-test ). Den første omtale af kodedækning i publikationer dukkede op i 1963 [1] .

Kriterier

Der er flere forskellige måder at måle dækning på, de vigtigste er:

For programmer med specifikke sikkerhedskrav er det ofte nødvendigt at påvise, at test opnår 100 % dækning for et af kriterierne. Nogle af de angivne dækningskriterier er relaterede; for eksempel omfatter stidækning både tilstandsdækning og opgørelsesdækning. Erklæringsdækning inkluderer ikke tilstandsdækning, da dette C -kodestykke viser :

printf ( "dette er" ); if ( bar < 1 ) { printf ( "ikke" ); } printf ( "et positivt heltal" );

Hvis her bar = −1, så vil operatørdækningen være fuldstændig, men betingelsesdækningen vil ikke, da tilfælde af manglende overholdelse af betingelsen i if-sætningen ikke er dækket (og outputtet vil blive forvrænget for positive tal). Fuldstændig stidækning er normalt ikke mulig. Et kodefragment, der har n betingelser, indeholder stier; loop-konstruktionen genererer et uendeligt antal stier. Nogle stier i programmet kan muligvis ikke nås på grund af det faktum, at der ikke var nogen stier i testdataene, der kunne føre til udførelse af disse stier. Der er ingen universel algoritme, der løser problemet med uopnåelige stier (denne algoritme kunne bruges til at løse stopproblemet ).

I praksis anvendes følgende tilgang for at opnå stidækning: stiklasser skelnes (for eksempel kan stier, der kun adskiller sig i antallet af iterationer i samme cyklus, tildeles én klasse), 100 % dækning opnås, hvis alle stiklasser er dækket (en klasse betragtes som dækket, hvis mindst én sti fra den er dækket).

Praktisk anvendelse

Typisk er kildekoden forsynet med test, der køres regelmæssigt. Den resulterende rapport analyseres for at identificere de ikke-udførte områder af koden, testpakken opdateres, og der skrives test for afdækkede områder. Målet er at have en regressionstestpakke, der grundigt tjekker al kildekode.

Kodedækning udtrykkes normalt som en procentdel. For eksempel, "vi testede 67 % af koden." Betydningen af ​​denne sætning afhænger af hvilket kriterium der blev brugt. For eksempel er 67 % stidækning bedre end 67 % erklæringsdækning. Spørgsmålet om forholdet mellem værdien af ​​kodedækning og kvaliteten af ​​testsættet er endnu ikke fuldt løst.

Se også

Noter

  1. Joan C. Miller, Clifford J. Maloney. Systematisk fejlanalyse af digitale computerprogrammer  (engelsk)  // Communications of the ACM  : journal. - New York, NY, USA: Association for Computing Machinery , 1963. - Februar ( vol. 6 , nr. 2 ). - S. 58-63 . — ISSN 0001-0782 . - doi : 10.1145/366246.366248 .

Links