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:

ÁttekintésSzerkeszté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.

SzintekSzerkesztés

  1. 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.
  2. 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.
  3. 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ásSzerkeszté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:

  1. 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.
  2. 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.
  3. 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ökSzerkesztés

  1. A forráskód ismeretének mellékhatásai előnyösek az alapos teszteléshez.[forrás?]
  2. A kód optimalizálása egyszerűvé válik, mivel feltűnő szűk keresztmetszetek vannak kitéve.[forrás?]
  3. Bepillantást ad a programozónak, mert a fejlesztők gondosan leírják az új megvalósításokat.[forrás?]
  4. 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]
  5. Könnyen automatizálható. [3]
  6. Világos, mérnöki alapú szabályokat biztosít arra vonatkozóan, hogy mikor kell abbahagyni a tesztelést. [4]

HátrányokSzerkesztés

  1. 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.
  2. 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.
  3. 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?]
  4. 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?]
  5. A tesztek a meglévő szoftverre összpontosítanak, és előfordulhat, hogy hiányzó funkciókat nem fedeznek fel.[forrás?]

Modern kilátásSzerkeszté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ésSzerkeszté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.

JegyzetekSzerkesztés

  1. 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>
  2. Binder, Bob. Testing Object-oriented Systems. Addison-Wesley Publishing Company Inc. (2000. január 11.) 
  3. a b Ammann, Paul. Introduction to Software Testing. Cambridge University Press (2008. január 11.). ISBN 978-0-521-88038-1 
  4. Myers, Glenford. The Art of Software Testing. John Wiley and Sons (1979. január 11.) 

ForrásokSzerkesztés

FordításSzerkeszté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 jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Kapcsolódó szócikkekSzerkesztés