Mi az a hibasűrűség? Kiszámítandó képlet példával

⚡ Okos összefoglaló

A hibasűrűség egy szoftvermodulban található megerősített hibák számát méri osztva a modul méretével, amelyet általában ezer sornyi kódra vetítenek ki, és azt jelzi, hogy a build készen áll-e a kiadásra.

  • 🔘 képlet: A hibasűrűség egyenlő a megerősített hibák számának és a kiadás méretének osztva, leggyakrabban KLOC-ban mérve.
  • ☑️ Működő példa: Háromezer kódsorban negyven hiba LOC-onként 0.0133 hibát, vagy KLOC-onként 13.333 hibát eredményez.
  • Viszonyítási alap: Körülbelül egy hiba ezer sornyi kódban széles körben a jó projektminőség jelének tekinthető.
  • 🧪 Befolyások: Code A komplexitás, a hibaszámlálási szabályok, a mérési ablak és a csapatkészség mind befolyásolják a számot.
  • 📊 Összehasonlítás: A hibaszivárgás, a hibaeltávolítási hatékonyság és a súlyossági indexek olyan kérdésekre adnak választ, amelyekre a hibasűrűség önmagában nem.
  • ⚠️ Figyelem: Az alacsony érték gyenge tesztelést jelenthet, nem pedig tiszta kódot, így a mutató soha nem áll önmagában.

Hiba sűrűsége

Mi az a hibasűrűség?

Hiba sűrűsége egy adott szoftver- vagy modulrészletben a működés vagy fejlesztés egy adott időszakában megerősített hibák száma, osztva a szoftver vagy modul méretével. Ez lehetővé teszi a csapat számára annak eldöntését, hogy egy szoftverrészlet kiadásra kész-e.

A hibasűrűséget ezer sornyi kódra vetítve mérik, más néven KLOC-ként. Mivel a szám méret szerint normalizált, egy nagy, sok hibával rendelkező modul és egy kis, kevés hibával rendelkező modul ugyanazon a skálán hasonlítható össze, amit a nyers hibaszámlálás soha nem tesz lehetővé.

A mutatót általában a tesztciklus végén jelentik, és tracked kiadás kiadás után, így a többi mellett helyezkedik el hibakezelési folyamat a szoftvertesztelés életciklusa.

Hogyan számítsuk ki a hibasűrűséget

Egy képlet a hibasűrűség mérésére:

Defect Density = Defect count/size of the release

A kiadás mérete kódsorokban (LOC) mérhető.

Három részlet dönti el, hogy a kapott szám jelent-e valamit:

  • A méretegység. A LOC és a KLOC a leggyakoribb mértékegységek. A függvénypontokat ott használják, ahol a csapatok olyan méretmértéket szeretnének, amely nem változik a programozási nyelvvel, és egyes csapatok modulonként vagy komponensenként normalizálnak.
  • Ami hibának számít. Csak a megerősített hibák szerepelhetnek a számlálóban. A duplikátumokat, az elutasított jelentéseket és a fejlesztési kéréseket ki kell zárni, különben a szám a kód minőségének változása nélkül növekszik.
  • A mérési ablak. A rendszer tesztelése során talált hibák, regressziós teszt, és a kiadás utáni különböző dolgokat írnak le, ezért a periódust számmal kell megadni.

Példa a hibasűrűségre

Tegyük fel, hogy 3 modul van integrálva a szoftvertermékébe. Mindegyik modulban a következő számú hibát fedezték fel:

  • 1. modul = 10 hiba
  • 2. modul = 20 hiba
  • 3. modul = 10 hiba

Összes hiba = 10+20+10 = 40

Az egyes modulok teljes kódsora a következő:

  • 1. modul = 1000 LOC
  • 2. modul = 1500 LOC
  • 3. modul = 500 LOC

Teljes sor Code = 1000+1500+500 = 3000

A hibasűrűség kiszámítása a következőképpen történik:

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

Ugyanaz a számítás modulonként alkalmazva hasznosabb, mint az összesített érték, ahogy az alábbi diagram is mutatja: a 2. modul 20 hibát hordoz 1500 LOC-ban, a 3. modul pedig 10 hibát hordoz mindössze 500 LOC-ban, tehát a 3. modul a sűrűbb és kockázatosabb a kettő közül, annak ellenére, hogy kevesebb hibát jelentett.

Oszlopdiagram, amely összehasonlítja a hibasűrűség kiszámításához használt három modul hibaszámát és kódsorait

A hibasűrűség szabványa

A hibasűrűségre nincs rögzített szabvány. A tanulmányok azt sugallják, hogy az egyik hiányosság Az ezer sornyi kódra vetített értéket általában a jó projektminőség jelének tekintik, és ez a szám a legszélesebb körben idézett ökölszabály az iparágban.

