Code Lefedettségi oktatóanyag: Fióktelep, kimutatás és döntés tesztelése

Mi a Code lefedettség?

Code A lefedettség egy olyan mérőszám, amely leírja, hogy a program forráskódját milyen mértékben tesztelték. Ez a „fehér dobozos” tesztelés egyik formája, amely megtalálja a program azon területeit, amelyeket egy teszteset-készlet nem vizsgált meg. Emellett teszteseteket is létrehoz a lefedettség növelése és a kódlefedettség kvantitatív mértékének meghatározása érdekében.

A legtöbb esetben a kódlefedési rendszer információkat gyűjt a futó programról. Ezt a forráskód-információkkal is kombinálja, hogy jelentést készítsen a tesztcsomag kódlefedettségéről.

Miért érdemes Code Lefedettségi tesztelés?

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

  • Segít mérni a teszt végrehajtásának hatékonyságát
  • Kvantitatív mérést kínál.
  • Meghatározza, hogy a forráskód milyen mértékben lett tesztelve.

Code Lefedettségi módszerek

Az alábbiakban bemutatjuk a főbb kódlefedési módszereket

  • 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 doboz tesztelési technika, amelyben a forráskód összes végrehajtható utasítása legalább egyszer végrehajtásra kerül. A végrehajtott utasítások számának kiszámítására szolgál a forráskódban. A Statement Coverage fő célja, hogy lefedje a forráskód összes lehetséges útvonalát, sorát és utasítását.

A kimutatás lefedettsége a forgatókönyv származtatására szolgál a tesztelt kód szerkezete alapján.

Nyilatkozat lefedettsége

In fehér Box Tesztelés, a tesztelő a szoftver működésére koncentrál. Más szóval, a tesztelő a forráskód belső működésére fog koncentrálni a vezérlési folyamatábrákra vagy folyamatábrákra vonatkozóan.

Általánosságban elmondható, hogy bármilyen szoftverben, ha megnézzük a forráskódot, rengeteg különféle elem található, például operátorok, függvények, stb.ping, kivételes kezelők stb. 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án keresztül, hogyan számítsuk ki a kimutatás lefedettségét.

Forgatókönyv a nyilatkozat-lefedettség kiszámításához az adott forráskódhoz. Itt két különböző forgatókönyvet veszünk figyelembe, hogy ellenőrizzük az egyes forgatókönyvek nyilatkozatlefedettségének százalékos arányát.

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

Nyilatkozat lefedettsége

A sárga színnel 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 összes utasítás száma = 7

Nyilatkozat lefedettsége: 5/7 = 71%

Nyilatkozat lefedettsége

Hasonlóképpen látni fogjuk a 2. forgatókönyvet,

2 forgatókönyv:

Ha A = -3, B = -9

Nyilatkozat lefedettsége

A sárga színnel 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 állítások száma összesen = 7

Nyilatkozat lefedettsége

Nyilatkozat lefedettsége: 6/7 = 85%

Nyilatkozat lefedettsége

De összességében, ha látja, az összes állítást mindkét forgatókönyv lefedi. Ebből arra következtethetünk, hogy a kimutatás teljes lefedettsége 100%.

Nyilatkozat lefedettsége

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 doboz tesztelési technika, amely a forráskód minden logikai kifejezésének igaz vagy hamis eredményét jelenti. A döntési lefedettség tesztelésének célja az összes elérhető forráskód lefedése és érvényesítése 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égtípusnál a kifejezések bonyolulttá válhatnak, így kihívást jelent a 100%-os lefedettség elérése. Ez az oka annak, hogy különféle módszereket használnak a mérőszám jelentésére. Ezek a módszerek a legkritikusabb kombinációkat részesítik előnyben. Bár hasonló a döntési lefedettséghez, nagyobb érzékenységet biztosít az áramlás szabályozására.

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:

A értéke 2

Döntéslefedettség tesztelése

