1 / 42

Modellvezérelt tesztelés

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

paxton
Download Presentation

Modellvezérelt tesztelés

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modellvezérelttesztelés ParócziZsombor

  2. A legnagyobbkérdés Hogyankontrollálhatóazállapotrobbanás a tesztelésérdemirontásanélkül.

  3. Előadásfelépítése • MBT-rőláltalában • 3 kiválasztottcikk • 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

  4. MBT Model based testing

  5. MBT • Black-box rendszer / szoftvertesztelés • Modelltkészítünk (sokesetbenkézzel) • Modell alapjángeneráljuk a teszteket • Végrehajtjuk a teszteket TestSuite 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. “ TC#2 TC#N TC#1 Model Forrás: Konformanciatesztelésdiasor – Távközlőhálózatok , Csöndes Tibor, Ericsson Kft., R&D

  6. ElőnyökHátrányok • Csak a modelltkellkarbantartani • Modell hibái is kiderülhetnek • Sokszor a formálismodellrendelkezésreáll (távközlőrendszerek) • Párhuzamosanírható a tesztés a kód • Állapottérrobbanásrafigyelnikell • Teszteseteknehezebbenhordozhatóak • Modell “készítése” kritikusfolyamat • Nagyonsokmúlik a tesztgenerálóalgoritmuson

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

  8. FSM - Finite State Machine Def:Egy determinisztikusvé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: Tesztsorozatgenerálásdiasor – Távközlőhálózatok , Csöndes Tibor, Ericsson Kft., R&D

  9. EFSM –Extended Finite State Machine Def:Egy determinisztikus kiterjesztettvé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: Tesztsorozatgenerálásdiasor – Távközlőhálózatok , Csöndes Tibor, Ericsson Kft., R&D

  10. Ezegygráf! • Állapotok= Gráfpontjai(összesváltozóösszesbiná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: Tesztsorozatgenerálásdiasor – Távközlőhálózatok , Csöndes Tibor, Ericsson Kft., R&D

  11. Klasszikusmódszerek • DS módszer • W módszer • UIO sorozatokmódszere • TTmó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észetesenE-ben lévő éleket is használhatunk a bejárás során Forrás: Tesztsorozatgenerálásdiasor – Távközlőhálózatok , Csöndes Tibor, Ericsson Kft., R&D

  12. Search-based testing for Event-B AlinStefanescu – University of Pitesti, Romania 13th CREST Open Workshop

  13. Event-B Forrás: AlinStefanescu – CREST Open workshop – London 2011

  14. Event-B tesztgenerálás

  15. Explicit állapottér

  16. Problémamegközelítése

  17. Problémamegközelítése

  18. GA megközelítés

  19. Fitness

  20. Eredmények

  21. 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)

  22. Ötlet • A teljesrészgráfegyrészéntesztekvégrehajtása • Hogyanlehetrészgráfotlétrehozni? • Állapotokrészhalmazáraszűkítés • Relevánsváltozókkiemelése • Data-Flow Fependency Only • Data-Flow and Control-Flow Dependencies • Állapotrészhalmazból abstract modell Abstract modellés “tesztcél” (TP) összevetése, ebbőlmárkevesebbésrövidebbtesztlesz.

  23. Absztrakció

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

  25. Spec Explorer • Spec# ésAsmLmodellezőnyelvek • Modell ellenőrző • FSM alapjántesztekelőállítása • .NET nyelvűprogramokkonformanciatesztelése

  26. 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.

  27. Modell készítése Clientosztály • “entered” boolváltozó • “unreceivedMsgs” kliensremég meg nemérkezett, de mármásokáltalelküldöttüzeneteklistája • Konstruktor • Enter akció • Send akció • Receive akció

  28. Spec# leírás (1) class Client {boolentered; 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; }

  29. 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}; }

  30. 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; } }

  31. 2 kliensreazállapottér

  32. Miértilyen “egyszerű” a gráf? • “Üres” tesztekszűrése • Állapottérszűkítés • Felhasználóiannotálás • Elfogadóállapotokdefiníciója • Állapotinvariánsok • Paraméterszűkítés • Funkciókorlátozás • Direktállapotszűrés • Állapotcsoportosítás

  33. Állapottérszűkítés • Egyadottállapotbanazelőfeltételekalapjánszűrnek • A tesztelésnél a következőlépésvizsgálatánálmárteljesült precondition alapján • Pl.: Konstruktorután “entered” false lesz, ezértaz Enter() meghívható

  34. Felhasználóiannotálás • 3 ténylegesaktívanhívhatóakció van • 1 “megfigyelhető” akció • Kényszeríthetőésletilthatóegyadottakciófigyelése

  35. Elfogadóállapotokdefiníciója • Egyszerűleírássaladható meg, mitjelentazelfogadóállapot • Példábanmindenállapot, kivéve a kezdetiállapotésamikor van meg nemérkezettüzenet enumof(Client).Size > 0 &&Forall{ c in enumof(Client), s in c.unreceivedMsgs.Keys; c.unreceivedMsgs[s].Length == 0}

  36. Állapotinvariánsok • Minden állapotbanérvényesállítások (nemrelevánsakvagyelőretudjuk, hogynemfordulhatelő) • Példában: egyikklienssemkapja meg a sajátüzenetét Forall{ c in enumof(Client); c notinc.unreceivedMsgs.Keys } Ellenőrzéstazeszközelvégzi, de azállapototelrejti

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

  38. Funkciókorlátozás • Funkciókvégrehajtásánaknemtriviáliselőfeltételekhezvalókötése • Példában: Minden klienskonstruktorvégrehajtásautánlehetcsak a Send() parancsotmeghívni enumMode { Creating, Entering, Sending }; Mode CurrentMode { get { if (enumof(Client).Size < 2) return Mode.Creating; if(Set{cinenumof(Client),!c.entered;c}.Size<2) return Mode.Entering; return Mode.Sending; } }

  39. Direktállapotszűrés • Rákövetkezésekkülönkorlátozása • Példában: Egyadottüzenetetegyklienscsakegyszerküld el mielőttazmindenkihezmegérkezne Forall{c in enumof(Client), s in c.unreceivedMsgs.Keys,m1 in c.unreceivedMsgs[s], m2 in c.unreceivedMsgs[s]; m1 != m2}

  40. Állapotcsoportosítás • Többállapototegyosztálybalehetsorolni, egyreprezentatívelemkiválasztásával • Példában: Belépésekilletveüzenetküldéseksorrendje a tesztet (és a modellt) semmódosítja – azonostípusúak a kliensek Bag{c in enumof(Client); <c.entered,Bag{<s,m> in c.unreceivedMsgs; m}>} (n kliensnélez n! belépésisorrendlehetne, ebbőlcsakegyetlátunk)

  41. A legnagyobbkérdés Hogyankontrollálhatóazállapotrobbanás a tesztelésérdemirontásanélkül.

  42. Énmegkaptam a választ… … de ha vannakkérdések, örömmelválaszolok.

More Related