Az elvárás valóban együtt változik a területtel. A biztonságkritikus és szabályozott szoftverek, mint például a repüléstechnikai és orvostechnikai eszközök, esetében a KLOC-onkénti egy hibaszám alatti célt határoznak meg, míg a szokásos üzleti alkalmazások rutinszerűen e felett vannak. Mivel a számlálási szabályok, a méretegységek és a tesztelési mélység szervezetekenként eltérő, egy publikált tanulmányból vett referenciaérték csak egy olyan projekttel hasonlítható össze, amely ugyanúgy mér. A metrika gyakorlati használata tehát belső: hasonlítson össze egy kiadást ugyanazon termék korábbi, azonosan mért kiadásával.

A hibasűrűséget befolyásoló tényezők

Ugyanaz a kódbázis nagyon eltérő hibasűrűségi értékeket eredményezhet a következő tényezőktől függően:

  • Code bonyolultság. Mélyen beágyazott logika és magas ciklomatikus komplexitás soronként több hibát produkál, mint az egyszerű kód.
  • A figyelembe vett hibák típusa. Csak a funkcionális hibákat számoljuk, vagy a használhatóságot, a dokumentációt és a hibákat is beleszámítjuk. nem működőképes megállapítások jelentősen megváltoztatják a számlálót.
  • A figyelembe vett időtartam. Egy kéthetes tesztciklus alatt mért érték nem összehasonlítható egy hat hónapos gyártási ciklus alatt mért értékkel.
  • Fejlesztői és tesztelői készségek. A tapasztalt fejlesztők kevesebb hibát injektálnak, a tapasztalt tesztelők pedig többet találnak a létező hibákból, így a két hatás ellentétes irányba húzza a metrikát.
  • Teszt lefedettség. Azokat a hibákat, amelyeket soha nem kerestek, soha nem számolják, tehát teszt lefedettség csendben korlátozza a mért sűrűség magasra emelkedését.

Hibasűrűség vs. egyéb hibametrikák

A hibasűrűség egyetlen kérdésre ad választ: mennyire koncentráltak az ismert hibák. Három kapcsolódó metrika ad választ azokra a kérdésekre, amelyekre nem ad választ, és a legtöbb csapat együtt jelenti őket.

Metric Mit mér Kérdés, amit megválaszol
Hiba sűrűsége Megerősített hibák méret szerint osztva (KLOC vagy funkciópontok) Melyik modulok tartalmazzák a legtöbb hibát a méretükhöz képest?
Hiba Szivárgás A kiadás után talált hibák aránya az összes hibán belül Mennyi jutott el a tesztelési folyamaton túlra és a felhasználókhoz?
Hibaelhárítási hatékonyság A kiadás előtt eltávolított hibák aránya az összes hibához képest Mennyire volt hatékony a tesztelés a hibák időben történő felismerésében?
Hibasúlyossági index A hibákat súlyosság szerint súlyozták, nem pedig egyenlően számolták Mennyire károsak a hibák, nem csak a számuk?

Együttesen olvasva a négy teljesebb képet ad: az alacsony hibasűrűség magas hibaszivárgással inkább sekély tesztelésre, mintsem tiszta kódra utal, ami pontosan az a félreolvasás, amire a következő szakasz figyelmeztet.

A hibasűrűség előnyei

A hibasűrűség előnyei a következők:

  • Segít a tesztelés hatékonyságának mérésében.
  • Segít megkülönböztetni a hibák koncentrációját a komponensek és a szoftvermodulok között.
  • Hasznos a javításra vagy fejlesztésre szoruló területek azonosításában.
  • Hasznos a magas kockázatú összetevők kiemelésében, ami közvetlenül befolyásolja a kockázatalapú tesztelés.
  • Segít azonosítani a különböző erőforrások képzési igényeit.
  • Hasznos lehet a hibák által okozott tesztelési és átdolgozási ráfordítás becslésében.
  • Képes megbecsülni a szoftverben fennmaradó hibákat.
  • A kiadás előtt segít megállapítani, hogy az eddig elvégzett tesztelés elegendő-e.
  • Egy történelmi alapot teremt, amelyhez a későbbi kiadások mérhetők.

A hibasűrűség korlátai

A metrika könnyen kiszámítható és könnyen félreolvasható. A következő korlátozások határozzák meg, hogy mekkora súllyal esik latba a kiadási döntésben:

  • A nem észlelt hibák láthatatlanok. A számláló csak azokat a hibákat tartalmazza, amelyeket a tesztelés ténylegesen talált, így egy gyengén tesztelt modul hízelgő értéket mutat.
  • A súlyosságot figyelmen kívül hagyják. Egyetlen fizetési hibát elrontó hiba és egy kozmetikai illesztési probléma ugyanannak számít, ezért van szükség mellettük egy súlyosság szerinti nézetre is.
  • A hibák definíciói eltérőek. Két különbözően számoló csapat olyan számokat hoz létre, amelyeket nem lehet összehasonlítani, még ugyanazon a szervezeten belül sem.
  • A kódsorok gyenge méretproxyként működnek. A részletes kód csökkenti a sűrűséget anélkül, hogy bármit is javítana, és az egység nem összehasonlítható a különböző programozási nyelvek között.
  • A metrika kijátszható. A határesetnek számító jelentések elutasítása vagy a sorok számának felfújása egyaránt javítja a mutatót a termék fejlesztése nélkül.

