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] .
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í).
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.