Mi az a modell alapú tesztelés?

⚡ Okos összefoglaló

A modellalapú tesztelés a szoftver futásidejű viselkedését ellenőrzi egy abszolút teszt által készített előrejelzésekkel szemben.traca rendszer t modelljét, teszteseteket automatikusan generálva véges állapotgépekből, állapotdiagramokból vagy UML-jelölésekből, a kézi vezérlés helyett.

  • 🧭 Alapötlet: Egy modell a várható viselkedést írja le, és minden teszteset ebből a modellből származik, ahelyett, hogy külön írnák meg.
  • 🔀 Két keretrendszer: Az offline generálás a végrehajtás előtt felépíti a csomagot, míg az online generálás menet közben, futás közben hozza létre a lépéseket.
  • 📐 Modelljelölések: Véges állapotgépek, állapotdiagramok, döntési táblázatok, adatfolyam- és vezérlésfolyam-gráfok, valamint UML-diagramok.
  • 🇧🇷 Munkafolyamat: Modell felépítése, lefedettségi kritériumok kiválasztása, abszolút becslés generálásatract-teszteket, szkriptekké formáljuk őket, végrehajtjuk, majd ítéleteket rendelünk hozzájuk.
  • 🇧🇷 szerszámozás: A GraphWalker, az fMBT, a Conformiq, a MaTeLo, az MBTsuite és a Spec Explorer irányított gráfokból vagy állapotmodellekből generál útvonalakat.
  • 🇧🇷 Kompromisszum: A karbantartási igény csökken, a lefedettség pedig nő, de a technika modellezési készséget és előzetes tanulási befektetést igényel.

Modell alapú tesztelés, tesztesetek automatikus kinyerése a rendszer viselkedési modelljéből

Mi az a modell alapú tesztelés?

Modell alapú tesztelés egy szoftvertesztelési technika, ahol a tesztelt szoftver futásidejű viselkedését egy modell által készített előrejelzésekkel vetik össze. A modell egy rendszer viselkedésének leírása, amely bemeneti sorozatokkal, műveletekkel, feltételekkel, kimenettel és a bemenetről kimenetre áramló adatokkal fejezhető ki. Egy használható modellnek gyakorlatilag érthetőnek, újrafelhasználhatónak és megoszthatónak kell lennie, és pontosan le kell írnia a tesztelt rendszert.

Számos modell érhető el, és mindegyik a rendszer viselkedésének egy másik aspektusát írja le. Gyakori példák:

A modellalapú tesztelés leírja, hogyan viselkedik egy rendszer a modell által meghatározott cselekvésre válaszul. Adjuk meg a cselekvést, majd ellenőrizzük, hogy a rendszer a modell előrejelzései szerint reagál-e. A kettő közötti bármilyen eltérés vagy a szoftver hibája, vagy a modell hibája, és mindkettőt érdemes megvizsgálni.

Ez egy könnyűsúlyú formális módszer egy rendszer validálására, és ugyanolyan könnyen alkalmazható hardver- és szoftvertesztelésre. Mivel a tesztek a viselkedés specifikációjából, nem pedig a kódból származnak, a technika a ... fekete doboz tesztelés család szoftvertesztelési technikák.

Modell alapú tesztelési példa

Egy viselkedési modell elolvasásának legegyszerűbb módja, ha végigkövetjük az egyiket. Az alábbi ábra egy rövid szövegszerkesztési feladatot modellez, ahol minden mező az alkalmazás egy lehetséges állapotát, minden nyíl pedig egy felhasználó által végrehajtható műveletet jelöl.

Modellalapú tesztelési példa egy versírás állapotainak és műveleteinek modellezésére a Jegyzettömbben

A modell egy leegyszerűsített megközelítést mutat be a versíráshoz a Jegyzettömbben, és bemutatja az egyes lépésekhez kapcsolódó lehetséges műveleteket. Minden művelethez, például az alkalmazás elindításához, egy vers beírásához vagy a fájl mentéséhez egy próbaper generálható, és a kimenet ellenőrizhető. Ugyanazon a diagramon egy másik útvonalon haladva, például mentés nélküli indítás és lezárás, egy másik tesztesetet hozunk létre extra tervezési költség nélkül, ami a teljes technika gazdasági érve.