A sárgával kiemelt kód végrehajtásra kerül. Itt a döntés „Nem” eredménye Ha (a>5) be van jelölve.

Döntési fedezet = 50%

2 forgatókönyv:

A értéke 6

Döntéslefedettség tesztelése

A sárgával kiemelt kód végrehajtásra kerül. Itt a döntés „Igen” eredménye Ha (a>5) be van jelölve.

Döntési fedezet = 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 doboz tesztelési módszer, amelyben egy kódmodul (utasítás vagy ciklus) minden eredményét tesztelik. A fióklefedettség célja annak biztosítása, hogy minden egyes döntési feltétel 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ás 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:

Ágazati lefedettség tesztelése

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

Az ágak lefedettségének megismeréséhez tekintsük a korábban használt példát

Vegye figyelembe a következő kódot:

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

Ágazati lefedettség tesztelése

A fiókfedezet figyelembe veszi a feltétel nélküli fióktelepet is

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:

Az ági lefedettség tesztelése a következő előnyöket kínálja:

  • Lehetővé teszi a kód összes ágának érvényesítését
  • Segít abban, hogy az elágazás ne okozzon rendellenességet a program működésében
  • A fióklefedettség módszere eltávolítja a nyilatkozatlefedettség tesztelése miatt felmerülő problémákat
  • Lehetővé teszi, hogy megtalálja azokat a területeket, amelyeket más vizsgálati módszerekkel nem tesztelnek
  • Lehetővé teszi a kódlefedettség mennyiségi mérőszámának meghatározását
  • Az áglefedettség figyelmen kívül hagyja a logikai kifejezéseken belüli ágakat

Állapot lefedettség vizsgálata

Feltétel Lefedettség vagy a kifejezéslefedettség a feltételes utasításban lévő változók vagy részkifejezések tesztelésére és kiértékelésére használt tesztelési módszer. A feltétellefedettség célja minden egyes logikai feltétel egyedi kimenetelének ellenőrzése. A feltételek lefedettsége jobb érzékenységet kínál a vezérlési folyamatra, mint a döntési lefedettség. Ebben a lefedettségben csak a logikai operandusokkal rendelkező kifejezéseket veszik figyelembe.

Például, ha egy kifejezés logikai műveleteket tartalmaz, mint az ÉS, VAGY, XOR, ami az összes lehetőséget jelzi.

A feltétel lefedettség nem ad garanciát a teljes döntési fedezetre.

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

Állapot lefedettség vizsgálata

Példa:

Állapot lefedettség vizsgálata

A fenti kifejezéshez 4 lehetséges kombinációnk van

  • TT
  • FF
  • TF
  • FT

Vegye figyelembe a következő bemenetet

X = 3

Y = 4

