keretezett| Általános modellalapú tesztelési környezet A modellalapú tesztelés a modellalapú tervezés alkalmazása, amely szoftver- vagy rendszertesztelés elvégzésére szolgáló artefaktumok tervezésére és opcionálisan azok végrehajtására is felhasználható. A modellek a tesztelendő rendszer (SUT) kívánt viselkedését vagy a tesztelési stratégiákat és a tesztkörnyezetet is ábrázolhatják. A jobb oldali kép az előbbi megközelítést ábrázolja.
A SUT-t (System Under Test) leíró modell általában egy absztrakt, részleges bemutatása a SUT kívánt viselkedésének. Az ilyen modellekből származtatott tesztek funkcionális tesztek, amelyek ugyanazon absztrakciós szinten vannak, mint a modell. Ezeket a teszteket összefoglalóan absztrakt tesztcsomagnak nevezik. Az absztrakt tesztcsomagot nem lehet közvetlenül végrehajtani egy SUT-n, mivel a csomag nem megfelelő absztrakciós szinten van. A végrehajtható tesztcsomagot le kell származtatni a megfelelő absztrakt tesztcsomagból. A végrehajtható tesztcsomag közvetlenül kommunikálhat a tesztelendő rendszerrel. Ezt úgy érik el, hogy az absztrakt teszt eseteket konkrét teszt esetekre térképezik, amelyek alkalmasak végrehajtásra. Néhány modellalapú tesztelési környezetben a modellek tartalmaznak elegendő információt a végrehajtható tesztcsomagok közvetlen generálásához. Másokban az absztrakt tesztcsomag elemeit specifikus utasításokhoz vagy metódushívásokhoz kell térképezni a szoftverben, hogy konkrét tesztcsomagot hozzanak létre. Ezt hívják a "térképezési probléma" megoldásának.Practical Model-Based Testing: A Tools Approach , Mark Utting and Bruno Legeard, , Morgan-Kaufmann 2007Az online tesztelés (lásd alább) esetén az absztrakt tesztcsomagok csupán elméletben léteznek, nem pedig explicit műalkotásokként.
A tesztek különböző módokon származtathatók modellekből. Mivel a tesztelés általában kísérleti jellegű és heurisztikákra épít, nincs ismert egyetlen legjobb megközelítés a tesztek származtatására. Gyakori, hogy a tesztelési származtatással kapcsolatos összes paramétert egy csomagba összevonják, amelyet gyakran "teszt követelményeknek", "teszt céljának" vagy akár "használati esetnek" neveznek. Ez a csomag tartalmazhat információkat a modell azon részeiről, amelyekre fókuszálni kell, vagy a tesztelés befejezésének feltételeiről (teszt leállítási kritériumok).
Mivel a tesztelési csomagok modellekből, nem pedig forráskódból származnak, a modellalapú tesztelés általában a feketedobozos tesztelés egyik formájaként van szemlélve.
A komplex szoftverrendszerek modellalapú tesztelése még mindig egy fejlődő terület.
Modellek Különösen a modellvezérelt mérnöki munkában vagy az Object Management Group ( OMG ) modellvezérelt architektúrájában a modellek a megfelelő rendszerek előtt vagy azokkal párhuzamosan épülnek fel. A modellek kész rendszerekből is építhetők. A tesztgenerálás tipikus modellezőnyelvei közé tartozik az UML, a SysML, a mainstream programozási nyelvek, a véges gépi jelölések, valamint a matematikai formalizmusok, mint például a Z, a B ( Event-B ), az Alloy vagy a Coq .
Modellalapú tesztelés telepítése A modellalapú tesztelés különböző ismert módjai közé tartozik az online tesztelés, az offline végrehajtható tesztek generálása és az offline manuálisan telepíthető tesztek generálása.
Az online tesztelés azt jelenti, hogy a modellalapú tesztelő eszköz közvetlenül csatlakozik a tesztelendő rendszerhez (SUT), és dinamikusan teszteli azt.
Az offline módon generált végrehajtható tesztek azt jelentik, hogy a modellalapú tesztelő eszköz teszteseteket generál számítógép által olvasható formátumban, amelyeket később automatikusan végre lehet hajtani. Például egy Python osztályok gyűjteménye, amely megtestesíti a generált tesztelési logikát.
Az offline módon generált manuálisan telepíthető tesztek azt jelentik, hogy a modellalapú tesztelő eszköz teszteseteket generál, amelyek ember által olvasható formátumban készülnek el, és később segíthetnek a manuális tesztelésben. Például egy PDF dokumentum, amely emberi nyelven leírja a generált tesztlépéseket.
Tesztek algoritmikus levezetése A modellalapú tesztelés hatékonysága elsősorban az általa kínált automatizálás lehetőségének köszönhető. Ha egy modell gép által olvasható és olyan mértékben formális, hogy jól meghatározott viselkedési értelmezése van, akkor elvileg a tesztesetek gépesített módon is előállíthatók.
Véges állapotú gépekből Gyakran a modellt végesállapotú automatára vagy állapotátmeneti rendszerre fordítják le, vagy úgy értelmezik. Ez az automata a tesztelendő rendszer lehetséges konfigurációit képviseli. A tesztesetek megtalálásához az automatát végrehajtható útvonalak után keresik. Egy lehetséges végrehajtási útvonal tesztesetként szolgálhat. Ez a módszer akkor működik, ha a modell determinista, vagy átalakítható egy determinisztikus modellé. Értékes nem-szokványos teszteseteket lehet nyerni a modellekben szereplő nem meghatározott átmenetek kihasználásával.
A tesztelendő rendszer és a megfelelő modell bonyolultságától függően az útvonalak száma nagyon nagy lehet, mivel a rendszer lehetséges konfigurációinak száma hatalmas. A tesztesetek kiválasztásához, amelyek megfelelő, de véges számú útvonalat fednek le, tesztkriteriumokra van szükség, amelyek irányítják a kiválasztást. Ezt a technikát először Offutt és Abdurazik javasolta abban a cikkben, amely a modellalapú tesztelés kezdetét jelentette. Több technika is kifejlesztésre került a tesztesetek generálására, és ezeket Rushby ismertette. A tesztkriteriumok általános gráfok formájában vannak leírva a tesztelési tankönyvben.
Tétel bizonyítása A tételbizonyítás (theorem proving) eredetileg logikai formulák automatikus bizonyítására szolgált. A modellalapú tesztelési megközelítésekben a rendszert predikátumok halmazával modellezik, amelyek meghatározzák a rendszer viselkedését.A tesztesetek előállításához a modellt úgy osztják fel, hogy ekvivalenciaosztályokat képeznek a rendszer viselkedését leíró predikátumok érvényes értelmezései felett. Minden ekvivalenciaosztály egy adott viselkedési esetet ír le, így egy-egy tesztesetként szolgálhat. A legegyszerűbb felosztás a diszjunktív normálforma (DNF) alkalmazásával történik, amely során a rendszer viselkedését leíró logikai kifejezéseket DNF formára alakítják.
Megszorításos logikai programozás és szimbolikus végrehajtás A megszorításprogramozás használható olyan tesztesetek kiválasztására, amelyek meghatározott megszorításoknak felelnek meg, mégpedig úgy, hogy változók halmazára vonatkozó megszorítások rendszerét oldják meg. A rendszert megszorítások segítségével írják le. A megszorítások rendszerének megoldása történhet: Boole-alapú megoldókkal (például SAT-solverekkel, amelyek a Boole-féle kielégíthetőségi problémán alapulnak), vagy Numerikus módszerkel, mint például a Gauss-elimináció. A megszorítások képleteinek megoldása során talált megoldás tesztesetként szolgálhat az adott rendszerhez.
A megszorításprogramozás (constraint programming) kombinálható a szimbolikus végrehajtással. Ebben a megközelítésben a rendszer modelljét szimbolikusan hajtják végre, vagyis a különböző vezérlési útvonalak mentén adattípusokra vonatkozó megszorításokat gyűjtenek össze. Ezután megszorításprogramozási módszert alkalmaznak a megszorítások megoldására és tesztesetek előállítására.
Modellellenőrzés A modell-ellenőrzők tesztesetek generálására is használhatók. Eredetileg a modellellenőrzést arra fejlesztették ki, hogy ellenőrizzék: egy specifikáció tulajdonsága érvényes-e egy adott modellen. Tesztelési célokra használva a modellellenőrzőnek átadják a tesztelendő rendszer modelljét és a tesztelendő tulajdonságot. A bizonyítási eljárás során, ha a tulajdonság érvényes a modellben, a modellellenőrző tanúkat és ellenpéldákat azonosít. A tanú egy olyan útvonal, ahol a tulajdonság teljesül, míg az ellenpélda a modell végrehajtásának egy olyan útvonala, ahol a tulajdonság sérül. Ezek az útvonalak ismét tesztesetként használhatók.
Teszteset-generálás Markov-lánc alapú tesztmodell használatával A Markov-láncok hatékony eszközt jelentenek a modellalapú teszteléshez. A Markov-láncokkal megvalósított tesztmodellek használati modellként értelmezhetők – ezt nevezzük használati/statikus modellalapú tesztelésnek (Usage/Statistical Model Based Testing). A használati modellek, – így a Markov-láncok is – alapvetően két elemből állnak: : a véges állapotú gép (FSM), amely a tesztelt rendszer összes lehetséges felhasználási forgatókönyvét reprezentálja, és a működési profilok (OP), amelyek statisztikailag jellemzik, hogyan használják vagy fogják használni a rendszert.Az FSM segít meghatározni, hogy mit lehet vagy mit teszteltek már, míg az OP segítségével operációs tesztesetek vezethetők le. A használati/statikus modellalapú tesztelés abból a tényből indul ki, hogy egy rendszert nem lehet teljes körűen letesztelni, és a hibák nagyon alacsony valószínűséggel is előfordulhatnak. Ez a megközelítés lehetőséget kínál statikusan levezethető tesztesetek meghatározására, amelyek célja a tesztelt rendszer megbízhatóságának javítása. A használati/statikus modellalapú tesztelést nemrég kiterjesztették, hogy beágyazott szoftverrendszerekre is alkalmazható legyen.
Jegyzetek
Fordítás
További olvasmányok
OMG UML 2 Testing Profile; Bringmann, E.; Krämer, A. (2008). "2008 International Conference on Software Testing, Verification, and Validation". 2008 International Conference on Software Testing, Verification, and Validation. International Conference on Software Testing, Verification, and Validation (ICST). pp. 485–493. CiteSeerX 10.1.1.729.8107. doi:10.1109/ICST.2008.45. ISBN 978-0-7695-3127-4. Practical Model-Based Testing: A Tools Approach, Mark Utting and Bruno Legeard, , Morgan-Kaufmann 2007. Model-Based Software Testing and Analysis with C#, Jonathan Jacky, Margus Veanes, Colin Campbell, and Wolfram Schulte, , Cambridge University Press 2008. Model-Based Testing of Reactive Systems Advanced Lecture Series, LNCS 3472, Springer-Verlag, 2005. ISBN 978-3-540-26278-7.
A Systematic Review of Model Based Testing Tool Support , Muhammad Shafique, Yvan Labiche, Carleton University, Technical Report, May 2010.
2011/2012 Model-based Testing User Survey: Results and Analysis. Robert V. Binder. System Verification Associates, February 2012
Kategória:Szoftvertesztelés