Code Lefedettségi eszköz: Kimutatás-, fióktelep- és döntéstesztelés

⚡ Okos összefoglaló

Code A lefedettség egy fehér dobozos mérés, amely azt mutatja, hogy a forráskódot milyen mértékben gyakorolta egy tesztkészlet, helping A csapatok nem tesztelt utasításokat, elágazásokat, feltételeket és útvonalakat találnak, amelyeket rejtett hibák foglalhatnak el.

  • 🎯 Meghatározás: Code A lefedettség számszerűsíti, hogy a forráskód mekkora részét hajtják végre a tesztek valójában.
  • 📊 Módszerek: Öt metódus létezik: utasítás-, döntés-, elágazás-, feltétel- és véges állapotgép-lefedettség.
  • 🧩 Nyilatkozat vs. ág: A kimutatás lefedettsége a sorokat ellenőrzi, míg a fióki lefedettség minden döntés kimenetelét.
  • 🇧🇷 Code vs. funkcionális: Code a gyakorolt ​​lefedettségi intézkedések kódja; a funkcionális lefedettségi intézkedésekre vonatkozó követelmények.
  • 🇧🇷 Eszközök: Cobertura, OpenCloverAz EMMA és a Sonar automatizálja a lefedettség mérését.
  • 🤖 AI segítség: A mesterséges intelligencia által biztosított eszközök automatikusan generálnak teszteket, és felszínre hozzák a nem tesztelt, magas kockázatú lefedettségi réseket.

Code Lefedettségi útmutató

Mi a Code Lefedettség?

Code lefedettség egy olyan mérőszám, amely leírja, hogy egy program forráskódját milyen mértékben tesztelték. Ez a tesztelés egyik formája. fehér dobozos tesztelés , amely megkeresi a program azon területeit, amelyeket egy teszteset-készlet nem vizsgált. Segít további tesztesetek létrehozásában is a lefedettség növelése és a kódlefedettség mennyiségi mértékének meghatározása érdekében.

A legtöbb esetben egy kódlefedettségi rendszer információkat gyűjt a futó programról. Ezután ezeket kombinálja a forráskód-információkkal, hogy jelentést készítsen a tesztkészlet kódlefedettségéről.

Miért használja Code Lefedettségi tesztelés?

Íme néhány fő ok a kódlefedettség használatára:

  • Segít mérni a tesztek implementálásának hatékonyságát.
  • A tesztelés kvantitatív mérését kínálja.
  • Meghatározza, hogy a forráskód milyen mértékben lett tesztelve.

Code Lefedettségi módszerek

A főbb kódfedés módszerek a következők:

  • Nyilatkozat lefedettsége
  • Döntés lefedettsége
  • Ágak lefedettsége
  • Toggle Lefedettség
  • FSM lefedettség

Nyilatkozat lefedettsége

Nyilatkozat lefedettsége egy fehér dobozos tesztelési technika, amelyben a forráskód összes végrehajtható utasítása legalább egyszer végrehajtásra kerül. Arra szolgál, hogy kiszámítsa a forráskódban végrehajtott utasítások számát. Az utasításlefedettség fő célja, hogy lefedje a forráskód összes lehetséges útvonalát, sorát és utasítását.

Az utasításlefedettséget a tesztelt kód szerkezete alapján forgatókönyvek levezetésére használják.

Nyilatkozat lefedettsége

A white box tesztelés során a tesztelő arra koncentrál, hogyan működik a szoftver. Más szóval, a tesztelő a forráskód belső működésére koncentrál, a vezérlési folyamatábrák vagy folyamatábrák tekintetében.

Általánosságban elmondható, hogy bármilyen szoftverben, ha megnézzük a forráskódot, rengeteg különféle elemet találunk, például operátorokat, függvényeket, stb.ping, kivételkezelők és így tovább. A program bemenetétől függően előfordulhat, hogy néhány kódutasítás nem hajtódik végre. Az utasításlefedettség célja, hogy lefedje a kódban található összes lehetséges elérési utat, sort és utasítást.