Az MBT típusai

Kétféle modellalapú tesztelési keretrendszer létezik, és a különbség közöttük egyszerűen a tesztlépések előállításában rejlik:

  • Offline / előzetesen: Tesztkészletek generálása a végrehajtás előtt. A tesztkészlet tesztesetek gyűjteménye, és ebben a módban a tesztkészletet tárolják, felülvizsgálják és újrafuttatják, mint bármely más tesztkészletet. automatizálási tesztelés eszköz.
  • Online / menet közben: Tesztkészletek generálása a teszt végrehajtása során, ahol a következő lépést az alapján választják ki, hogy a rendszer hogyan reagált az előzőre.

Az offline generálás szabályozott környezetekhez illik, amelyek áttekinthető, megismételhető készletet igényelnek. Az online generálás hosszú távú feltáró munkamenetekhez illik állapotalapú rendszerekkel szemben, mivel a generátor a valós válaszra tud reagálni, nem pedig az előrejelzettre.

Hogyan működik a modellalapú tesztelés?

Bármelyik keretrendszert is használjuk, a technika ugyanazt az öt szakaszt követi. Minden szakasz létrehoz egy műterméket, amelyet a következő szakasz felhasznál, ezért a modell, és nem a tesztszkript lesz az, amit a csapat karbantart.

  • 1. lépés: A modell megépítése. Követelmények vagy specifikációk lefordítása egy ABS-betraca várható viselkedés modellje, amely meghatározza az állapotokat, a közöttük lévő átmeneteket és az egyes átmeneteket kiváltó bemeneteket.
  • 2. lépés: Válassza ki a tesztkiválasztási kritériumokat. A kritériumok megmondják a generátornak, hogy mikor kell leállnia. Gyakoriak az összes állapotot lefedő lefedettség, amely minden állapotot legalább egyszer meglátogat; az összes átmenetet lefedő lefedettség, amely minden nyilat legalább egyszer végrehajt; és az útvonal- vagy adatfolyam-lefedettség a mélyebb feltáráshoz.
  • 3. lépés: Hasizmok generálásatract tesztesetek. Az eszköz végigsétál a modellen, és hasizomgyakorlatok sorozatát bocsát ki.tract lépések, amelyek megfelelnek a kiválasztott kritériumoknak, az egyes lépések várható eredményével együtt.
  • 4. lépés: A hasizmok betonozásatract-tesztek. Egy adapter réteg leképezi az egyes hasizmokattracne lépjen rá egy valós, a rendszerrel szembeni műveletre, például egy felhasználói felülettel való interakcióra, egy API hívás vagy protokollüzenet. Ez a térképping egyszer íródik, és minden létrehozott teszt újra felhasználja.
  • 5. lépés: Végrehajtás és ítéletek kiosztása. A konkrét teszteket a tesztelt rendszerrel futtatják le, minden megfigyelt választ összehasonlítanak a modell előrejelzésével, és rögzítik a sikeres vagy sikertelen eredményt. tracvisszatért a modell eleméhez, amely létrehozta azt.

Az tracAz 5. lépésben létrehozott teljesítőképesség a gyakorlati megtérülés. Amikor egy követelmény megváltozik, a modell is megváltozik, és az érintett tesztek újragenerálódnak ahelyett, hogy újraírnák őket, ezért a csapatok gyakran végeznek ilyen jellegű teszteket. regressziós teszt egy stabil specifikációval szemben a legtöbb előny.

Különböző modellek a tesztelésben

Az MBT megértéséhez szükséges megérteni az alábbiakban ismertetett néhányat. Mindegyik modell a kifejezőerőt az erőfeszítéssel cseréli cserélgetni, így a választás attól függ, hogy mennyire bonyolult valójában a tesztelt viselkedés.

