Pokrytí kódu

Pokrytí kódu  je míra používaná při testování softwaru . Ukazuje procento zdrojového kódu programu, který byl spuštěn během procesu testování.

Pokrytí kódem bylo jednou z prvních technik vynalezených pro systematické testování softwaru (zejména testování bílé skříňky ). První zmínka o pokrytí kódem v publikacích se objevila v roce 1963 [1] .

Kritéria

Existuje několik různých způsobů měření pokrytí, hlavní jsou:

U programů se specifickými požadavky na zabezpečení je často nutné prokázat, že testy dosahují 100% pokrytí jednoho z kritérií. Některá z uvedených kritérií pokrytí spolu souvisí; například pokrytí trasy zahrnuje jak pokrytí podmínek, tak pokrytí prohlášení. Pokrytí výpisu nezahrnuje pokrytí stavu, jak ukazuje tento fragment kódu C :

printf ( "toto je" ); if ( bar < 1 ) { printf ( "ne" ); } printf ( "kladné celé číslo" );

Pokud zde bar = −1, pak pokrytí operátorem bude úplné, ale pokrytí podmínek nikoli, protože případ nesplnění podmínky v příkazu if není pokryt (a výstup bude zkreslen pro kladná čísla). Úplné pokrytí trasy obvykle není možné. Fragment kódu, který má n podmínek, obsahuje cesty; konstrukce smyčky generuje nekonečný počet cest. Některé cesty v programu nemusí být dostupné kvůli skutečnosti, že v testovacích datech nebyly žádné cesty, které by mohly vést k provedení těchto cest. Neexistuje žádný univerzální algoritmus, který by řešil problém nedosažitelných cest (tento algoritmus lze použít k vyřešení problému zastavení ).

V praxi se pro dosažení pokrytí cesty používá následující přístup: rozlišují se třídy cest (např. do jedné třídy lze přiřadit cesty, které se liší pouze počtem iterací ve stejném cyklu), 100% pokrytí je dosaženo, pokud všechny třídy cest jsou pokryty (třída se považuje za pokrytou, pokud je pokryta alespoň jedna cesta z ní).

Praktická aplikace

Zdrojový kód je obvykle opatřen testy, které jsou pravidelně spouštěny. Výsledná zpráva je analyzována, aby se identifikovaly nespuštěné oblasti kódu, testovací sada je aktualizována a testy jsou napsány pro nepokryté oblasti. Cílem je mít sadu regresních testů , která důkladně kontroluje veškerý zdrojový kód.

Pokrytí kódu se obvykle vyjadřuje v procentech. Například "otestovali jsme 67 % kódu." Význam této fráze závisí na použitém kritériu. Například 67% pokrytí trasy je lepší než 67% pokrytí výpisem. Otázka vztahu mezi hodnotou pokrytí kódem a kvalitou testovací sady není dosud zcela vyřešena.

Viz také

Poznámky

  1. Joan C. Miller, Clifford J. Maloney. Systematická analýza chyb digitálních počítačových programů  (anglicky)  // Communications of the ACM  : journal. - New York, NY, USA: Association for Computing Machinery , 1963. - únor ( vol. 6 , č. 2 ). - str. 58-63 . — ISSN 0001-0782 . - doi : 10.1145/366246.366248 .

Odkazy