Što je gustoća defekta? Formula za izračunavanje s primjerom

⚡ Pametni sažetak

Gustoća grešaka mjeri broj potvrđenih grešaka u softverskom modulu podijeljen s veličinom tog modula, obično izražena po tisuću redaka koda, i signalizira je li verzija spremna za objavljivanje.

  • 🔘 formula: Gustoća defekata jednaka je potvrđenom broju defekata podijeljenom s veličinom ispuštanja, najčešće se mjeri u KLOC-u.
  • ☑️ Obrađeni primjer: Četrdeset defekata u tri tisuće redaka koda daje 0.0133 defekata po LOC-u ili 13.333 defekata po KLOC-u.
  • Mjerilo: Otprilike jedna greška na tisuću redaka koda se općenito smatra znakom dobre kvalitete projekta.
  • 🧪 Utjecaji: Code složenost, pravila brojanja nedostataka, prozor mjerenja i timska vještina utječu na broj.
  • 📊 usporedba: Curenje nedostataka, učinkovitost uklanjanja nedostataka i indeksi ozbiljnosti ne mogu odgovoriti na pitanja na koja sama gustoća nedostataka ne može odgovoriti.
  • ⚠️ Oprez: Niska vrijednost može značiti slabo testiranje, a ne čist kod, tako da metrika nikada ne stoji samostalno.

Gustoća defekta

Što je gustoća defekta?

Gustoća defekta je broj potvrđenih nedostataka u softveru ili modulu tijekom određenog razdoblja rada ili razvoja, podijeljen s veličinom tog softvera ili modula. Omogućuje timu da odluči je li softver spreman za objavljivanje.

Gustoća grešaka broji se po tisuću redaka koda, također poznata kao KLOC. Budući da je broj normaliziran veličinom, veliki modul s mnogo grešaka i mali modul s malo grešaka mogu se usporediti na istoj skali, što sirovi broj grešaka nikada ne dopušta.

Metrika se obično izvještava na kraju testnog ciklusa i tracjedno izdanje iznad drugog, tako da se nalazi uz ostatak proces upravljanja nedostacima u životni ciklus testiranja softvera.

Kako izračunati gustoću defekata

Formula za mjerenje gustoće defekta:

Defect Density = Defect count/size of the release

Veličina izdanja može se mjeriti u smislu linije koda (LOC).

Tri detalja odlučuju hoće li dobiveni broj išta značiti:

  • Jedinica veličine. LOC i KLOC su najčešće jedinice. Funkcijske točke se koriste tamo gdje timovi žele mjeru veličine koja se ne mijenja s programskim jezikom, a neki timovi umjesto toga normaliziraju po modulu ili komponenti.
  • Što se smatra nedostatkom. U brojnik spadaju samo potvrđeni nedostaci. Duplikati, odbijena izvješća i zahtjevi za poboljšanje moraju se isključiti, inače se broj povećava bez ikakve promjene u kvaliteti koda.
  • Prozor za mjerenje. Nedostaci pronađeni tijekom testiranja sustava, tijekom regresijsko testiranje, a nakon objavljivanja opisuju različite stvari, pa se točka mora navesti s brojem.

Primjer gustoće defekta

Pretpostavimo da u svoj softverski proizvod imate integrirana 3 modula. U svakom modulu otkriven je sljedeći broj grešaka:

  • Modul 1 = 10 grešaka
  • Modul 2 = 20 grešaka
  • Modul 3 = 10 grešaka

Ukupno grešaka = 10 + 20 + 10 = 40

Ukupan broj linija koda za svaki modul je:

  • Modul 1 = 1000 LOC
  • Modul 2 = 1500 LOC
  • Modul 3 = 500 LOC

Ukupni redak Code = 1000+1500+500 = 3000

Gustoća defekta izračunava se kao:

Defect Density = 40/3000 = 0.013333 defects/loc = 13.333 defects/Kloc

Isti izračun primijenjen po modulu korisniji je od kombinirane brojke, kao što pokazuje donji grafikon: Modul 2 ima 20 nedostataka u 1500 LOC, a Modul 3 ima 10 nedostataka u samo 500 LOC, tako da je Modul 3 gušći i rizičniji od ta dva iako je prijavio manje grešaka.

Trakasti dijagram koji uspoređuje broj nedostataka i retke koda triju modula korištenih u izračunu gustoće nedostataka

Standard za gustoću defekata

Ne postoji fiksni standard za gustoću defekata. Studije sugeriraju da jedna mana po tisuću redaka koda općenito se smatra znakom dobre kvalitete projekta, a ta je brojka najčešće citirano pravilo u industriji.

Očekivanje se mijenja s domenom. Sigurnosno kritičan i reguliran softver, poput avionike i medicinskih uređaja, drži se cilja znatno ispod jednog nedostatka po KLOC-u, dok su obične poslovne aplikacije rutinski iznad toga. Budući da se pravila brojanja, jedinice veličine i dubina testiranja razlikuju među organizacijama, referentna vrijednost uzeta iz objavljene studije usporediva je samo s projektom koji mjeri na isti način. Praktična upotreba metrike je stoga interna: usporedite izdanje s prethodnim izdanjem istog proizvoda, mjereno identično.

Čimbenici koji utječu na gustoću defekata

Ista kodna baza može proizvesti vrlo različite brojke gustoće defekata ovisno o sljedećim čimbenicima:

  • Code složenost. Duboko ugniježđena logika i visoka ciklomatska složenost proizvode više grešaka po liniji nego jednostavan kod.
  • Vrsta nedostataka koja se uzima u obzir. Brojanje samo funkcionalnih nedostataka ili uključivanje upotrebljivosti, dokumentacije i nefunkcionalni nalazi, znatno mijenja brojnik.
  • Razmatrano vremensko trajanje. Brojka izmjerena tijekom dvotjednog testnog ciklusa nije usporediva s onom izmjerenom tijekom šest mjeseci proizvodne upotrebe.
  • Vještine programera i testera. Iskusni programeri ubrizgavaju manje nedostataka, a iskusni testeri pronalaze više onih koji postoje, pa ta dva učinka povlače metriku u suprotnim smjerovima.
  • Pokrivenost testom. Nedostaci koji nikada nisu traženi nikada se ne broje, stoga pokrivenost testom tiho ograničava koliko visoko izmjerena gustoća može ići.

Gustoća nedostataka u odnosu na druge metrike nedostataka

Gustoća defekata odgovara na jedno pitanje: koliko su koncentrirani poznati defekti. Tri prateće metrike odgovaraju na pitanja na koja ne može odgovoriti, a većina timova ih izvještava zajedno.

metrički Što mjeri Pitanje na koje odgovara
Gustoća defekta Potvrđeni nedostaci podijeljeni s veličinom (KLOC ili funkcionalne točke) Koji moduli imaju najviše nedostataka za svoju veličinu?
Curenje zbog kvara Nedostaci pronađeni nakon puštanja u promet kao udio svih nedostataka Koliko je toga promaklo procesu testiranja, a dospjelo do korisnika?
Učinkovitost uklanjanja nedostataka Nedostaci uklonjeni prije puštanja u promet kao udio svih nedostataka Koliko je učinkovito bilo testiranje u pravovremenom otkrivanju nedostataka?
Indeks ozbiljnosti nedostataka Nedostaci ponderirani prema težini, a ne jednako brojeni Koliko su štetni nedostaci, ne samo koliko ih ima?

Pročitani zajedno, sva četiri daju potpuniju sliku: niska gustoća defekata s visokim curenjem defekata ukazuje na plitko testiranje, a ne na čist kod, što je upravo pogrešno tumačenje na koje upozorava sljedeći odjeljak.

Prednosti gustoće defekata

Slijede prednosti gustoće defekata:

  • Pomaže u mjerenju učinkovitosti testiranja.
  • Pomaže u razlikovanju koncentracije nedostataka između komponenti i softverskih modula.
  • Korisno je u identificiranju područja koja trebaju ispravku ili poboljšanje.
  • Korisno je za ukazivanje na visokorizične komponente, što izravno utječe na testiranje na temelju rizika.
  • Pomaže u identificiranju potreba za obukom različitih resursa.
  • To može biti korisno u procjeni napora testiranja i prerade uzrokovanih nedostacima.
  • Može procijeniti preostale nedostatke u softveru.
  • Prije objavljivanja, pomaže utvrditi jesu li do sada provedena testiranja dovoljna.
  • Gradi povijesnu osnovu s kojom se mogu mjeriti kasnija izdanja.

Ograničenja gustoće defekata

Metriku je lako izračunati i lako je pogrešno protumačiti. Sljedeća ograničenja određuju koliku joj je težinu u odluci o izdanju:

  • Neotkriveni nedostaci su nevidljivi. Brojnik sadrži samo nedostatke koje je testiranje stvarno pronašlo, pa slabo testirani modul daje laskavu brojku.
  • Ozbiljnost se zanemaruje. Jedan nedostatak koji oštećuje plaćanje i jedan kozmetički problem s poravnanjem računaju se isto, zbog čega je uz njih potreban prikaz ponderiran prema ozbiljnosti.
  • Definicije nedostataka variraju. Dva tima koja različito broje proizvode brojeve koji se ne mogu usporediti, čak ni unutar iste organizacije.
  • Linije koda su slaba zamjena za veličinu. Opširni kod smanjuje gustoću bez ikakvog poboljšanja, a jedinica nije usporediva u različitim programskim jezicima.
  • Metrika se može manipulirati. Odbacivanje graničnih izvješća ili napuhavanje broja redaka poboljšavaju brojku bez poboljšanja proizvoda.