Értsük meg ezt egy példával, amely bemutatja, hogyan kell kiszámítani a kimutatásfedezetet. Itt két különböző forgatókönyvet veszünk figyelembe, hogy ellenőrizzük a kimutatásfedezet százalékos arányát mindkét forgatókönyv esetében.

Forrás Code:

Prints (int a, int b) {                       ------------  Printsum is a function
    int result = a + b;
    If (result > 0)
        Print ("Positive", result)
    Else
        Print ("Negative", result)
    }                                        -----------   End of the source code

1 forgatókönyv: Ha A = 3, B = 9

Kimutatás lefedettségi forgatókönyve 1

A sárgával jelölt utasítások azok, amelyek a forgatókönyv szerint végrehajtásra kerülnek. A végrehajtott utasítások száma = 5, az utasítások teljes száma = 7, tehát az utasítás lefedettsége = 5/7 = 71%.

2 forgatókönyv: Ha A = -3, B = -9

Kimutatás lefedettségi forgatókönyve 2

A sárgával jelölt utasítások azok, amelyek a forgatókönyv szerint végrehajtásra kerülnek. A végrehajtott utasítások száma = 6, az utasítások teljes száma = 7, tehát az utasítás lefedettsége = 6/7 = 85%.

De összességében, ha látod, az összes állítást mindkét forgatókönyv lefedi. Tehát arra a következtetésre juthatunk, hogy az állítások teljes lefedettsége 100%.

Mire terjed ki a nyilatkozat fedezete?

  1. Fel nem használt nyilatkozatok
  2. Halott Code
  3. Fel nem használt ágak
  4. Hiányzó nyilatkozatok

Döntéslefedettség tesztelése

Döntés lefedettsége egy fehér dobozos tesztelési technika, amely a forráskódban található egyes logikai kifejezések igaz vagy hamis eredményét jelenti. A döntéslefedettségi tesztelés célja az összes hozzáférhető forráskód lefedése és validálása azáltal, hogy ellenőrzi és biztosítja, hogy minden lehetséges döntési pont minden ága legalább egyszer végrehajtásra kerüljön.

Ennél a lefedettségi típusnál a kifejezések összetetté válhatnak, ami megnehezíti a 100%-os lefedettség elérését. Ezért különféle módszereket használnak ennek a mutatónak a jelentésére. Ezek a módszerek a legkritikusabb kombinációkat rangsorolják. Bár hasonló az áglefedettséghez, nagyobb érzékenységet biztosít a vezérlési folyamattal szemben.

Döntéslefedettség tesztelése

Példa a döntési lefedettségre

Vegye figyelembe a következő kódot:

Demo(int a) {
    If (a > 5)
        a = a * 3
    Print (a)
    }

1 forgatókönyv: Az „a” értéke 2. A döntés „Nem” kimenetele. Ha az (a>5) be van jelölve, akkor a döntés lefedettsége = 50%.

2 forgatókönyv: Az „a” értéke 6. A döntés „Igen” kimenetele. Ha (a>5) be van jelölve, akkor a döntés lefedettsége = 50%.

Teszt eset A értéke teljesítmény Döntés lefedettsége
1 2 2 50%
2 6 18 50%

Ágazati lefedettség tesztelése

Ágak lefedettsége egy fehér dobozos tesztelési módszer, amelyben egy kódmodul (utasítás vagy ciklus) minden eredményét tesztelik. Az elágazás lefedettségének célja annak biztosítása, hogy minden ág minden döntési feltétele legalább egyszer végrehajtásra kerüljön. Segít a független kódszegmensek töredékeinek mérésében, és az elágazások nélküli szakaszok megtalálásában.

Például, ha az eredmények binárisak, tesztelnie kell az igaz és hamis eredményeket is.

A fióklefedettség kiszámításának képlete:

Fiókfedezeti képlet

Példa a fióktelep lefedettségére

Az elágazás lefedettségének megismeréséhez tekintsük a korábban használt példát. Az elágazás lefedettsége a feltétel nélküli elágazást is figyelembe veszi.