Véges állapotú gépek

Ez a modell segít a tesztelőknek a kiválasztott bemenettől függően felmérni az eredményt. A bemenetek különböző kombinációi a rendszer egy adott állapotát eredményezhetik.

A rendszernek lesz egy adott állapota és egy aktuális állapota, amelyet a tesztelők által megadott bemenetek halmaza szabályoz.

Vegyük figyelembe az alábbi példát. Egy rendszer lehetővé teszi az alkalmazottak számára, hogy bejelentkezzenek egy alkalmazásba. Az alkalmazott aktuális állapota „Ki”, és „Be” lesz, amint bejelentkezik a rendszerbe. A „Be” állapotban az alkalmazott megtekintheti, kinyomtathatja és beolvashatja a rendszerben található dokumentumokat.

Az adott példához tartozó állapotgép itt látható, ahol minden nyíl az átmenetet okozó bemenettel van jelölve.

Véges állapotú gépmodell, amely egy alkalmazotti bejelentkezési rendszer kimeneti és bemeneti állapotait mutatja

Állami diagramok

Az állapotdiagram a véges állapotgép kiterjesztése, és összetett, valamint valós idejű rendszerekhez használható. Az állapotdiagramok a rendszer különböző viselkedéseit írják le, meghatározott számú állapottal rendelkeznek, és a rendszer viselkedését elemzik és minden állapothoz tartozó események formájában ábrázolják. A gyakorlatban fontos kiterjesztés a hierarchia: az állapotdiagram lehetővé teszi a beágyazott és párhuzamos állapotokat, így egy olyan gép, amelynek több tucat lapos állapotra lenne szüksége, kompakt módon rajzolható meg.

Például a hibák a hibakezelő eszközben „Új” állapottal jelennek meg. Miután a fejlesztők kijavították a hibát, az állapotot „Javítva”-ra kell változtatni. Ha a hiba nincs kijavítva, az állapot „Újra megnyitva”-ra változik. Az állapotdiagramokat úgy kell megtervezni, hogy minden állapothoz esemény kerüljön meghívásra.

A hiba életciklusa az alábbiakban látható, ahol minden állapot állapotként, minden munkafolyamat-művelet pedig az az eseményként jelenik meg, amely a hibát a kettő között mozgatja.

Egy hiba életciklusának állapotdiagramja Új, Javított és Újranyitás állapotokon keresztül

Egységes modellezési nyelv (UML)

Egységes modellezési nyelv (UML) egy szabványosított, általános célú modellezőnyelv. Az UML grafikus jelölési technikák egy sorát tartalmazza, amelyek vizuális modellek létrehozására szolgálnak, és amelyek nagyon bonyolult rendszerviselkedést írhatnak le.

Az UML olyan jelölésekkel rendelkezik, mint például:

  • Tevékenységek
  • Actors
  • Üzleti folyamat
  • alkatrészek
  • Programozási nyelv

Az aktivitás- és állapotgép-diagramokat a tesztgenerátorok a leggyakrabban olvassák, ahogy az alábbi UML-modell is mutatja.

UML diagramjelölés, amelyet forrásmodellként használnak a tesztesetek generálásához

Modellalapú tesztelőeszközök

Egy papíron lévő modell önmagában semmit sem generál. Szükség van egy generátorra, amely bejárja a modellt és tesztutakat generál, az eszközpiac pedig nyílt forráskódú generátorokra és kereskedelmi teszttervező platformokra oszlik.

  • GraphWalker — egy nyílt forráskódú eszköz, amely irányított gráfokként formált modelleket olvas be, és tesztútvonalakat generál belőlük, választható generátorokkal és leállítási feltételekkel.
  • fMBT — egy nyílt forráskódú, modellalapú tesztelőeszköz-készlet az Inteltől, amely támogatja a tesztek generálását és végrehajtását állapotmodellek ellen.
  • Conformiq — egy kereskedelmi forgalomban kapható automatizált teszttervező termék, amely grafikus viselkedési modellekből származtat teszteseteket és szkripteket.
  • MaTeLo és MBTsuite — statisztikai használati modellekre és meglévő automatizálási keretrendszerekbe való tesztek generálására szolgáló kereskedelmi platformok.
  • Specifikációböngésző - Microsofta Visual Studio modellalapú tesztelési kiterjesztése, amelyet széles körben idéznek a protokolltesztelési szakirodalomban.

