Modellvezérelt tesztelés

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

T ESZTELÉS. C ÉLJA Minél több hibát találjunk meg! Ahhoz, hogy az összes hibát fölfedezzük, kézenfekvőnek tűnik a programot az összes lehetséges bemenő.
4. alkalom – Hálózat Kezelés
Készítette: Kosztyán Zsolt Tibor
Osztály leszármaztatás
Krizsán Zoltán iit 1.1.  Aszinkron történésről értesítés egy vagy több objektum számára.  Delegátumok segítségével valósítja meg a C#.  event típus,
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 5.5. Model Based Architecture módszerek BelAmI_H Spring.
Grafikus tervezőrendszerek programozása 10. előadás.
HTML5 alapú fejlesztő és futtató környezet megvalósítása
A webes tesztelés jövője
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Kötelező alapkérdések
Kalman-féle rendszer definíció
Feladatok együttműködésének ellenőrzése
Hibakezelés és Tesztelés a Visual Studio.NET-ben
Öröklődés 2..
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Tanszéki konzulens: Horváth Ákos Készítette: Kóródi Norbert.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Szoftver bonyolultsági mértékek alkalmazási területei Király Roland 2011.
Szintézis Keresztes Péter, 2005 A GAJSKI-KUHN DIAGRAM Alapelv: Rendezzük a digitális- rendszerek leírásait célok és szintek szerint.
Ellenőrző kérdések a)Auto-indexing enabled b)Auto-indexing disabled c)Nem eldönthető 1.
C# tagfüggvények.
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
OE-NIK HP Haladó Programozás WCF kivételkezelés. OE-NIK HP Haladó Programozás Windows Communication Foundation A szolgáltatás, a hoszt és az ügyfél elkészítése.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Kliensoldali Programozás
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
Exchange Server 2007 Client Access Role
Magas Rendelkezésreállás I.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.
Rendelkezésre álló erőforrások pontos ismerete Kiosztott feladatok közel „valósidejű” követése Átláthatóság Tervezési folyamatok támogatása.
a Moodle autentikációjához a PTE FEEK-en
Objektum orientált programozás a gyakorlatban
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
VÉGES AUTOMATA ALAPÚ TERVEZÉSI MODELL
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
HTML5 alapú fejlesztő és futtató környezet megvalósítása
Hibaterjedés-analízis
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Egyenesvonalú (lineáris) adatszerkezetek
Rugalmas, moduláris felépítés Rugalmas telepítés Jól tervezhető szerepkörök Folyamatos rendelkezésre állás Egyszerű felügyelet Elérés bárhonnan Postafiók.
Slides for Quantum Computing and Communications – An Engineering Approach Chapter 7 Searching in an Unsorted Database Sándor Imre Ferenc Balázs.
A Visual Basic nyelvi elemei
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Illés Zoltán ELTE Informatikai Kar
Kapcsolatok ellenőrzése
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Szebb és használhatóbb programok Vezérlőelemek dinamikus felhelyezése.
PÁRHUZAMOS ARCHITEKTÚRÁK – 13 INFORMÁCIÓFELDOLGOZÓ HÁLÓZATOK TUDÁS ALAPÚ MODELLEZÉSE Németh Gábor.
PPKE ITK 2009/10 tanév 8. félév (tavaszi) Távközlő rendszerek forgalmi elemzése Tájékoztatás
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Tesztsorozat generálás
Példa. Az ábrázolás szemléltetése.  = ({stack, elem },{ create :  stack; push : stack elem  stack}),  = ( {vector, nat, elem}, { create c :  vector.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
1 Konformancia tesztelés Csöndes Tibor Ericsson Kft., R&D, BME-TMIT
Kiss Tibor System Administrator (MCP) ISA Server 2006.
Maven és Ant Build eszközök bemutatása
Script nyelvek előadás
Sudoku.
Inkrementális Tesztgenerálás FSM Modellhez
Web programozás és haladó fejlesztési technikák – C#
Folyamatok.
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Előadás másolata:

Modellvezérelt tesztelés Paróczi Zsombor

A legnagyobb kérdés Hogyan kontrollálható az állapotrobbanás a tesztelés érdemi rontása nélkül.

Előadás felépítése MBT-ről általában 3 kiválasztott cikk Search-based testing for Event-B Syntactic Abstraction of B Models to Generate Tests Model-Based Testing of Object-Oriented Reactive Systems with Spec Explorer

MBT Model based testing

MBT Black-box rendszer / szoftver tesztelés Modellt készítünk (sok esetben kézzel) Modell alapján generáljuk a teszteket Végrehajtjuk a teszteket TestSuite TC#1 TC#2 TC#N TCP Connection establishment “The active open is performed by the client sending a SYN to the server. It sets the segment's sequence number to a random value A. In response, the server replies with a SYN-ACK. The acknowledgment number is set to one more than the received sequence number (A + 1), and the sequence number that the server chooses for the packet is another random number, B. Finally, the client sends an ACK back to the server. The sequence number is set to the received acknowledgement value, and the acknowledgement number is set to one more than the received sequence number i.e. B + 1. “ Model Forrás: Konformancia tesztelés diasor – Távközlő hálózatok , Csöndes Tibor, Ericsson Kft., R&D

Előnyök Hátrányok Csak a modellt kell karbantartani Modell hibái is kiderülhetnek Sokszor a formális modell rendelkezésre áll (távközlő rendszerek) Párhuzamosan írható a teszt és a kód Állapottér robbanásra figyelni kell Tesztesetek nehezebben hordozhatóak Modell “készítése” kritikus folyamat Nagyon sok múlik a tesztgeneráló algoritmuson

MBT dimenziói Forrás: A taxonomy of model-based testing (M. Utting, A. Pretschner, B. Legeard)

FSM - Finite State Machine Def: Egy determinisztikus véges automata a következő hatos: ahol: az állapotok véges halmaza a bemenetek véges halmaza a kimenetek véges halmaza az állapot átmenet függvény, mely leképezi a jelenlegi állapotot és a bemenetet a következő állapotra: a kimeneti függvény, mely leképezi a jelenlegi állapotot és a bemenetet a kimenetre: a kezdeti állapot Megjegyzés: Különbség a nyelvi automatákhoz képest: a fent definiált FSM egy bemenetre egy kimenetet ad és nincs elfogadó állapot. (Így tudunk tesztelni!) Forrás: Tesztsorozat generálás diasor – Távközlő hálózatok , Csöndes Tibor, Ericsson Kft., R&D

EFSM – Extended Finite State Machine Def: Egy determinisztikus kiterjesztett véges automata a következő tizes: ahol: a predikátumok véges halmaza, azaz egy bemeneti eseményhez egy adott állapotban és változó kombinációban az igaz, vagy hamis értéket rendeli. a változók véges halmaza az akciók véges halmaza a változók kezdeti értéke Forrás: Tesztsorozat generálás diasor – Távközlő hálózatok , Csöndes Tibor, Ericsson Kft., R&D

Ez egy gráf! Állapotok = Gráf pontjai (összes változó összes binárisa 2n) Akciók = Gráf élei Tesztelő él (Testing edge) legyen a következő: Az automata állapotba vitele bemeneti esemény előidézése és kimenet ellenőrzése A várt állapot ellenőrzése Forrás: Tesztsorozat generálás diasor – Távközlő hálózatok , Csöndes Tibor, Ericsson Kft., R&D

Klasszikus módszerek DS módszer W módszer UIO sorozatok módszere TT módszer Egy minimális költségű tesztsorozatot keresni, amely leteszteli az FSM összes állapotátmenetét, egyenértékű azzal, hogy keresünk egy Vidéki kínai postás (RCP) utat gráf élein: Minimális költségű út, mely az FSM kezdeti állapotából indul, végighalad -ben lévő éleken legalább egyszer és visszatér a kezdeti állapotba. Természetesen E-ben lévő éleket is használhatunk a bejárás során Forrás: Tesztsorozat generálás diasor – Távközlő hálózatok , Csöndes Tibor, Ericsson Kft., R&D

Search-based testing for Event-B Alin Stefanescu – University of Pitesti, Romania 13th CREST Open Workshop

Event-B Forrás: Alin Stefanescu – CREST Open workshop – London 2011

Event-B teszt generálás

Explicit állapottér

Probléma megközelítése

Probléma megközelítése

GA megközelítés

Fitness

Eredmények

Syntactic Abstraction of B Models to Generate Tests J. Julliand, N. Stouls, P.-C. Bué, and P.-A. Masson Tests and Proofs 2010, Malaga : Spain (2010)

Ötlet A teljes részgráf egy részén tesztek végrehajtása Hogyan lehet részgráfot létrehozni? Állapotok részhalmazára szűkítés Releváns változók kiemelése Data-Flow Fependency Only Data-Flow and Control-Flow Dependencies Állapot részhalmazból abstract modell Abstract modell és “teszt cél” (TP) összevetése, ebből már kevesebb és rövidebb teszt lesz.

Absztrakció

Model-Based Testing of Object-Oriented Reactive Systems with Spec Explorer Margus Veanes, Colin Campbell, Wolfgang Grieskamp, Wolfram Schulte, Nikolai Tillmann, Lev Nachmanson Microsoft 2007

Spec Explorer Spec# és AsmL modellező nyelvek Modell ellenőrző FSM alapján tesztek előállítása .NET nyelvű programok konformancia tesztelése

Példa: Chat The chat system is a distributed, reactive system with an arbitrary number of clients. Each client may post text messages that will be delivered by the system to all other clients that have entered the chat session. The system delivers pending messages in FIFO order with local consistency. However, if there are multiple senders, the messages may be interleaved arbitrarily.

Modell készítése Client osztály “entered” bool változó “unreceivedMsgs” kliensre még meg nem érkezett, de már mások által elküldött üzenetek listája Konstruktor Enter akció Send akció Receive akció

Spec# leírás (1) class Client { bool entered; Map<Client,Seq<string>> unreceivedMsgs; [Action] Client() { this.unreceivedMsgs = Map; foreach (Client c in enumof(Client), c != this){ c.unreceivedMsgs[this] = Seq{}; this.unreceivedMsgs[c] = Seq{}; } entered = false;

Spec# leírás (2) [Action] void Enter() requires !entered; { entered = true; } [Action] void Send(string message) requires entered; { foreach (Client c in enumof(Client), c != this, c.entered) c.unreceivedMsgs[this] += Seq{message};

Spec# leírás (3) [Action(Kind=ActionAttributeKind.Observable)] void Receive(Client sender, string message) requires sender != this && unreceivedMsgs[sender].Length > 0 && unreceivedMsgs[sender].Head == message; { unreceivedMsgs[sender] = unreceivedMsgs[sender].Tail; }

2 kliensre az állapottér

Miért ilyen “egyszerű” a gráf? “Üres” tesztek szűrése Állapottér szűkítés Felhasználói annotálás Elfogadó állapotok definíciója Állapot invariánsok Paraméter szűkítés Funkció korlátozás Direkt állapot szűrés Állapot csoportosítás

Állapottér szűkítés Egy adott állapotban az előfeltételek alapján szűrnek A tesztelésnél a következő lépés vizsgálatánál már teljesült precondition alapján Pl.: Konstruktor után “entered” false lesz, ezért az Enter() meghívható

Felhasználói annotálás 3 tényleges aktívan hívható akció van 1 “megfigyelhető” akció Kényszeríthető és letiltható egy adott akció figyelése

Elfogadó állapotok definíciója Egyszerű leírással adható meg, mit jelent az elfogadó állapot Példában minden állapot, kivéve a kezdeti állapot és amikor van meg nem érkezett üzenet enumof(Client).Size > 0 && Forall{ c in enumof(Client), s in c.unreceivedMsgs.Keys; c.unreceivedMsgs[s].Length == 0}

Állapot invariánsok Minden állapotban érvényes állítások (nem relevánsak vagy előre tudjuk, hogy nem fordulhat elő) Példában: egyik kliens sem kapja meg a saját üzenetét Forall{ c in enumof(Client); c notin c.unreceivedMsgs.Keys } Ellenőrzést az eszköz elvégzi, de az állapotot elrejti

Paraméter szűkítés Alapméretezett értékek Típus alapú korlátozás Paraméter alapú korlátozás Funkció paraméter alapú korlátozás Példában: Message csak “Hi” lehet Message: Set{c in enumof(Client);<c,"hi">}.

Funkció korlátozás Funkciók végrehajtásának nemtriviális előfeltételekhez való kötése Példában: Minden kliens konstruktor végrehajtása után lehet csak a Send() parancsot meghívni enum Mode { Creating, Entering, Sending }; Mode CurrentMode { get { if (enumof(Client).Size < 2) return Mode.Creating; if(Set{cin enumof(Client),!c.entered;c}.Size<2) return Mode.Entering; return Mode.Sending; } }

Direkt állapot szűrés Rákövetkezések külön korlátozása Példában: Egy adott üzenetet egy kliens csak egyszer küld el mielőtt az mindenkihez megérkezne Forall{c in enumof(Client), s in c.unreceivedMsgs.Keys, m1 in c.unreceivedMsgs[s], m2 in c.unreceivedMsgs[s]; m1 != m2}

Állapot csoportosítás Több állapotot egy osztályba lehet sorolni, egy reprezentatív elem kiválasztásával Példában: Belépések illetve üzenetküldések sorrendje a tesztet (és a modellt) sem módosítja – azonos típusúak a kliensek Bag{c in enumof(Client); <c.entered,Bag{<s,m> in c.unreceivedMsgs; m}>} (n kliensnél ez n! belépési sorrend lehetne, ebből csak egyet látunk)

A legnagyobb kérdés Hogyan kontrollálható az állapotrobbanás a tesztelés érdemi rontása nélkül.

Én megkaptam a választ… … de ha vannak kérdések, örömmel válaszolok.