Mindez nem teszi a Hibasűrűséget haszontalanná. Egyetlen termék következetesen mért trendjelzőjévé teszi, ahelyett, hogy egy olyan pontszámmá tenné, amellyel a csapatok összehasonlíthatók lennének egymás ellen.

Hogyan csökkenthető a hibasűrűség?

A hibasűrűség csökkentése valójában – nem csak papíron – azt jelenti, hogy a hibákat korábban kell megelőzni, a többit pedig a kiadás előtt kell feltárni. Az alábbi gyakorlatok azok, amelyek a publikált útmutatókban visszatérnek:

  • A tesztelés korábbi időpontra váltása. A tesztelők bevonása a követelmény- és tervezési szakaszba még azelőtt elfedi a kétértelműségeket, mielőtt azok kóddá válnának, és ott a legolcsóbb a hibákat eltávolítani.
  • Review kódot az összevonás előtt. A szakmai értékelés olyan logikai hibákat, félreértelmezett követelményeket és tervezési hibákat szűr ki, amelyek nem... egységteszt keresésére írták.
  • Automatizálja a regressziós csomagot. Ellenőrzések futtatása minden véglegesítésen keresztül folyamatos integráció megakadályozza a régi hibák visszatérését az új kód írása közben.
  • Először írj teszteket. Tesztvezérelt fejlesztés arra kényszeríti, hogy minden viselkedést a megvalósítás előtt specifikáljanak, és mutációs tesztelés majd megerősítheti, hogy a kapott tesztek valóban állítanak valamit.
  • Használjon statikus analízist. Az automatizált kódszkennelés egyetlen teszt futtatása előtt jelzi a null dereferenciákat, az erőforrás-szivárgásokat és a bonyolultsági gócpontokat.
  • Refaktoráld a sűrű modulokat. Miután a Hibasűrűség módszer azonosította a legrosszabb komponenseket, azok felosztása és egyszerűsítése általában csökkenti mind a bonyolultságot, mind a hibák számát.
  • A hibákat vissza kell vezetni a folyamatba. A retrospektív vizsgálatok során végzett kiváltó ok-elemzés az egyes hibákat folyamatjavításokká alakítja, nem pedig egyszeri javításokká.

Tracked kiadás a kiadás mellett szoftvertesztelési technikák és a lefedettségi adatok alapján a Hibasűrűség inkább korai figyelmeztető rendszerré, mintsem egy jelentéssé válik.

GYIK

A legtöbb csapat a rendszer tesztelésének végén számítja ki, amikor a hibajelentéseket már átvizsgálták és megerősítették. A ciklus közbeni mérés alábecsüli az értéket, mivel a jelentések még mindig nyitottak, és ha csak a kiadás utáni mérést végezzük, akkor szivárgási mérőszámmá válik.

Nem. Csak azt a kódot számold, amit a csapat írt és módosíthat. A generált fájlok, a gyártói könyvtárak vagy a tesztkód beleszámítása felfújja a nevezőt és mesterségesen csökkenti a sűrűséget, ami elrejti azokat a modulokat, amelyek valóban figyelmet igényelnek.

Igen. A csapatok általában egy második számértéket is jelentenek, amely a kritikus és nagy súlyosságú hibákra korlátozódik. Egy közepes összességében sűrűséggel, de számos kritikus hibával rendelkező modul nagyobb kiadási kockázatot jelent, mint egy sok kozmetikai hibával rendelkező.

Igen, más nevezővel. Agilis csapatok gyakran normalizálják a hibákat felhasználói történet, történetpont vagy leszállított funkció szerint. Az egység kevésbé számít, mint ugyanazon egység következetes használata a sprintek során.

A hibaelőrejelzési modellek a korábbi kód- és folyamatmetrikákból, például a komplexitásból, a lemorzsolódásból és a korábbi hibák számából tanulnak, hogy rangsorolják, mely fájlok a legvalószínűbben hibásak. A tesztelők ezután a legnagyobb kockázatú modulokra összpontosítanak, mielőtt a build mérése megtörténne.

Közvetve. A Copilot gyorsan készít egységteszteket, szélső eseteket és sablonos teszteket, ami növeli a lefedettséget és korábban felszínre hozza a hibákat. Emellett olyan kódot generál, amely ugyanolyan ellenőrzést igényel, mint bármely más, így soha nem szünteti meg a szakmai ellenőrzés szükségességét.

A tesztvezető vagy a minőségbiztosítási vezető általában jelenti, de a számlálási szabályokat először a fejlesztővel és a projektvezetővel kell egyeztetni. A megerősített hiba és a megszámlálható kód elfogadott definíciója nélkül a szám nem védhető egy kiadási megbeszélésen.

Nem feltétlenül. Egy kiugrás gyakran azt jelenti, hogy a tesztelés végre elért egy korábban érintetlen modult, ami jó hír, ha későn fedezték fel. Olvassa el a lefedettséggel és a hibatrenddel együtt, mielőtt minőségi hibaként kezelné.

Foglald össze ezt a bejegyzést a következőképpen: