Ce este densitatea defectelor? Formula de calculat cu Exemplu
โก Rezumat inteligent
Densitatea defectelor mฤsoarฤ numฤrul de defecte confirmate รฎntr-un modul software รฎmpฤrศit la dimensiunea acelui modul, de obicei exprimatฤ la o mie de linii de cod, ศi semnaleazฤ dacฤ o versiune este gata de lansare.
Ce este densitatea defectelor?
Densitatea defectelor este numฤrul de defecte confirmate รฎntr-un software sau รฎntr-un modul รฎn timpul unei anumite perioade de operare sau dezvoltare, รฎmpฤrศit la dimensiunea software-ului sau modulului respectiv. Acesta permite unei echipe sฤ decidฤ dacฤ un software este gata de lansare.
Densitatea defectelor este calculatฤ la o mie de linii de cod, cunoscutฤ ศi sub numele de KLOC. Deoarece numฤrarea este normalizatฤ รฎn funcศie de dimensiune, un modul mare cu multe defecte ศi un modul mic cu puศine defecte pot fi comparate la aceeaศi scarฤ, lucru pe care un numฤr brut de erori nu รฎl permite niciodatฤ.
Metrica este raportatฤ รฎn mod normal la sfรขrศitul unui ciclu de testare ศi traclansare peste lansare, deci se aflฤ alฤturi de restul procesul de management al defectelor รฎn ciclul de viaศฤ al testฤrii software.
Cum se calculeazฤ densitatea defectelor
O formulฤ pentru mฤsurarea densitฤศii defectelor:
Defect Density = Defect count/size of the release
Mฤrimea lansฤrii poate fi mฤsuratฤ รฎn termeni de linie de cod (LOC).
Trei detalii decid dacฤ numฤrul rezultat are vreo semnificaศie:
- Unitatea de mฤrime. LOC ศi KLOC sunt cele mai comune unitฤศi. Punctele funcศionale sunt utilizate acolo unde echipele doresc o mฤsurฤ de dimensiune care nu se modificฤ odatฤ cu limbajul de programare, iar unele echipe normalizeazฤ รฎn funcศie de modul sau de componentฤ.
- Ceea ce se calificฤ drept defect. Doar defectele confirmate aparศin numฤrฤtorului. Duplicatele, rapoartele respinse ศi solicitฤrile de รฎmbunฤtฤศire trebuie excluse, altfel cifra creศte fฤrฤ nicio modificare a calitฤศii codului.
- Fereastra de mฤsurare. Defecte descoperite รฎn timpul testฤrii sistemului, รฎn timpul testarea regresieiศi dupฤ lansare descriu lucruri diferite, aศa cฤ perioada trebuie indicatฤ cu numฤrul.
Exemplu de densitate a defectelor
Sฤ presupunem cฤ aveศi 3 module integrate รฎn produsul dvs. software. Fiecare modul are urmฤtorul numฤr de erori descoperite:
- Modulul 1 = 10 bug-uri
- Modulul 2 = 20 bug-uri
- Modulul 3 = 10 bug-uri
Total erori = 10 + 20 + 10 = 40
Numฤrul total de linii de cod pentru fiecare modul este:
- Modulul 1 = 1000 LOC
- Modulul 2 = 1500 LOC
- Modulul 3 = 500 LOC
Linie totalฤ de Code = 1000+1500+500 = 3000
Densitatea defectului se calculeazฤ astfel:
Defect Density = 40/3000 = 0.013333 defects/loc = 13.333 defects/Kloc
Acelaศi calcul aplicat per modul este mai util decรขt cifra combinatฤ, aศa cum aratฤ graficul de mai jos: Modulul 2 are 20 de defecte รฎn 1500 LOC, iar Modulul 3 are 10 defecte รฎn doar 500 LOC, deci Modulul 3 este cel mai dens ศi mai riscant dintre cele douฤ, chiar dacฤ a raportat mai puศine erori.
Un standard pentru densitatea defectelor
Nu existฤ un standard fix pentru densitatea defectelor. Studiile sugereazฤ cฤ este posibil sฤ defect Valoarea per mia de linii de cod este รฎn general consideratฤ un semn al calitฤศii bune a proiectului, iar aceastฤ cifrฤ este regula generalฤ cea mai citatฤ รฎn industrie.
Aศteptฤrile se modificฤ odatฤ cu domeniul. Software-ul critic pentru siguranศฤ ศi reglementat, cum ar fi avionica ศi dispozitivele medicale, este limitat la o ศintฤ mult sub un defect per KLOC, รฎn timp ce aplicaศiile de business obiศnuite se situeazฤ รฎn mod obiศnuit peste aceasta. Deoarece regulile de numฤrare, unitฤศile de dimensiune ศi profunzimea testelor diferฤ รฎntre organizaศii, un criteriu de referinศฤ preluat dintr-un studiu publicat este comparabil doar cu un proiect care mฤsoarฤ รฎn acelaศi mod. Prin urmare, utilizarea practicฤ a metricii este internฤ: comparaศi o versiune cu versiunea anterioarฤ a aceluiaศi produs, mฤsuratฤ identic.
Factorii care afecteazฤ densitatea defectelor
Aceeaศi bazฤ de cod poate produce cifre foarte diferite privind densitatea defectelor, รฎn funcศie de urmฤtorii factori:
- Code complexitate. Logicฤ profund imbricatฤ ศi รฎnaltฤ complexitate ciclomaticฤ produce mai multe defecte pe linie decรขt codul simplu.
- Tipul de defecte luat รฎn considerare. Luรขnd รฎn considerare doar defectele funcศionale sau incluzรขnd utilizabilitatea, documentaศia ศi nefuncศional constatฤri, modificฤ substanศial numฤrฤtorul.
- Durata de timp consideratฤ. O cifrฤ mฤsuratฤ pe parcursul unui ciclu de testare de douฤ sฤptฤmรขni nu este comparabilฤ cu una mฤsuratฤ pe parcursul a ศase luni de utilizare รฎn producศie.
- Abilitฤศi de dezvoltator ศi tester. Dezvoltatorii experimentaศi injecteazฤ mai puศine defecte, iar testerii experimentaศi gฤsesc mai multe dintre cele existente, astfel รฎncรขt cele douฤ efecte trag metrica รฎn direcศii opuse.
- Acoperire de testare. Defectele care nu au fost niciodatฤ cฤutate nu sunt niciodatฤ luate รฎn considerare, aศadar acoperirea testului limiteazฤ รฎn tฤcere cรขt de mare poate ajunge densitatea mฤsuratฤ.
Densitatea defectelor vs. alte metrici ale defectelor
Densitatea defectelor rฤspunde la o รฎntrebare: cรขt de concentrate sunt defectele cunoscute. Trei metrici รฎnsoศitoare rฤspund la รฎntrebฤrile pe care nu le poate rฤspunde, iar majoritatea echipelor le raporteazฤ รฎmpreunฤ.
| metric | Ce mฤsoarฤ | รntrebare รฎi rฤspunde |
| Densitatea defectelor | Defecte confirmate รฎmpฤrศite รฎn funcศie de dimensiune (KLOC sau puncte funcศionale) | Care module prezintฤ cele mai multe defecte pentru dimensiunea lor? |
| Scurgere de defecte | Defecte gฤsite dupฤ lansare ca pondere din totalul defectelor | Cรขt a scฤpat de procesul de testare ศi a ajuns la utilizatori? |
| Eficienศa eliminฤrii defectelor | Defecte eliminate รฎnainte de lansare ca parte din toate defectele | Cรขt de eficientฤ a fost testarea รฎn detectarea defectelor la timp? |
| Indicele de severitate a defectelor | Defecte ponderate รฎn funcศie de gravitate, mai degrabฤ decรขt numฤrate รฎn mod egal | Cรขt de dฤunฤtoare sunt defectele, nu doar cรขte sunt? |
Citite รฎmpreunฤ, cele patru oferฤ o imagine mai completฤ: o densitate scฤzutฤ a defectelor cu puncte de scurgere a defectelor ridicate la testarea superficialฤ, mai degrabฤ decรขt la cod curat, exact interpretarea greศitฤ despre care avertizeazฤ secศiunea urmฤtoare.
Avantajele densitฤศii defectelor
Urmฤtoarele sunt avantajele densitฤศii defectelor:
- Ajutฤ la mฤsurarea eficacitฤศii testฤrii.
- Ajutฤ la diferenศierea concentraศiei de defecte รฎntre componente ศi modulele software.
- Este util รฎn identificarea domeniilor care necesitฤ corecศii sau รฎmbunฤtฤศiri.
- Este util รฎn indicarea componentelor cu risc ridicat, care influenศeazฤ direct testarea bazatฤ pe risc.
- Ajutฤ la identificarea nevoilor de formare ale diferitelor resurse.
- Poate fi util รฎn estimarea efortului de testare ศi refacere cauzat de defecte.
- Poate estima defectele rฤmase รฎn software.
- รnainte de lansare, acest lucru ajutฤ la determinarea dacฤ testele efectuate pรขnฤ รฎn prezent sunt suficiente.
- Construieศte o bazฤ istoricฤ รฎn raport cu care pot fi comparate versiunile ulterioare.
Limitฤrile densitฤศii defectelor
Metrica este uศor de calculat ศi uศor de interpretat greศit. Urmฤtoarele limitฤri decid cรขtฤ importanศฤ are รฎn luarea unei decizii de lansare:
- Defectele nedetectate sunt invizibile. Numฤrฤtorul conศine doar defectele pe care testarea le-a gฤsit efectiv, astfel รฎncรขt un modul slab testat raporteazฤ o cifrฤ favorabilฤ.
- Severitatea este ignoratฤ. Un defect care corupe o platฤ ศi o problemฤ de aliniere cosmeticฤ sunt considerate la fel, motiv pentru care este necesarฤ o vizualizare ponderatฤ รฎn funcศie de severitate alฤturi de acestea.
- Definiศiile defectelor variazฤ. Douฤ echipe care numฤrฤ diferit produc numere care nu pot fi comparate, nici mฤcar รฎn cadrul aceleiaศi organizaศii.
- Liniile de cod sunt un proxy de dimensiune slabฤ. Codul detaliat reduce densitatea fฤrฤ a รฎmbunฤtฤศi nimic, iar unitatea nu este comparabilฤ รฎntre limbaje de programare.
- Metrica poate fi manipulatฤ. Respingerea rapoartelor la limitฤ sau umflarea numฤrului de linii รฎmbunฤtฤศesc cifra fฤrฤ a รฎmbunฤtฤศi produsul.
Nimic din toate acestea nu face Densitatea Defectelor inutilฤ. O transformฤ รฎntr-un indicator de tendinศฤ pentru un produs mฤsurat constant, mai degrabฤ decรขt รฎntr-un scor pentru a compara echipele รฎntre ele.
Cum sฤ reduci densitatea defectelor
Reducerea densitฤศii defectelor, mai degrabฤ decรขt pe hรขrtie, รฎnseamnฤ prevenirea defectelor mai devreme ศi gฤsirea restului รฎnainte de lansare. Practicile de mai jos sunt cele care se regฤsesc รฎn ghidurile publicate:
- Mutฤ โโtestarea mai devreme. Implicarea testerilor รฎn etapa de cerinศe ศi proiectare depisteazฤ ambiguitatea รฎnainte ca aceasta sฤ devinฤ cod, acesta fiind punctul รฎn care defectele sunt cel mai ieftin de eliminat.
- RevVizualizaศi codul รฎnainte de a se รฎmbina. Evaluarea inter pares identificฤ erorile logice, cerinศele interpretate greศit ศi defectele de proiectare pe care nu le poate identifica. test de unitate a fost scris pentru a cฤuta.
- Automatizaศi suita de regresie. Rularea verificฤrilor la fiecare commit prin integrare continuฤ รฎmpiedicฤ reapariศia defectelor vechi รฎn timp ce se scrie cod nou.
- Scrieศi teste mai รฎntรขi. Dezvoltare bazatฤ pe teste obligฤ fiecare comportament sฤ fie specificat รฎnainte de a fi implementat ศi testarea mutaศiilor poate apoi confirma cฤ testele rezultate afirmฤ รฎntr-adevฤr ceva.
- Foloseศte analiza staticฤ. Scanarea automatฤ a codului semnaleazฤ dereferenศele nule, scurgerile de resurse ศi punctele sensibile la complexitate รฎnainte de rularea unui singur test.
- Refactorizaศi modulele dense. Odatฤ ce Densitatea Defectelor a identificat cele mai nefavorabile componente, divizarea ศi simplificarea acestora reduce de obicei atรขt complexitatea, cรขt ศi numฤrul de defecte.
- Introduceศi defectele รฎnapoi รฎn proces. Analiza cauzelor principale รฎn cadrul retrospectivelor transformฤ defectele individuale รฎn remedieri de proces, mai degrabฤ decรขt รฎn โโcorecศii unice.
Traclansare ked peste lansare alฤturi de tehnici de testare a software-ului ศi datele de acoperire, Densitatea Defectelor devine un sistem de avertizare timpurie, mai degrabฤ decรขt un raport.

