Kodtäckning

Kodtäckning  är ett mått som används vid mjukvarutestning . Den visar procentandelen av källkoden för programmet som kördes under testprocessen.

Kodtäckning var en av de första teknikerna som uppfanns för systematisk mjukvarutestning (särskilt white box-testning ). Det första omnämnandet av kodtäckning i publikationer dök upp 1963 [1] .

Kriterier

Det finns flera olika sätt att mäta täckning, de viktigaste är:

För program med specifika säkerhetskrav är det ofta nödvändigt att visa att tester uppnår 100 % täckning för ett av kriterierna. Några av de angivna täckningskriterierna är relaterade; t.ex. omfattar vägtäckning både tillståndstäckning och uppgiftstäckning. Uttalandets täckning inkluderar inte tillståndstäckning, eftersom detta C -kodavsnitt visar :

printf ( "det här är" ); if ( stapel < 1 ) { printf ( "inte" ); } printf ( "ett positivt heltal" );

Om här bar = −1kommer operatörstäckningen att vara komplett, men villkorstäckningen inte, eftersom fallet med bristande efterlevnad av villkoret i if-satsen inte täcks (och utdata kommer att förvrängas för positiva tal). Fullständig vägtäckning är vanligtvis inte möjlig. Ett kodfragment som har n villkor innehåller sökvägar; loopkonstruktionen genererar ett oändligt antal vägar. Vissa sökvägar i programmet kanske inte nås på grund av att det inte fanns några sökvägar i testdatan som kunde leda till exekvering av dessa sökvägar. Det finns ingen universell algoritm som löser problemet med oåtkomliga vägar (denna algoritm kan användas för att lösa stoppproblemet ).

I praktiken, för att uppnå vägtäckning, används följande tillvägagångssätt: vägklasser särskiljs (till exempel kan vägar som skiljer sig endast i antal iterationer i samma cykel tilldelas en klass), 100 % täckning uppnås om alla vägklasser täcks (en klass anses täckt om minst en väg från den är täckt).

Praktisk tillämpning

Vanligtvis tillhandahålls källkoden med tester som körs regelbundet. Den resulterande rapporten analyseras för att identifiera de oexekverade områdena i koden, testsviten uppdateras och tester skrivs för avslöjade områden. Målet är att ha en regressionstestsvit som noggrant kontrollerar all källkod.

Kodtäckning uttrycks vanligtvis i procent. Till exempel, "vi testade 67 % av koden." Innebörden av denna fras beror på vilket kriterium som användes. Till exempel är 67 % täckning av vägen bättre än 67 % täckning av utlåtanden. Frågan om förhållandet mellan värdet av kodtäckning och kvaliteten på testsetet är ännu inte helt löst.

Se även

Anteckningar

  1. Joan C. Miller, Clifford J. Maloney. Systematisk felanalys av digitala datorprogram  (engelska)  // Communications of the ACM  : journal. - New York, NY, USA: Association for Computing Machinery , 1963. - Februari ( vol. 6 , nr 2 ). - S. 58-63 . — ISSN 0001-0782 . - doi : 10.1145/366246.366248 .

Länkar