A kiválasztás kevésbé függ a funkciólistáktól, mint inkább két kérdéstől: melyik jelölést tudja a csapat ténylegesen megrajzolni, és hogy az eszköz képes-e teszteket kibocsátani a már használatban lévő automatizálási keretrendszerbe. Egy olyan generátor, amely olyan csomagokat hoz létre, amelyeket senki sem tud végrehajtani, egy lépést hozzáad a folyamathoz, ahelyett, hogy eltávolítana egyet.

Modellalapú tesztelés vs. hagyományos teszttervezés

Érdemes rámutatni a kézzel írott teszttervezéssel való különbségre, mivel a két megközelítés nem feltétlenül jobb, hanem máshol vall kudarcot.

Aspect Modell alapú tesztelés Hagyományos tesztterv
A tesztesetek forrása Automatikusan generálva egy viselkedési modellből Egy tesztelő által egyedileg írt a követelmények alapján
A követelményváltozás hatása Frissítse a modellt, és generálja újra az érintett teszteket. Minden érintett teszteset manuális megkeresése és szerkesztése
Lefedettség Modellkritériumokhoz, például minden állapothoz vagy minden átmenethez viszonyítva mérve A követelményekhez mérve, és a tesztelő megítélésétől függően
Előzetes költség Magas: modellezési készség, szerszámbeállítás és adapterréteg Alacsony: a tesztelő azonnal elkezdhet írni
Legjobban illeszkedő Állapotalapú, hosszú élettartamú rendszerek stabil specifikációval Rövid projektek, egyszeri feladatok és felfedező munka
Fő hibamód Egy rossz vagy elavult modell csendben hibás teszteket generál Hézagok és duplikátumok halmozódnak fel egy nagy csomagban

Az alábbi evolúció kontextusba helyezi a technikát: a manuális tesztfuttatás utat engedett az automatizált végrehajtásnak, a modellalapú megközelítések pedig egy szinttel korábbra, magába a teszttervezésbe helyezik az automatizálást.

A szoftvertesztelés fejlődése a manuális végrehajtástól az automatizáláson át a modellalapú tesztelésig

A modell alapú tesztelés kihívásai

Az MBT bevezetése egy szervezetben jelentős anyagi és anyagi befektetést igényel. Az alábbiakban az MBT hátrányait ismertetjük: szoftverfejlesztés:

  • A tesztelőknek olyan modellezési készségekre van szükségük, amelyeket a hagyományos teszttervezés nem igényel.
  • A tanulási görbe hosszú, és az első projekt általában többe kerül, mint amennyit megtakarítanak vele.
  • Magát a modellt nehéz lehet megérteni és áttekinteni, különösen miután kinőtte.
  • Egy olyan modell, amely eltér a specifikációtól, magabiztos, de hibás teszteket eredményez.
  • Az adapter réteg, ami hasat forgattracA valós cselekvésbe vezető lépéseket külön kell megírni és karbantartani.
  • A modell mérete gyorsan növekszik, így egy korlátozás nélküli állapotmodell több útvonalat képes létrehozni, mint amennyit bármelyik csapat végre tud hajtani.

Ezek egyike sem ok a technika elkerülésére, de együttesen megmagyarázzák, miért vezetik be az MBT-t általában egy stabil alrendszeren először, ahelyett, hogy egy egészre kiterjedően vezetnék be. szoftvertesztelés életciklusa egyszerre.

A modellalapú tesztelés előnyei

