Mi a Code lefedettség?
A kód lefedettség olyan mérték, amely leírja a program forráskódjának tesztelésének mértékét. A fehér dobozos tesztelés egyik formája, amely megtalálja a program azon területeit, amelyeket nem tesztesetek halmaza használ. Ezenkívül létrehoz néhány tesztesetet a lefedettség növelése és a kód lefedettség kvantitatív mértékének meghatározása érdekében.
A legtöbb esetben a kódfedezeti rendszer információkat gyűjt a futó programról. Kombinálja ezt a forráskód információkkal is, hogy jelentést készítsen a tesztkészlet kód lefedettségéről.
Ebben az oktatóanyagban megtanulja-
- Mi a Code lefedettség?
- Miért érdemes használni a Code Coverage-t?
- Kód lefedési módszerek
- Nyilatkozati lefedettség
- Döntési lefedettség
- Ágfedés
- Állapot lefedettség
- Véges állapotú gép lefedettsége
- Milyen típusú kód lefedettséget válasszon
- Kód lefedettség és funkcionális lefedettség
- Kódfedezeti eszközök
- A kódfedezet használatának előnyei és hátrányai
Miért érdemes használni a Code Coverage-t?
Íme néhány fő ok a kód lefedettségének használatára:
- Segít mérni a teszt megvalósításának hatékonyságát
- Kvantitatív mérést kínál.
- Meghatározza a forráskód tesztelésének mértékét.
Kód lefedési módszerek
Az alábbiakban bemutatjuk a főbb kódolási módszereket
- Nyilatkozati lefedettség
- Döntési lefedettség
- Ágfedés
- Kapcsolja be a lefedettséget
- MSZÁ lefedettség
Nyilatkozati lefedettség
A Statement Coverage egy fehér dobozos tesztelési technika, amelyben a forráskód összes futtatható utasítását legalább egyszer végrehajtják. A végrehajtott forráskódban szereplő utasítások számának kiszámítására szolgál. A nyilatkozat lefedettségének fő célja az összes lehetséges út, vonal és utasítás lefedése a forráskódban.
Az állítás lefedettségét használjuk a forgatókönyv levezetésére a tesztelt kód szerkezete alapján.
A White Box Testingben a tesztelő a szoftver működésére koncentrál. Más szavakkal, a tesztelő a forráskód belső működésére fog koncentrálni a vezérlő folyamatábrák vagy folyamatábrák tekintetében.
Általában bármely szoftverben, ha megnézzük a forráskódot, akkor sokféle elem lesz, például operátorok, függvények, ciklusok, kivételes kezelők stb. A program bevitele alapján előfordulhat, hogy a kód utasítások egy része nem kerül végrehajtásra . A nyilatkozat lefedettségének célja, hogy lefedje az összes lehetséges útvonalat, sort és utasítást a kódban.
Értsük meg ezt egy példával, hogyan lehet kiszámítani az utasítás lefedettségét.
Forgatókönyv az állítás lefedettségének 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 kimutatásainak százalékos arányát.
Forráskód:
Nyomatok (int a, int b) {------------ A Printsum egy függvényint eredmény = a + b;Ha (eredmény> 0)Nyomtatás ("Pozitív", eredmény)MásNyomtatás ("Negatív", eredmény)} ----------- A forráskód vége
1. forgatókönyv:
Ha A = 3, B = 9
A sárga színnel jelölt utasítások azok, amelyeket a forgatókönyv szerint hajtanak végre
A végrehajtott utasítások száma = 5, Az utasítások teljes száma = 7
Nyilatkozati lefedettség: 5/7 = 71%
Hasonlóképpen látni fogjuk a 2. forgatókönyvet is,
2. forgatókönyv:
Ha A = -3, B = -9
A sárga színnel jelölt utasítások azok, amelyeket a forgatókönyv szerint hajtanak végre.
A végrehajtott utasítások száma = 6
Az állítások száma = 7
Nyilatkozati lefedettség: 6/7 = 85%
De összességében, ha úgy látja, az összes állítást vannak takarva 2 nd forgatókönyv tekinthető. Tehát arra a következtetésre juthatunk, hogy az állítás teljes lefedettsége 100%.
Mire terjed ki a nyilatkozat lefedettsége?
- Fel nem használt nyilatkozatok
- Halott kód
- Fel nem használt ágak
- Hiányzó nyilatkozatok
Döntési lefedettség
A döntési lefedettség egy fehér dobozos tesztelési technika, amely a forráskód minden egyes logikai kifejezésének igaz vagy hamis eredményét közli. A döntési lefedettség tesztelésének célja az összes hozzáférhető forráskód lefedése és érvényesítése annak ellenőrzésével és biztosításával, hogy minden lehetséges döntési pont minden ágát legalább egyszer végrehajtják.
Ebben a lefedettségben a kifejezések néha bonyolulttá válhatnak. Ezért nagyon nehéz 100% -os lefedettséget elérni. Ezért sokféle módszer létezik ennek a mutatónak a jelentésére. Mindezek a módszerek a legfontosabb kombinációk lefedésére összpontosítanak. Nagyon hasonlít a döntés lefedettségéhez, de jobb érzékenységet kínál az áramlás szabályozására.
Példa a döntés lefedettségére
Tekintsük a következő kód-
Demo (int a) {Ha (a> 5)a = a * 3Nyomtatás (a)}
1. forgatókönyv:
Az a értéke 2
A sárga színnel kiemelt kód végrehajtásra kerül. Itt be van jelölve a döntés "Nem" eredménye (ha (a> 5).
Döntési lefedettség = 50%
2. forgatókönyv:
Az a értéke 6
A sárga színnel kiemelt kód végrehajtásra kerül. Itt be van jelölve a döntés "Igen" eredménye, ha (a> 5).
Döntési lefedettség = 50%
Próbaper | A értéke | Kimenet | Döntési lefedettség |
1 | 2 | 2 | 50% |
2 | 6. | 18. | 50% |
Ágfedés
A Branch Coverage egy fehér dobozos tesztelési módszer, amelyben egy kódmodul (utasítás vagy ciklus) minden eredményét tesztelik. A fióktelep lefedettségének célja annak biztosítása, hogy minden fióktelep minden döntési feltétele legalább egyszer teljesüljön. Segít a független kódszegmensek töredékeinek mérésében és az ág nélküli szakaszok megismerésében.
Például, ha az eredmények binárisak, akkor igaz és hamis eredményeket is tesztelnie kell.
Az ágfedezet kiszámításához használt képlet:
Példa ágfedezetre
Az ágak lefedettségének megismeréséhez vegyük figyelembe a korábban használt példát
Vegye figyelembe a következő kódot
Demo (int a) {Ha (a> 5)a = a * 3Nyomtatás (a)}
Az ágfedezet a feltétel nélküli elágazást is figyelembe veszi
Próbaper | A értéke | Kimenet | Döntési lefedettség | Ágfedés |
1 | 2 | 2 | 50% | 33% |
2 | 6. | 18. | 50% | 67% |
A fióktelep lefedettségének előnyei:
Az ág lefedettségének 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 annak biztosításában, hogy egyetlen elágazás ne okozzon rendellenességet a program működésében
- A fiókfedezeti módszer eltávolítja azokat a kérdéseket, amelyek a kimutatási lefedettség tesztelése miatt fordulnak elő
- Lehetővé teszi, hogy megtalálja azokat a területeket, amelyeket más tesztelési módszerek nem tesztelnek
- Ez lehetővé teszi a kód lefedettségének kvantitatív mérését
- Az ág lefedettség figyelmen kívül hagyja a logikai kifejezéseken belüli ágakat
Állapot lefedettség
A feltétel lefedettsége vagy a kifejezés lefedettsége olyan tesztelési módszer, amelyet a feltételes utasítás változóinak vagy részkifejezéseinek tesztelésére és értékelésére használnak. A feltétel lefedettségének célja az egyes logikai feltételek egyedi eredményeinek ellenőrzése. Az állapotfedés jobb érzékenységet kínál a vezérlési áramlásra, mint a döntés lefedettsége. Ebben a lefedettségben csak a logikai operandusú kifejezéseket vesszük figyelembe.
Például, ha egy kifejezésnek olyan logikai műveletei vannak, mint az AND, OR, XOR, amely a teljes lehetőségeket jelzi.
A feltétel lefedettsége nem garantálja a teljes döntési lefedettséget.
A feltétel lefedettségének kiszámításához használt képlet:
Példa:
A fenti kifejezéshez 4 lehetséges kombináció áll rendelkezésre
- TT
- FF
- TF
- FT
Vegye figyelembe a következő bevitelt
X = 3 Y = 4 |
(x |
IGAZ |
A feltétel lefedettsége ¼ = 25% |
A = 3 B = 4 |
(a> b) |
HAMIS |
Véges állapotú gép lefedettsége
A véges állapotú gép lefedettsége minden bizonnyal a legbonyolultabb típusú kódolási módszer. Ez azért van, mert a tervezés viselkedésén dolgozik. Ebben a lefedettségi módszerben meg kell keresni, hogy hány időspecifikus állapotot látogatnak meg, haladnak át. Azt is ellenőrzi, hogy hány szekvencia szerepel egy véges állapotú gépben.
Milyen típusú kód lefedettséget válasszon
Ez minden bizonnyal a legnehezebb válasz. A lefedettségi módszer kiválasztásához a tesztelőnek ellenőriznie kell, hogy a
- a tesztelt kódnak egyetlen vagy több felfedezetlen hibája van
- a lehetséges büntetés költsége
- az elveszített hírnév költsége
- az elvesztett értékesítés költsége stb.
Minél nagyobb annak a valószínűsége, hogy a hibák költséges gyártási hibákat okoznak, annál súlyosabb lefedettségi szintet kell választani.
Kód lefedettség és funkcionális lefedettség
Kód lefedettség | Funkcionális lefedettség |
A kód lefedettsége megmondja, hogy a forráskód milyen jól gyakorolta a tesztpadot. | A funkcionális lefedettség azt méri, hogy a teszt funkcionalitását mennyire fedte le a tesztpad. |
Soha ne használjon tervezési specifikációt | Használja a tervezési specifikációt |
Készítette a fejlesztők | Készítette: Testers |
Kódfedezeti eszközök
Itt található a Fontos kód lefedettség eszközök listája:
Eszköz neve | Leírás |
Cobertura | Ez egy nyílt forráskódú lefedettség eszköz. Méri a teszt lefedettségét egy kódalap műszerezésével, és elemzi, hogy mely kódsorok futnak és melyek nem, amikor a tesztcsomag fut. |
Lóhere | A Clover a tesztelés idejét is lerövidíti, ha csak az előző összeállítás óta módosított alkalmazáskódot lefedő teszteket futtatja. |
DevPartner | A DevPartner lehetővé teszi a fejlesztők számára, hogy elemezzék a Java kódot a kódminőség és a komplexitás szempontjából. |
Emma | Az EMMA támogatja az osztály, a módszer, a vonal és az alapblokk lefedettségét, az összesített forrásfájl, az osztály és a módszer szintjét. |
Kalistick | A Kalistick egy harmadik féltől származó alkalmazás, amely különböző perspektívákkal elemzi a kódokat. |
CoView és CoAnt | A Coding Software egy kód lefedettség eszköze metrikák, gúnyobjektum létrehozás, kód tesztelhetőség, útvonal és elágazás lefedettség stb. |
Bullseye a C ++ számára | A BulseyeCoverage egy kódfedés eszköz a C ++ és a C számára. |
Hanglokátor | A Sonar egy nyílt kódfedezeti eszköz, amely segít a kódminőség kezelésében. |
A kódfedezet használatának előnyei
- Hasznos értékelni a kód lefedettségének kvantitatív mértékét
- Ez lehetővé teszi, hogy extra teszteseteket hozzon létre a lefedettség növelése érdekében
- Ez lehetővé teszi, hogy megtalálja a program azon területeit, amelyeket nem tesztesetek halmoznak fel
A kódfedezet használatának hátrányai
- A kód lefedettsége akkor is 100% -os lefedettségről számol be, ha a dizájnban nincs megvalósítva egy adott szolgáltatás.
- Nem lehet meghatározni, hogy teszteltük-e a szolgáltatás összes lehetséges értékét a kód lefedettségének segítségével
- A kód lefedettsége sem árulkodik arról, hogy mennyire és mennyire fedte le logikáját
- Abban az esetben, ha a megadott függvény még nem valósult meg, vagy nem szerepel a specifikációban, akkor a struktúra-alapú technikák nem találják meg ezt a problémát.
Összegzés
- A kód lefedettség olyan mérték, amely leírja a program forráskódjának tesztelésének mértékét
- Segít mérni a teszt megvalósításának hatékonyságát
- Öt kódfedési módszer a következő: 1.) Nyilatkozati lefedettség 2.) Feltétel-lefedettség 3) Ágak lefedettsége 4) Toggle lefedettség 5) FSM lefedettség
- A kimutatás lefedettsége magában foglalja a forráskódban szereplő összes futtatható utasítás legalább egy végrehajtását
- A döntési lefedettség minden egyes logikai kifejezés igaz vagy hamis eredményét jelenti
- Az ág lefedettségében egy kódmodul minden kimenetelét tesztelik
- A Feltételes elárulja a feltételes utasításban szereplő változók vagy részkifejezések értékelését
- A véges állapotú gép lefedettsége minden bizonnyal a legbonyolultabb típusú kódolási módszer
- A lefedettségi módszer kiválasztásához a tesztelőnek ellenőriznie kell a lehetséges büntetés, elvesztett hírnév, elvesztett értékesítés stb.
- A kód lefedettsége megmondja, hogy a forráskód milyen jól gyakorolta a tesztpadot, míg a Funkcionális lefedettség azt méri, hogy mennyire volt lefedett a tervezés funkcionalitása
- A Cobertura, a JTest, a Clover, az Emma és a Kalistick néhány fontos kód lefedettség
- A Code Coverage lehetővé teszi további tesztesetek létrehozását a lefedettség növelése érdekében
- A kód lefedettsége nem segít abban, hogy meghatározzuk, teszteltük-e a szolgáltatás minden lehetséges értékét