Ništa od ovoga ne čini gustoću nedostataka beskorisnom. To je čini pokazateljem trenda za jedan proizvod koji se dosljedno mjeri, a ne rezultatom za usporedbu timova jednih s drugima.

Kako smanjiti gustoću nedostataka

Smanjenje gustoće nedostataka stvarno, a ne samo na papiru, znači ranije sprječavanje nedostataka i pronalaženje ostalih prije objavljivanja. Prakse u nastavku su one koje se ponavljaju u objavljenim smjernicama:

  • Testiranje poteza ranije. Uključivanje testera u fazi zahtjeva i dizajna otkriva dvosmislenost prije nego što postane kod, što je mjesto gdje je najjeftinije ukloniti nedostatke.
  • Revpregledajte kod prije nego što se spoji. Stručna recenzija otkriva logičke pogreške, pogrešno shvaćene zahtjeve i nedostatke u dizajnu koji ne jedinični test napisano je za traženje.
  • Automatizirajte regresijski paket. Pokretanje provjera na svakom commitu kontinuirana integracija sprječava povratak starih nedostataka dok se piše novi kod.
  • Prvo napišite testove. Razvoj vođen testiranjem prisiljava svako ponašanje da bude specificirano prije nego što se implementira, i testiranje mutacija tada može potvrditi da dobiveni testovi doista nešto tvrde.
  • Koristite statičku analizu. Automatizirano skeniranje koda označava null dereference, curenje resursa i vruće točke složenosti prije pokretanja jednog testa.
  • Refaktorirajte guste module. Nakon što Defect Density identificira najgore komponente, njihovo dijeljenje i pojednostavljenje obično smanjuje i složenost i broj nedostataka.
  • Vratite nedostatke natrag u proces. Analiza uzroka na retrospektivama pretvara pojedinačne nedostatke u ispravke procesa, a ne u jednokratne zakrpe.

Tracked izdanje nad izdanjem uz tehnike testiranja softvera i podacima o pokrivenosti, gustoća nedostataka postaje sustav ranog upozorenja, a ne izvještajna kartica.

Pitanja i odgovori

Većina timova izračunava ga na kraju testiranja sustava, kada su izvješća o nedostacima trijažirana i potvrđena. Mjerenje usred ciklusa podcjenjuje brojku jer su izvješća još uvijek otvorena, a mjerenje samo nakon objavljivanja pretvara ga u metriku curenja.

Ne. Brojite samo kod koji je tim napisao i koji može promijeniti. Uključivanje generiranih datoteka, biblioteka dobavljača ili testnog koda napuhuje nazivnik i umjetno smanjuje gustoću, što skriva module kojima je zaista potrebna pažnja.

Da. Timovi obično prijavljuju drugu brojku ograničenu na kritične i vrlo ozbiljne nedostatke. Modul s umjerenom ukupnom gustoćom, ali s nekoliko kritičnih nedostataka, predstavlja veći rizik od izdanja od onog s mnogo kozmetičkih problema.

Da, s drugačijim nazivnikom. Spretni timovi često normaliziraju nedostatke po korisničkoj priči, po točki priče ili po isporučenoj značajki. Jedinica je manje važna od dosljednog korištenja iste kroz sprintove.

Modeli za predviđanje nedostataka uče iz povijesnih metrika koda i procesa, kao što su složenost, odljev korisnika i broj prošlih nedostataka, kako bi rangirali datoteke s najvećom vjerojatnošću neispravnosti. Testeri zatim usmjeravaju napore na module s najvećim rizikom prije nego što se izmjeri izrada.

Neizravno. Copilot brzo izrađuje jedinične testove, scenarije rubnih slučajeva i standardne tvrdnje, što povećava pokrivenost i ranije otkriva nedostatke. Također generira kod koji zahtijeva isti pregled kao i bilo koji drugi, tako da nikada ne uklanja potrebu za recenzijom od strane kolega.

Voditelj testiranja ili voditelj osiguranja kvalitete obično to prijavljuje, ali pravila brojanja prvo se moraju dogovoriti s razvojnim timom i voditeljem projekta. Bez dogovorene definicije potvrđenog nedostatka i brojivog koda, broj nije opravdan na sastanku o izdanju.

Ne nužno. Nagli porast često znači da je testiranje konačno dosegnulo modul koji prethodno nije bio diran, što su dobre vijesti otkrivene kasno. Pročitajte to zajedno s pokrivenošću i trendom nedostataka prije nego što to tretirate kao neuspjeh u kvaliteti.

Sažmite ovu objavu uz: