Skip to content

Kód lefedettség (code coverage) vizsgálat

Miért?
Csak olyan teszteknek higgy, melyekről tudod, hogy valóban lefedik a tesztelendő területet.

A unit teszteknek lehetőség szerint a kódunk minden útvonalát le kellene fedniük. Csak akkor nyerjük el annak bizalmát, hogy a kód helyesen dolgozik. Hogy megtudjuk, mely kódrészeket nem fedtünk még le a tesztekkel, ahhoz a kód lefedettség (code coverage) vizsgálathoz folyamodunk. Ez arra szolgál, hogy felfedezzünk a kódban olyan területeket, melyek nem hajtódnak végre az automatizált tesztjeink során.A unit teszteknek tulajdonképpen a tesztelendő kód 100%-át le kellene fedniük. Ez ugyan nem jelenti automatikusan, hogy elegendő teszt létezik, de a 100%-nál alacsonyabb kód lefedettség arra utal, hogy vannak olyan zugai a kódnak, amely helyességéről nem tudunk nyilatkozni. Ezért érdemes mindig 100%-os kódlefedettségre törekedni.

A gyakorlatban azonban azt láthatjuk, hogy a 100%-os kódlefedettség nem mindig érhető el vállalható ráfordítással. Ahogyan az életben is, az utolsó 2, 3, 4 százalékra fordított fáradság aránytalanul megnőhet. Ezért a lefedettség pontos elemzése után elfogadható, ha kevesebb mint 100%-kal megelégszünk.

90% alatt a lefedettség azonban annyira lyukacsos, hogy nem tekinthető professzionálisnak. Aki tehát elkezdi használni az automatizált teszteket, annak egyidejűleg a kódlefedettséget is kellene mérnie. Különben nem lehet nyilatkozni a tesztek minőségéről.

A kódlefedettség mérésére két mutató szolgál, melyek C0 és C1 néven ismertek. A C0 mutató az utasításlefedettséget méri, míg a C1 mutató az elágazáslefedettséget.

C0 = (a tesztelt utasítások száma / az összes utasítás száma) * 100%
C1 = (a tesztelt döntések ill. ágak száma / az összes döntés ill. ág száma) * 100%

A C1 egy erősebb mutató, hiszen 100%-os döntés- ill. áglefedettség 100%-os utasításlefedettséget implikál. Ennek a megfordítása nem igaz.

Az utasításlefedettség-teszt és az elágazáslefedettség-teszt egy vezérlésfolyam-gráf alapján dolgozik, lásd http://hu.wikipedia.org/wiki/Vez%C3%A9rl%C3%A9sfolyam-gr%C3%A1f, míg a döntéslefedettség-teszt közvetlenül a forráskódon alapul. Az utasításlefedettség-tesztek és elágazáslefedettség-tesztek teszteljárása nagyon jól van leírva a http://en.wikipedia.org/wiki/Code_coverage oldalon és az angol párján.

Lásd még az eszközök alatt.

Published inPraktikák