(x TRUE Az állapot lefedettsége ¼ = 25%
A = 3

B = 4

(a>b) HAMIS

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

A véges állapotú gépi lefedettség minden bizonnyal a kódlefedési módszer legösszetettebb típusa. Ez azért van, mert a tervezés viselkedésén dolgozik. Ennél a lefedettségi módszernél meg kell keresni, hogy hány időspecifikus állapotot látogatnak meg, tranzitálnak. Azt is ellenőrzi, hogy egy véges állapotú gép hány sorozatot tartalmaz.

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

Minden bizonnyal ez a legnehezebb válasz. A lefedettségi módszer kiválasztásához a tesztelőnek ellenőriznie kell, hogy a

  • a tesztelés alatt álló kódnak egyetlen vagy több feltáratlan hibája van
  • az esetleges büntetés költsége
  • az elvesztett hírnév költsége
  • elveszett eladás költsége stb.

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
Code A lefedettség megmutatja, hogy a forráskódot mennyire jól tesztelte a tesztpad. A funkcionális lefedettség azt méri, hogy a tesztpad mennyire fedi le a tervezés funkcionalitását.
Soha ne használjon tervezési specifikációt Használja a tervezési specifikációt
A fejlesztők készítették Tesztelők készítette

Code Lefedettségi eszközök

Itt található a fontos kódlefedettségi eszközök listája:

Eszköz neve Leírás
Cobertura Ez egy nyílt forráskódú lefedettségi eszköz. A teszt lefedettségét egy kódbázis műszerezésével méri, és elemzi, hogy a tesztcsomag futásakor mely kódsorok futnak, és melyek nem.
Lóhere A Clover a tesztelési időt is csökkenti, mivel csak azokat a teszteket futtatja, amelyek lefedik az előző build óta módosított alkalmazáskódot.
DevPartner A DevPartner lehetővé teszi a fejlesztők számára az elemzést Java kódot Code Minőség és komplexitás.
Emma Az EMMA támogatja az osztály-, metódus-, vonal- és alapblokk-lefedettséget, az összesített forrásfájl-, osztály- és metódusszinteket.
Kalistick A Kalistick egy harmadik féltől származó alkalmazás, amely különböző szempontokból elemzi a kódokat.
CoView és CoAnt A kódolószoftver egy kódlefedési eszköz metrikákhoz, álobjektumok létrehozásához, kód tesztelhetőségéhez, útvonal- és áglefedettséghez stb.
Bullseye for C++ A BulseyeCoverage egy kódlefedési eszköz C++ és C.
Fishfinder A Sonar egy nyílt kódlefedettségi 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

Code Lefedettségi előnyök Code Lefedettségi hátrányok
Hasznos a kódlefedettség mennyiségi mérőszámának értékeléséhez Még akkor is, ha egy adott funkció nincs implementálva a tervezésben, a kódlefedettség 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 Nem állapítható meg, hogy egy jellemző összes lehetséges értékét teszteltük-e a kódlefedettség segítségével
Lehetővé teszi, hogy megtalálja a program azon területeit, amelyeket tesztesetek nem gyakorolnak Code A lefedettség sem azt mutatja meg, hogy mennyit és milyen jól fedted le a logikádat.
Abban az esetben, ha a megadott függvény nincs implementálva, vagy nem szerepel a specifikációban, akkor a struktúra alapú technikák nem tudják megtalálni a problémát.

Összegzésként

  • Code A lefedettség egy olyan mérőszám, amely leírja, hogy a program forráskódját milyen mértékben tesztelték.
  • Segít mérni a teszt végrehajtásának hatékonyságát
  • Öt Code A fedezeti módszerek a következők: 1.) Kimutatás szerinti fedezet 2.) Állapot szerinti fedezet 3.) Fióktelep szerinti fedezet 4.) Toggle Lefedettség 5) FSM lefedettség
  • Az utasításlefedettség magában foglalja a forráskódban található összes végrehajtható utasítás legalább egyszeri végrehajtását
  • A döntési lefedettség minden egyes logikai kifejezés igaz vagy hamis eredményét jelenti
  • Az ági lefedettségben a kódmodul minden eredményét tesztelik
  • A feltételes megmutatja, hogy a feltételes utasításban lévő változók vagy részkifejezések hogyan kerülnek kiértékelésre
  • A véges állapotú gépi lefedettség minden bizonnyal a kódlefedési módszer legösszetettebb típusa
  • A fedezeti módszer kiválasztásához a tesztelőnek ellenőriznie kell a potenciális büntetés költségét, az elvesztett hírnevet, az értékesítés elvesztését stb.
  • Code A lefedettség megmutatja, hogy a forráskódot mennyire jól tesztelte a tesztpad, míg a funkcionális lefedettség azt méri, hogy a terv funkcionalitása mennyire jól lefedett.
  • Cobertura, JTest, Clover, Emma, ​​Kalistick néhány fontos kódlefedési eszköz
  • Code A lefedettség lehetővé teszi további tesztesetek létrehozását a lefedettség növelése érdekében.
  • Code A lefedettség nem segít meghatározni, hogy egy jellemző összes lehetséges értékét teszteltük-e.

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