Teszt eset A értéke teljesítmény Döntés lefedettsége Ágak lefedettsége
1 2 2 50% 33%
2 6 18 50% 67%

A fióki lefedettség előnyei:

  • Lehetővé teszi a kód összes ágának validálását.
  • Segít biztosítani, hogy egyetlen elágazás se okozzon rendellenességet a program működésében.
  • Eltávolítja a kimutatáslefedettség tesztelése miatt felmerülő problémákat.
  • Lehetővé teszi olyan területek megtalálását, amelyeket más vizsgálati módszerekkel nem teszteltek.
  • Lehetővé teszi a kód lefedettségének mennyiségi mértékének meghatározását.
  • Az elágazási lefedettség figyelmen kívül hagyja a logikai kifejezéseken belüli elágazásokat.

Állapot lefedettség vizsgálata

Feltétel LefedettségA feltétellefedettség, vagy kifejezéslefedettség egy tesztelési módszer, amely feltételes utasításokban található változók vagy részkifejezések tesztelésére és kiértékelésére szolgál. A feltétellefedettség célja az egyes logikai feltételek egyedi eredményeinek ellenőrzése. A feltétellefedettség jobb érzékenységet biztosít a vezérlési folyamatra, mint a döntési lefedettség. Ebben a lefedettségben csak a logikai operandusokat tartalmazó kifejezéseket vesszük figyelembe.

Például, ha egy kifejezés logikai műveleteket tartalmaz, mint például ÉS, VAGY vagy XVAGY, az a lehetőségek teljes számát jelzi. A feltétellefedettség nem garantálja a teljes döntési lefedettséget.

Az állapotlefedettség kiszámításának képlete:

Állapotfedezeti képlet

Egy két operandusú kifejezés esetén négy lehetséges kombináció létezik: TT, FF, TF és FT. Tekintsük az X=3, Y=4 (x b) HAMIS, ami 1/4 = 25%-os feltétellefedettséget eredményez.

Véges állapotú gépi lefedettség

A véges állapotú gép lefedettség minden bizonnyal a kódlefedettségi módszerek legösszetettebb típusa. Ez azért van, mert a terv viselkedésén dolgozik. Ebben a lefedettségi módszerben meg kell vizsgálni, hogy hányszor látogatják meg vagy haladnak át bizonyos állapotokon. Azt is ellenőrzi, hogy hány sorozat található egy véges állapotú gépben.

Melyik típus Code Választható lefedettség

Ez minden bizonnyal a legnehezebben megadható válasz. A lefedettségi módszer kiválasztásához a tesztelőnek ellenőriznie kell, hogy a következőket tartalmazza-e:

  • a tesztelt kód egy vagy több felfedezetlen hibát tartalmaz,
  • a lehetséges büntetés költsége,
  • az elveszett hírnév ára,
  • az elveszett értékesítés költsége, és így tovább.

Minél nagyobb a valószínűsége annak, hogy a hibák költséges gyártási hibákat okoznak, annál súlyosabb lefedettségi szintet kell választania.

Code Lefedettség vs. funkcionális lefedettség

Code Lefedettség Funkcionális lefedettség
Megmutatja, hogy a forráskódot mennyire jól tesztelték a tesztpadon. Azt méri, hogy a tesztpad mennyire fedte le a terv funkcionalitását.
Soha nem használ tervezési specifikációt. Tervezési specifikációt használ.
Fejlesztők készítették. Tesztelők készítették.

Code Lefedettségi eszközök

Íme egy lista a fontos kódfedés eszközökről:

Eszköz neve Leírás
Cobertura Egy nyílt forráskódú kód lefedettségi eszköz. A tesztek lefedettségét úgy méri, hogy elemzi a kódbázis eszközeit, és azt, hogy mely kódsorok futnak le, és melyek nem a tesztkészlet futtatásakor.
Lóhere Lóhere (OpenClover) a tesztelési időt is csökkenti azáltal, hogy csak azokat a teszteket futtatja le, amelyek az előző build óta módosított alkalmazáskódot fedik le.
DevPartner A DevPartner lehetővé teszi a fejlesztők számára az elemzést Java kód a kód minősége és összetettsége szempontjából.
Emma Az EMMA támogatja az osztály-, metódus-, sor- és alapblokk-lefedettséget, forrásfájl-, osztály- és metódusszinten összesítve.
Kalistick A Kalistick egy harmadik féltől származó alkalmazás, amely különböző nézőpontokból elemzi a kódot.
CoView és CoAnt Kódlefedettségi eszköz metrikákhoz, mock objektumok létrehozásához, kód tesztelhetőségéhez, útvonal- és elágazás-lefedettséghez és egyebekhez.
Bullseye for C++ A BullseyeCoverage egy kódfedés eszköz a következőkhöz: C++ és C.
Fishfinder A Sonar egy nyílt kódot lefedő eszköz, amely segít a kódminőség kezelésében.

A használat előnyei és hátrányai Code Lefedettség

Előnyök Hátrányok
Hasznos a kód lefedettségének mennyiségi mérésének értékeléséhez. Még ha egy adott funkció nincs is megvalósítva a tervben, a kód lefedettsége továbbra is 100%-os lefedettséget jelent.
Lehetővé teszi további tesztesetek létrehozását a lefedettség növelése érdekében. Kódlefedettség segítségével nem lehet megállapítani, hogy egy jellemző minden lehetséges értékét tesztelték-e.
Lehetővé teszi a program azon területeinek megtalálását, amelyeket nem teszteltek tesztesetek halmazával. Code A lefedettség nem azt mutatja meg, hogy mennyit és mennyire jól fedted le a logikádat.

GYIK

Sok csapat 70-80%-os eredményt tűz ki célul gyakorlatiasan. A 100% elérése ritkán költséghatékony. Koncentrálj a kritikus, magas kockázatú logika lefedésére, ahelyett, hogy egyetlen számot kergetnél a teljes kódbázisban.

Nem. A teljes lefedettség minden egyes lefutott sort bizonyít, nem pedig azt, hogy minden bemenetet, értéket vagy követelményt validáltak. A logikai hibák és a hiányzó funkciók továbbra is észrevétlenül áthaladhatnak, így a lefedettség inkább kiegészíti, mint helyettesíti a jó teszttervet.

Code A lefedettség azt méri, hogy mennyi forráskód fut le a tesztelés során. A teszt lefedettsége szélesebb körű, trachogy a tesztek mennyire jól kezelik a követelményeket, a funkciókat és a kockázatokat. Code A lefedettség az egyik bemeneti tényező a teljes tesztlefedettségben.

Nem. Elérhető a 100%-os utasításlefedettség úgy, hogy az elágazásokat, például egy hiányzó else útvonalat, teszteletlenül hagyjuk. Az elágazási (döntési) lefedettség erősebb, mert magában foglalja az utasításlefedettséget és minden kimenetelt végrehajt.

A mesterséges intelligencia elemzi a forráskódot és a meglévő teszteket, hogy meghatározzák a nem tesztelt, magas kockázatú útvonalakat, majd új eseteket javasol vagy generál. A gépi tanulás a futtatandó teszteket is rangsorolja, lerövidítve a visszajelzési időt, miközben...ping magas a lefedettség.

Igen. Az olyan mesterséges intelligencia eszközök, mint a Diffblue Cover, beolvassák a kódot és önállóan írnak egységteszteket a fedetlen logikához. Kockázatos ágakat és feltételeket céloznak meg, sokkal kevesebb manuális erőfeszítéssel növelve a lefedettséget.

OpenClover méri az utasítások, elágazások és metódusok lefedettségét, és több mint 20 mérőszámot gyűjt. Cobertura, az EMMA és JaCoCo más széles körben használt ingyenes lehetőségek is vannak Java projekteket.

A módosított feltétel/döntés lefedettsége megköveteli, hogy a döntésben szereplő minden feltétel függetlenül befolyásolja az eredményt. Szigorúbb, mint az ági lefedettség, és a DO-178C szabvány értelmében biztonsági szempontból kritikus szoftverekre, például a repüléselektronikára van előírva.

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