Co je hustota defektů? Vzorec pro výpočet s příkladem
⚡ Chytré shrnutí
Hustota defektů měří počet potvrzených defektů v softwarovém modulu dělený velikostí tohoto modulu, obvykle vyjádřená na tisíc řádků kódu, a signalizuje, zda je sestavení připraveno k vydání.
Co je hustota defektů?
Hustota defektů je počet defektů potvrzených v softwaru nebo modulu během určitého období provozu nebo vývoje dělený velikostí daného softwaru nebo modulu. Umožňuje týmu rozhodnout, zda je software připraven k vydání.
Hustota defektů se počítá na tisíc řádků kódu, známá také jako KLOC. Protože je počet normalizován podle velikosti, lze velký modul s mnoha defekty a malý modul s malým počtem defektů porovnávat ve stejném měřítku, což hrubý počet chyb nikdy neumožňuje.
Metrika se obvykle hlásí na konci testovacího cyklu a tracjedno vydání za druhým, takže sedí vedle zbytku proces správy vad v životní cyklus testování softwaru.
Jak vypočítat hustotu defektů
Vzorec pro měření hustoty defektů:
Defect Density = Defect count/size of the release
Velikost vydání lze měřit z hlediska řádku kódu (LOC).
O tom, zda výsledné číslo něco znamená, rozhodují tři detaily:
- Jednotka velikosti. LOC a KLOC jsou nejběžnější jednotky. Funkční body se používají tam, kde týmy chtějí míru velikosti, která se nemění s programovacím jazykem, a některé týmy místo toho normalizují podle modulu nebo komponenty.
- Co se počítá jako vada. Do čitatele patří pouze potvrzené vady. Duplikáty, zamítnuté zprávy a požadavky na vylepšení musí být vyloučeny, jinak se číslo nafoukne beze změny kvality kódu.
- Měřicí okno. Závady zjištěné během testování systému, během regresní testování, a po vydání popisují různé věci, takže tečka musí být uvedena s číslem.
Příklad hustoty defektu
Předpokládejme, že máte ve svém softwarovém produktu integrované 3 moduly. V každém modulu byl objeven následující počet chyb:
- Modul 1 = 10 chyb
- Modul 2 = 20 chyb
- Modul 3 = 10 chyb
Celkem chyb = 10 + 20 + 10 = 40
Celkový počet řádků kódu pro každý modul je:
- Modul 1 = 1000 LOC
- Modul 2 = 1500 LOC
- Modul 3 = 500 LOC
Celková řada Code = 1000+1500+500 = 3000
Hustota defektu se vypočítá takto:
Defect Density = 40/3000 = 0.013333 defects/loc = 13.333 defects/Kloc
Stejný výpočet aplikovaný na každý modul je užitečnější než kombinovaná hodnota, jak ukazuje graf níže: Modul 2 obsahuje 20 defektů v 1500 LOC a Modul 3 obsahuje 10 defektů pouze v 500 LOC, takže Modul 3 je z těchto dvou hustší a rizikovější, i když hlásil méně chyb.
Standard pro hustotu defektů
Neexistuje žádný pevný standard pro hustotu defektů. Studie naznačují, že jedna vada na tisíc řádků kódu je obecně považováno za známku dobré kvality projektu a toto číslo je v oboru nejčastěji uváděným pravidlem.
Očekávání se s doménou mění. Bezpečnostně kritický a regulovaný software, jako je avionika a zdravotnické prostředky, je držen na cílové hodnotě výrazně nižší než jedna vada na KLOC, zatímco běžné obchodní aplikace ji běžně přesahují. Protože se pravidla počítání, jednotky velikosti a hloubka testování v jednotlivých organizacích liší, je benchmark z publikované studie srovnatelný pouze s projektem, který měří stejným způsobem. Praktické využití metriky je proto interní: porovnejte verzi s předchozí verzí stejného produktu, měřenou identicky.
Faktory ovlivňující hustotu defektů
Stejná kódová základna může produkovat velmi odlišné hodnoty hustoty defektů v závislosti na následujících faktorech:
- Code složitost. Hluboce vnořená logika a vysoká cyklomatická složitost produkují více defektů na řádek než přímočarý kód.
- Typ vad, které se berou v úvahu. Počítání pouze funkčních vad, nebo zahrnutí použitelnosti, dokumentace a nefunkční zjištění, podstatně mění čitatel.
- Uvažovaná doba trvání. Hodnota naměřená během dvoutýdenního testovacího cyklu není srovnatelná s hodnotou naměřenou během šesti měsíců produkčního používání.
- Dovednosti vývojáře a testerů. Zkušení vývojáři vnášejí méně defektů a zkušení testeři nacházejí více těch, které existují, takže tyto dva efekty ovlivňují metriku opačnými směry.
- Testovací pokrytí. Vady, které nebyly nikdy hledány, se nikdy nepočítají, takže pokrytí testu tiše omezuje, jak vysoko může naměřená hustota dosáhnout.
Hustota defektů vs. jiné metriky defektů
Hustota defektů odpovídá na jednu otázku: jak koncentrované jsou známé defekty. Tři doprovodné metriky odpovídají na otázky, na které odpovědět nemůže, a většina týmů je uvádí společně.
| metrický | Co měří | Otázka to odpovídá |
| Hustota defektů | Potvrzené vady dělené velikostí (KLOC nebo funkční body) | Které moduly mají vzhledem ke své velikosti nejvíce vad? |
| Únik z vady | Vady zjištěné po uvolnění jako podíl všech vad | Kolik uniklo testovacímu procesu a dostalo se k uživatelům? |
| Účinnost odstraňování vad | Vady odstraněné před vydáním jako podíl všech vad | Jak efektivní bylo testování při včasném odhalování vad? |
| Index závažnosti vad | Vady vážené podle závažnosti, nikoli započítávané rovnoměrně | Jak škodlivé jsou tyto vady, nejen kolik jich je? |
Dohromady tyto čtyři ukazatele poskytují ucelenější obrázek: nízká hustota defektů s vysokým únikem defektů poukazuje spíše na povrchní testování než na čistý kód, což je přesně ono chybné pochopení, před kterým varuje následující část.
Výhody hustoty defektů
Následují výhody hustoty defektů:
- Pomáhá měřit efektivitu testování.
- Pomáhá rozlišovat koncentraci vad mezi komponentami a softwarovými moduly.
- Je to užitečné při identifikaci oblastí, které je třeba opravit nebo vylepšit.
- Je to užitečné pro poukázání na vysoce rizikové komponenty, což přímo vede k testování založené na riziku.
- Pomáhá identifikovat vzdělávací potřeby různých zdrojů.
- Může to být užitečné při odhadu úsilí potřebného k testování a přepracování v důsledku vad.
- Dokáže odhadnout zbývající vady v softwaru.
- Před vydáním pomáhá určit, zda je dosud provedené testování dostatečné.
- Vytváří historickou základnu, s níž lze porovnávat pozdější vydání.
Omezení hustoty defektů
Tuto metriku lze snadno vypočítat a snadno ji lze špatně interpretovat. Následující omezení určují, jakou váhu si zaslouží při rozhodování o vydání:
- Nezjištěné vady jsou neviditelné. Čitatel obsahuje pouze vady, které testování skutečně odhalilo, takže slabě testovaný modul hlásí lichotivé číslo.
- Závažnost se ignoruje. Jedna vada, která poškodí platbu, a jedna kosmetická vada se zarovnáním se počítají stejně, a proto je k nim nutný pohled s vážením závažnosti.
- Definice vad se liší. Dva týmy, které počítají různě, produkují čísla, která nelze porovnávat, a to ani v rámci stejné organizace.
- Řádky kódu jsou slabou zástupnou hodnotou velikosti. Podrobný kód snižuje hustotu, aniž by cokoli zlepšil, a jednotka není srovnatelná napříč programovacími jazyky.
- S metrikou se dá manipulovat. Odmítání hraničních zpráv nebo nafukování počtu řádků zlepšuje dané číslo, aniž by se zlepšil produkt.
Nic z toho neznamená, že hustota defektů je zbytečná. Díky tomu je to spíše ukazatel trendu pro jeden produkt měřený konzistentně než skóre pro porovnávání týmů mezi sebou.
Jak snížit hustotu vad
Snižování hustoty vad skutečně, nikoli jen na papíře, znamená včasné předcházení vadám a odhalování zbývajících před vydáním. Níže uvedené postupy se opakují v publikovaných pokynech:
- Testování přesunu dříve. Zapojení testerů ve fázi požadavků a návrhu odhaluje nejednoznačnosti ještě předtím, než se z nich stane kód, což je oblast, kde se vady odstraňují nejlevněji.
- Revzobrazit kód před jeho sloučením. Vzájemné hodnocení odhaluje logické chyby, nesprávně pochopené požadavky a konstrukční nedostatky, které nejsou jednotkový test bylo napsáno k hledání.
- Automatizujte sadu regresních algoritmů. Spouštění kontrol u každého commitu průběžná integrace Zabraňuje návratu starých defektů během psaní nového kódu.
- Nejdříve napište testy. Vývoj řízený testy vynucuje specifikaci každého chování před jeho implementací a testování mutací pak může potvrdit, že výsledné testy skutečně něco tvrdí.
- Použijte statickou analýzu. Automatizované skenování kódu označuje dereference s hodnotami null, úniky zdrojů a kritická místa složitosti ještě před spuštěním jednotlivých testů.
- Refaktorujte husté moduly. Jakmile metoda Defect Hustota identifikuje nejhorší komponenty, jejich rozdělení a zjednodušení obvykle snižuje jak složitost, tak i počet defektů.
- Vraťte vady zpět do procesu. Analýza hlavních příčin při retrospektivách proměňuje jednotlivé vady v opravy procesů, nikoli v jednorázové záplaty.
Tracked vydání nad vydáním vedle techniky testování softwaru a data o pokrytí se hustota defektů stává spíše systémem včasného varování než výkazem.