Ezekkel a költségekkel szemben az MBT előnyei a következők:

  • Könnyű teszteset és tesztkészlet karbantartás, mivel a modell szerkesztése történik az egyes tesztek helyett.
  • Költségcsökkentés egy hosszú távú projekt élettartama alatt.
  • Továbbfejlesztett teszt lefedettség, mivel a generátor olyan útvonalakat is felfedez, amelyeket egy személy kihagyna.
  • A különböző generált csomagok párhuzamosan több gépen is futtathatók.
  • Korai hibaészlelés, mivel a kétértelműségek már a modell építése során felszínre kerülnek, mielőtt bármilyen kód végrehajtásra kerülne.
  • Az ugyanazon tesztelési erőfeszítés során talált hibák számának növekedése.
  • Időmegtakarítás a teszttervezésben, miután a modell és az adapter létezik.
  • A tesztelők munkájának megnövekedett elégedettsége, mivel a munka az ismétlődő szkriptelésről a modellezésre és elemzésre helyeződik át.

A tesztelők munka közben amúgy is mentális modelleket építenek, az MBT pedig egyszerűen papírra viszi ezeket a mentális modelleket, ahol áttekinthetők, verziózhatók és újra felhasználhatók. A technika többi elérhető megközelítéssel való illeszkedését a következő részben ismertetjük. a szoftvertesztelés típusai.

GYIK

Fekete doboz. A tesztek egy meghatározott viselkedésmodellből származnak, nem forráskódból. A technika csak akkor válik szürke dobozzá, ha a modellt belső tervdokumentációkból, és nem külső követelményekből építik fel.

Csak az a viselkedés, amelyhez érdemes teszteket generálni. Egyetlen állapotalapú munkafolyamatot modellezünk, például egy fizetést vagy egy hiba életciklusát, a lehető legdurvább szinten, amely még megkülönbözteti a valós eredményeket. Minden modellezése egy olyan állapotrobbanást eredményez, amelyet senki sem tud végrehajtani.

A modell a verziókövetésben a kóddal együtt található, megnevezett tulajdonossal és egy felülvizsgálati lépéssel, ugyanabban a változtatási folyamatban, mint a specifikáció. Egy tulajdonos nélküli modell sodródik, és egy sodródott modell megbízható, de hibás teszteket generál.

Nem. Egy generátor csak azt vizsgálja, amit a modell leír, így bármi, amit a modell kihagy, tesztelés nélkül marad. A feltáró ülések továbbra is az a mód, ahogyan a csapatok olyan viselkedést találnak, amit senki sem határozott meg, és gyakran feltárják azokat a hiányosságokat, amelyeket a modell aztán elnyel.

Hosszú életű, állapotalapú rendszerek írásos specifikációval: kommunikációs protokollok, beágyazott és autóipari vezérlők, orvostechnikai eszközök, banki munkafolyamatok és telekommunikációs berendezések. Ezek a területek egy stabil specifikációt túl sok jogi szekvenciával kombinálnak ahhoz, hogy kézzel felsorolhatók legyenek.

Amikor a specifikáció gyorsabban változik, mint ahogy a modell követni tudja, amikor a jellemző kicsi vagy rövid életű, vagy amikor a csapatban senki sem tudja karbantartani a jelöléseket. Ilyen esetekben a kézzel írott esetek kevesebbe kerülnek a projektnek.

A gépi tanulás a termelési naplókból és a rögzített munkamenetekből következtet ki vázlatállapot-modellekre, megjelöli azokat az átmeneteket, amelyeket a modell soha nem fed le, és a generált útvonalakat a hibaelőzmények alapján rangsorolja, így a legnagyobb kockázatú szekvenciák futnak először. A mérnökök továbbra is validálják a következtetett modellt.

Igen, főként az adapter réteghez: a step metódusokhoz, page objektumokhoz és az abs-t megkötő assertionökhöz.tracmodellműveleteket valós hívásokhoz. Annak eldöntése, hogy mit tartalmazzon a modell, és mely lefedettségi kritériumok számítanak, tervezési megítélés kérdése.

Foglald össze ezt a bejegyzést a következőképpen: