Fehérdobozos tesztelés
A fehérdobozos teszt (más néven tiszta dobozos teszt, üvegdobozteszt, átlátszódobozteszt és strukturális teszt) egy olyan szoftveres tesztelési módszer, amely az alkalmazás belső struktúráit vagy működését teszteli, szemben annak funkcionalitásával (azaz a feketedobozos teszteléssel). A fehérdobozos tesztelés során a rendszer belső perspektíváját, valamint a programozási készségeket használják a tesztesetek megtervezéséhez. A tesztelő az inputokat választja a kódon keresztüli útvonalak vizsgálatához, és meghatározza a várható kimeneteket. Ez hasonló az áramkör csomópontjainak tesztelésével, például az áramkörön belüli teszteléssel (ICT). A fehérdobozos tesztelés a szoftver tesztelési folyamat egység, integráció és rendszer szintjén alkalmazható. Bár a hagyományos tesztelők hajlamosak voltak úgy gondolni, hogy a fehérdobozos tesztelés egység szinten történik, manapság gyakrabban használják az integrációra és a rendszer tesztelésére. Tesztelheti az egységen belüli útvonalakat, az egységek közötti útvonalakat az integráció során és az alrendszerek között a rendszerszintű teszt során. Noha a teszttervezésnek ez a módszere sok hibát vagy problémát fedezhet fel, lehetséges, hogy elmulasztja a specifikáció nem teljesített részeit vagy a hiányzó követelményeket. Ahol a fehérdobozos tesztelés tervezésvezérelt,[1] vagyis kizárólag a szoftver egyes komponenseinek viselkedésére vonatkozó megállapodások alapján (például a DO-178C és az ISO 26262 folyamatokhoz hasonlóan), akkor a fehérdobozos tesztelési technikák képesek végrehajtani a nem teljesített vagy hiányzó követelmények értékelését.
A fehérdoboz tesztelési technikái a következő kód lefedettségi kritériumokat tartalmazzák:
- Ellenőrző áramlás tesztelése
- Adatáramlás tesztelése
- Ág tesztelése
- Nyilatkozati lefedettség
- Döntési lefedettség
- Módosított feltétel / döntés lefedettség
- Első út tesztelése
- Útvonal tesztelése
Áttekintés
[szerkesztés]A fehérdobozos tesztelés az alkalmazás tesztelése a forráskód szintjén. Ezeket a teszteseteket a fent említett tervezési technikák felhasználásával vezetik le: vezérlési folyamat tesztelés, adatáramlás tesztelés, ág tesztelés, útvonal tesztelés, utasítás lefedettség és döntés lefedettség, valamint módosított feltétel / döntés lefedettség. A fehérdobozos tesztelés ezen technikák felhasználása iránymutatásként a hibamentes környezet létrehozásához az összes kód vizsgálatával. Ezek a fehérdobozos tesztelési technikák a fehérdobozos tesztek építőkövei, amelyek lényege az alkalmazás körültekintő tesztelése a forráskód szintjén a rejtett hibák későbbi csökkentése érdekében. Ezek a különböző technikák a forráskód minden látható útját vizsgálják a hibák minimalizálása és a hibamentes környezet létrehozása érdekében. A fehérdobozos tesztelés lényege az a képesség, hogy megtudjuk hogy a kód melyik sorát hajtjuk végre, és hogy azonosítsuk, mi legyen a helyes kimenet.
Szintek
[szerkesztés]- Egység tesztelése. A fehérdobozos tesztelés az egység tesztelés során történik annak biztosítása érdekében, hogy a kód megfelelően működjön, mielőtt az integráció a korábban tesztelt kóddal megtörténne. Az egység tesztelése során a fehérdobozos tesztelés sok hibát már korán elfoghat, és elősegíti a hibák későbbi kezelését, miután a kód integrálódott az alkalmazás többi részébe, és ezáltal csökkenti a hibák későbbi fejlesztési hatásait.
- Integrációs tesztelés. Ezen a szinten a fehérdobozos tesztelés az interfészek kölcsönhatásainak tesztelésére szolgál. Az egységszintű teszteléssel megbizonyosodott arról, hogy minden kódot teszteltek, és ennek megfelelően működnek-e elszigetelt környezetben, és az integráció a nyílt környezetben való viselkedés helyességét vizsgálja a programozó által ismert interfészek bármilyen interakciójára szolgáló fehérdobozos teszteléssel.
- Regressziós teszt. A fehérdobozos teszt a regressziós teszt során újrahasznosított fehérdoboz-tesztesetek használata az egység és az integráció tesztelési szintjén.
Alapvető eljárás
[szerkesztés]A fehérdobozos tesztelés alapvető eljárásai megkövetelik, hogy a tesztelő mély ismeretekkel rendelkezzen a tesztelt forráskódról. A programozónak alaposan ismernie kell az alkalmazást, hogy tudja, milyen típusú teszteseményeket kell létrehozni, hogy minden látható utat a teszteléshez lehessen használni. Miután megértettük a forráskódot, a forráskód elemezhető a létrehozandó tesztesetek szempontjából. A következő a három alapvető lépés, amelyet a fehérdoboz tesztelése tesz a tesztesetek létrehozása érdekében:
- Az input különféle típusú követelményeket, funkcionális specifikációkat, a dokumentumok részletes megtervezését, a megfelelő forráskódot és a biztonsági specifikációkat foglalja magában. Ez a fehérdobozos teszt előkészítési szakasza, amely az összes alapvető információt tartalmazza.
- A feldolgozás magában foglalja a kockázatelemzés elvégzését a teljes tesztelési folyamat irányításához, a megfelelő teszttervet, a tesztesetek végrehajtását és az eredmények közlését. Ez a tesztesetek építésének fázisa annak biztosítására, hogy alaposan teszteljék az alkalmazást, az adott eredményeket ennek megfelelően rögzítik.
- Az eredmény magában foglalja a zárójelentés elkészítését, amely magában foglalja a fenti előkészületeket és eredményeket.[forrás?]
Előnyök
[szerkesztés]- A forráskód ismeretének mellékhatásai előnyösek az alapos teszteléshez.[forrás?]
- A kód optimalizálása egyszerűvé válik, mivel feltűnő szűk keresztmetszetek vannak kitéve.[forrás?]
- Bepillantást ad a programozónak, mert a fejlesztők gondosan leírják az új megvalósításokat.[forrás?]
- Biztosítja a tesztek nyomon követhetőségét a forrásból, ezáltal lehetővé téve a forrás jövőbeli változásainak könnyű rögzítését az újonnan hozzáadott vagy módosított tesztek során. [2]
- Könnyen automatizálható. [3]
- Világos, mérnöki alapú szabályokat biztosít arra vonatkozóan, hogy mikor kell abbahagyni a tesztelést. [4]
Hátrányok
[szerkesztés]- A fehérdobozos teszteket egy adott megvalósítás részleteinek tesztelésére írják. Ez azt jelenti, hogy a tesztek kudarcot vallanak, amikor a megvalósítás megváltozik, mivel a teszt szorosan kapcsolódik a megvalósításhoz. Ezért további munkát kell elvégezni a tesztek frissítéséhez, hogy azok a megvalósítás megváltoztatásakor ismét megfeleljenek a megvalósításnak. Másrészt a fekete dobozos tesztek függetlenek a megvalósítástól, és így továbbra is sikeresen futnak, ha a megvalósítás megváltozik, de a megvalósítás kimenetele vagy mellékhatásai nem.
- A tesztelt kódot át lehet írni, hogy ugyanazt a funkcionalitást más módon valósítsa meg, ami érvényteleníti a tesztbe belefoglalt feltételezéseket. Ez olyan teszteket eredményezhet, amelyek feleslegesen kudarcot vallanak, vagy a legrosszabb esetben olyan teszteket eredményezhetnek, amelyek most hamis pozitívumokat adnak és hibákat fednek a kódban. Mivel a fehérdobozos tesztet soha nem úgy írták, hogy tesztelje a tesztelt kód szándékolt viselkedését, hanem csak olyat, hogy a konkrét megvalósítás azt tegye, amit csinál.
- A fehérdobozos tesztelés bonyolultabbá teszi a tesztelést, mert a tesztelőnek ismernie kell a programot, vagy a tesztcsoportnak legalább egy nagyon jó programozóval kell rendelkeznie, aki meg tudja érteni a programot kódszinten. A fehérdobozos teszteléshez magas szintű ismeretekkel rendelkező programozóra van szükség az elvégzendő tesztek bonyolultsága miatt.[forrás?]
- Bizonyos esetekben nem reális az alkalmazás minden egyes meglévő állapotának tesztelése, és néhány feltétel nem lesz tesztelve.[forrás?]
- A tesztek a meglévő szoftverre összpontosítanak, és előfordulhat, hogy hiányzó funkciókat nem fedeznek fel.[forrás?]
Modern kilátás
[szerkesztés]A modernebb nézet szerint a fehér-doboz tesztelés és a fekete-doboz teszt közötti kettősség elmosódott és egyre kevésbé releváns. Míg a "fehérdoboz" eredetileg a forráskód, a fekete doboz pedig a követelmények használatát jelentette, a tesztek ma már sok absztrakció szintjén lévő dokumentumból származnak. Az igazi lényeg, hogy a teszteket általában absztrakt struktúrából tervezik, például a bemeneti térből, a grafikonból vagy a logikai predikátumokból, és az a kérdés, hogy az absztrakció mely szintjéből származtatjuk ezt az absztrakt struktúrát. [3] Ez lehet a forráskód, a követelmények, a bemeneti terület leírása vagy a tucatnyi típusú tervezési modell. Ezért a "fehérdoboz/feketedoboz" megkülönböztetés kevésbé fontos, és a kifejezések kevésbé relevánsak.
Hackelés
[szerkesztés]A penetrációs tesztelés során a fehérdobozos teszt egy olyan módszerre utal, ahol a fehérkalaphacker teljes ismeretekkel rendelkezik a támadó rendszerről. A fehérdobozos penetrációs teszt célja egy rosszindulatú bennfentes szimulálása, aki rendelkezik a célrendszer ismereteivel és esetleg alapvető hitelesítő adataival.
Jegyzetek
[szerkesztés]- ↑ Stacy Nelson (June 2003), NASA/CR–2003-212806 Certification Processes for Safety-Critical and Mission-Critical Aerospace Software, Ames Research Center, p. 25, <https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/20040014965.pdf>
- ↑ Binder, Bob. Testing Object-oriented Systems. Addison-Wesley Publishing Company Inc. (2000. november 26.)
- ↑ a b Ammann, Paul. Introduction to Software Testing. Cambridge University Press (2008. november 26.). ISBN 978-0-521-88038-1
- ↑ Myers, Glenford. The Art of Software Testing. John Wiley and Sons (1979. november 26.)
Források
[szerkesztés]- BCS SIGIST (British Computer Society Specialist Interest Group of Software Testing): http://www.testingstandards.co.uk/Component%20Testing.pdf szabvány a szoftverkomponensek teszteléséhez ], 3.4, 27. munkadokumentum. 2001. április.
- A http://agile.csc.ncsu.edu/SEMaterials/WhiteBox.pdf Archiválva 2008. szeptember 5-i dátummal a Wayback Machine-ben további információkkal szolgál a vezérlési folyamat és az adatfolyam teszteléséről.
- http://research.microsoft.com/en-us/projects/pex/ Pex - Automatizált fehérdobozos tesztelés.
Fordítás
[szerkesztés]Ez a szócikk részben vagy egészben a White-box testing című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.