Modellalapú tesztelés

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.[1]Az 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
[szerkesztés | forrásszöveg szerkesztése]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
[szerkesztés | forrásszöveg szerkeszté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.[2]
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
[szerkesztés | forrásszöveg szerkeszté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
[szerkesztés | forrásszöveg szerkesztése]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,[3] és ezeket Rushby[4] ismertette. A tesztkriteriumok általános gráfok formájában vannak leírva a tesztelési tankönyvben[1].
Tétel bizonyítása
[szerkesztés | forrásszöveg szerkesztése]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.[5]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
[szerkesztés | forrásszöveg szerkesztése]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
[szerkesztés | forrásszöveg szerkesztése]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
[szerkesztés | forrásszöveg szerkesztése]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
[szerkesztés | forrásszöveg szerkesztése]- 1 2 Practical Model-Based Testing: A Tools Approach Archiválva 2012. augusztus 25-i dátummal a Wayback Machine-ben., Mark Utting and Bruno Legeard, ISBN 978-0-12-372501-1, Morgan-Kaufmann 2007
- ↑ Gordon Fraser, Franz Wotawa, and Paul E. Ammann (2009). "Testing with model checkers: a survey". Software Testing, Verification and Reliability. 19 (3): 215–261.
{{cite journal}}: CS1 karbantartás: több név: szerzőfelsorolás (link) - ↑ Böhr, Frank. Model Based Statistical Testing of Embedded Systems, 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops, 18–25. o.. DOI: 10.1109/ICSTW.2011.11 (2011). ISBN 978-1-4577-0019-4
- ↑ Antti Huima (2007). "Implementing Conformiq Qtronic". Lecture Notes in Computer Science. 4581: 1–12. doi:10.1007/978-3-540-73066-8_1.
{{cite journal}}: Unknown parameter|subtitle=ignored (súgó) - ↑ Böhr, Frank. Model-Based Statistical Testing of Embedded Real-Time Software with Continuous and Discrete Signals in a Concurrent Environment: The Usage Net Approach. Verlag Dr. Hut (2012). ISBN 978-3843903486
Fordítás
[szerkesztés | forrásszöveg szerkesztése]Ez a szócikk részben vagy egészben a Model-based 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.
További olvasmányok
[szerkesztés | forrásszöveg szerkesztése]- 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, ISBN 978-0-12-372501-1, Morgan-Kaufmann 2007.
- Model-Based Software Testing and Analysis with C#, Jonathan Jacky, Margus Veanes, Colin Campbell, and Wolfram Schulte, ISBN 978-0-521-68761-4, Cambridge University Press 2008.
- Model-Based Testing of Reactive Systems Advanced Lecture Series, LNCS 3472, Springer-Verlag, 2005. ISBN 978-3-540-26278-7ISBN 978-3-540-26278-7.
- Hong Zhu; et al. (2008). AST '08: Proceedings of the 3rd International Workshop on Automation of Software Test. ACM Press. ISBN 978-1-60558-030-2.
- Santos-Neto, P.; Resende, R.; Pádua, C. (2007). "Proceedings of the 2007 ACM symposium on Applied computing - SAC '07". Proceedings of the 2007 ACM symposium on Applied computing - SAC '07. Symposium on Applied Computing. 1409–1415. o. doi:10.1145/1244002.1244306. ISBN 978-1-59593-480-2.
- A Systematic Review of Model Based Testing Tool Support Archiválva 2016. augusztus 4-i dátummal a Wayback Machine-ben, Muhammad Shafique, Yvan Labiche, Carleton University, Technical Report, May 2010.
- Zander, Justyna; Schieferdecker, Ina; Mosterman, Pieter J., eds. (2011). Model-Based Testing for Embedded Systems. Computational Analysis, Synthesis, and Design of Dynamic Systems. Vol. 13. Boca Raton: CRC Press. ISBN 978-1-4398-1845-9.
- 2011/2012 Model-based Testing User Survey: Results and Analysis. Robert V. Binder. System Verification Associates, February 2012