T estovanı konecnych autom atu O bsah K onecne autom aty v praxi
Transkript
Definice February 27, 2008 4 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů February 27, 2008 PQ označuje množinu všech podmnožin Q (potenčnı́ množina množiny Q). 5 / 36 F(q, input) obsahuje možné stavy automatu, do kterých lze přejı́t ze stavu q po přijmutı́ symbolu input. F : Q × Input → PQ konečnou množinu Q prvků nazývanou stavy. podmnožinu I množiny Q obsahujı́cı́ počátečnı́ stavy. podmnožinu T množinu Q obsahujı́cı́ konečné stavy. konečnou množinu přechodů, které pro každý stav a každý symbol vstupnı́ abecedy vracı́ následujı́cı́ stav. Přechodová funkce 4 3 2 1 Nechť Input je konečná abeceda. Konečný stavový automat nad Input obsahuje následujı́cı́ položky: Konečný automat [HI98] Definice Testovánı́ konečných automatů Konečný automat - základy Radek Mařı́k ([email protected]) stavů (vrcholy), přechodů (hrany), vstupů (označenı́ hran) a výstupů (označenı́ hran či uzlů). Konečný automat abstraktnı́ stroj, jehož počet stavů a vstupnı́ch symbolů je konečný a neměnný. skládá se ze široké použitı́ v objektově orientovaném návrhu. software řı́zený pomocı́ menu: primárnı́ ovládánı́ se provádı́ pomocı́ výběru z položek menu. výborný model pro testovánı́ aplikacı́ řı́zených pomocı́ menu, Konečné automaty v praxi [Bei95] Konečný automat - základy Testovánı́ konečných automatů Formalizace testovánı́ automatů Definice Přı́klad 3 Radek Mařı́k ([email protected]) Neformálnı́ přı́stup testovánı́ automatů Terminologie Postup Problémy Konečný automat - základy Definice Testovánı́ konečných automatů 2 1 Obsah Radek Mařı́k ([email protected]) February 27, 2008 CA CZ, s.r.o. Radek Mařı́k Testovánı́ konečných automatů February 27, 2008 February 27, 2008 2 / 36 1 / 36 Definice February 27, 2008 8 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů Počet stavů: počet vzájemně různých kódů stavu. February 27, 2008 Čı́tač stavů: hypotetické nebo aktuálnı́ mı́sto paměti držicı́ kód okamžitého stavu. 9 / 36 Počátečnı́ stav: speciálnı́ stav systému, ve kterém se systém nacházı́ před přijmutı́m jakéhokoli vstupnı́ události. Okamžitý stav: stav, ve kterém se právě systém nacházı́. Kód stavu: přiřazenı́ symbolů ke stavům. Stavy Stav: stavy se zobrazujı́ jako uzly diagramu stavového automatu. Kódovánı́ stavů [Bei95] Definice Testovánı́ konečných automatů Konečný automat - základy Radek Mařı́k ([email protected]) Vstupnı́ symboly: množina vzájemně různých symbolů použitých pro kódovánı́ vstupnı́ch událostı́. Kódovánı́ vstupnı́ch událostı́: přiřazenı́ jména či čı́sla. Vstupy Vstupnı́ událost: rozlišitelná opakovatelná událost jako fixnı́ sekvence aktivy vstupů. Kódovánı́ vstupů [Bei95] Konečný automat - základy [HI98] Definice Radek Mařı́k ([email protected]) Testovánı́ konečných automatů zda jsou zařı́zenı́ aktivnı́ či ne. druh formuláře, který je viditelný na monitoru, mód chovánı́ systému, Množina stavů Q hodnoty jistých důležitých proměnných systému, přijmutı́ signálu ze senzoru. kliky či pohyby myše, Množina Input akce či přı́kazy uživatele zadaných na klávesnici, Přı́klady konečných automatů [HI98] Definice Testovánı́ konečných automatů Konečný automat - základy Radek Mařı́k ([email protected]) F a G mohou být parciálnı́ funkce. February 27, 2008 February 27, 2008 pro každý stav a pro každý vstupnı́ symbol určuje výstupnı́ symbol. G : Q × Input → Output Konečná množina Q prvků nazývaných stavy. Podmnožina I množiny Q obsahujı́cı́ počátečnı́ stavy. Podmnožina T množiny Q obsahujı́cı́ koncové stavy. Množina Output možných výstupů. Konečná množina přechodů, které pro každý stav a každý symbol vstupnı́ abecedy vracı́ množinu možných následujı́cı́ch stavů. Výstupnı́ funkce 5 4 3 2 1 Input konečná abeceda. Konečný automat nad množinou Input obsahuje následujı́cı́ komponenty: Konečný automat s výstupem Konečný automat - základy 7 / 36 6 / 36 d>n DB n>d NB n>r RB d>d n>n r>n DS n>d NS n>r RS STOPPED Vlastnosti stavových diagramů d>d [Bei95] Definice r>r <> d>n d>d n>n r>n February 27, 2008 DF n>d NF n>r RF FORWARD 12 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů pěkná symetrie je velmi řı́dký jev v praxi. February 27, 2008 13 / 36 typicky se uvažujı́ všechny možné i nemožné vstupy v daném stavu implementace systému nemusı́ být správná. stavové grafy rostou velmi rychle, Vlastnosti silně souvislý graf, n>n r>n Definice Testovánı́ konečných automatů d>n r>r <> Konečný automat - základy Radek Mařı́k ([email protected]) r>r BACKWARD Stavový prostor Enterprise [Bei95] Konečný automat - základy Definice input X / output Y State B February 27, 2008 10 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů February 27, 2008 možné vstupy: d > d, r > r , n > n, d > n, n > d, n > r , r > n. kombinace vytvořı́ devět stavů: DF, DS, DB, NF, NS, NB, RF, RS, a RB. tři možné stavy pohybu: pohyb dopředu(F), zastavena(S), a pohyb vzad(B). Model vesmı́rné lodi Enterprise tři nastavenı́ impulsnı́ho motoru: tah vpřed(d), neutrál(n), a zpětný tah(r). 11 / 36 Vrcholy: zobrazujı́ stavy (stav softwarové aplikace). Hrany: znázorňujı́ přechody (výběr položky v menu). Atributy hran (vstupnı́ kódy): např. akce myšı́, Alt+Key, funkčnı́ klı́če, klávesy pohybu kursoru. Atributy hran (výstupnı́ kódy): např. zobrazenı́ jiného menu či otevřenı́ dalšı́ho okna. Stavový diagram [Bei95] Definice Testovánı́ konečných automatů Konečný automat - základy Radek Mařı́k ([email protected]) Nulový výstup: hypotetická výstupnı́ údalost, při které systém na svém výstupu neprovede žádnou akvititu. Kódovánı́ výstupu: symbol výstupnı́ události. Výstupy Výstupnı́ událost: systém může produkovat na svém výstupu aktivity při změnách stavu či při přechodech. Vlastnı́ přechod: při přechodu se stav nezměnı́; hrana vede stavu zpět do tohoto stavu. State A Přechody Přechod: odezva systému na vstupnı́ událost, při které se může změnit jeho stav. Přechody a výstupy [Bei95] Konečný automat - základy February 27, 2008 edit_price 16 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů February 27, 2008 18 / 36 Reset: speciálnı́ vstupnı́ akce způsobujı́cı́ přechod z jakéhokoliv stavu do počátečnı́ho stavu. Isolované stavy: množina stavů, které nejsou dosažitelné z počátečnı́ho stavu. Pokud existujı́, jedná se o velmi podezřelé, chybové stavy. Silně souvislý: všechny stavy konečného automatu jsou dosažitelné z počátečnı́ho stavu. Většina modelů v praxi je silně souvislá, pokud neobsahujı́ chyby. Nedosažitelný stav: stav je nedosažitelný, pokud nenı́ dosažitelný, zvláště z počátečnı́ho stavu. Nedosažitelné stavy znamenajı́ typicky chybu. Dosažitelný stav: stav B je dosažitelný ze stavu A, jestliže existuje sekvence vstupů taková, která převede systém ze stav A do stavu B. [Bei95] Terminologie Testovánı́ konečných automatů ORDERS PRICES HELP CUST edit_order close_price prices orders MAIN Neformálnı́ přı́stup testovánı́ automatů Dosažitelnost stavů close_help_cust help_cust Definice close_cust CUST OMERS cust close_order close open Radek Mařı́k ([email protected]) OFF edit_cust Přı́klad - estimátor [HI98] Konečný automat - základy Definice RB RB RS RB RS RF NB NS NF DB DS DF NB NS NF r >n Radek Mařı́k ([email protected]) r >r STATE Enterprise RB RS RF n>r DB DS DF n>d [Bei95] DS DF DF d >d Testovánı́ konečných automatů NB NS NF n>n Přechodová tabulka Enterprise Definice Testovánı́ konečných automatů Konečný automat - základy Radek Mařı́k ([email protected]) NB NS NF d >n d >r February 27, 2008 r >d February 27, 2008 hierarchické (vnořené) automaty jsou jedinou cestou, jak se vyhnout obrovským tabulkám (např. stavová schémata, angl. statechart, starchart, atd.) 15 / 36 14 / 36 hodnotou pole v tabulce výstupů je výstupnı́ kód pro daný přechod. hodnotou pole v tabulce přechodů je přı́štı́ stav, tabulka přechodů tabulka výstupů má pro každý stav jeden řádek a pro každý vstup jeden sloupec, ve skutečnosti jsou tabulky dvě s stejným tvarem: Přechodové tabulky [Bei95] Konečný automat - základy Postup identifikuj stavy. definuj kódovánı́ stavů. identifikuj výstupnı́ akce. definuj kódovánı́ výstupnı́ch akcı́. 3 4 5 6 pro každý vstup ověř jak přechod, tak i výstup. 10 Postup February 27, 2008 22 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů Je každý koncový stav dosažitelný? kódovánı́ vstupů, kódovánı́ výstupů, stavy, každý přechod. February 27, 2008 Určı́me výstupnı́ kódy asociované s přechody okružnı́ cesty. Ověřı́me Určı́me vstupnı́ kód pro každý přechod okružnı́ cesty. Každý test stavı́ na předchozı́ch jednoduššı́ch testech. 23 / 36 Z počátečnı́ho stavu se systém přivede nejkratšı́ cestou k vybranému stavu, provede se zadaný přechod a systém se nejkratšı́ možnou cestou přivede opět do počátečnı́ho staru; vytvářı́me tzv. okružnı́ cestu. Každý test začı́ná v počátečnı́m stavu. Návrh testů [Bei95] Neformálnı́ přı́stup testovánı́ automatů Testovánı́ konečných automatů proveď testy, 9 Radek Mařı́k ([email protected]) navrhni testy, 8 specifikuj tabulku přechodů a tabulku výstupů a zkontroluj ji - jeden z nejnamahavějšı́ch kroků návrhu, definuj kódy vstupů. Vstupy, které netestujeme se nezahrnujı́. 2 7 identifikuj vstupy. [Bei95] 1 Obecný návod k testovánı́ automatů Neformálnı́ přı́stup testovánı́ automatů minimálnı́ automaty, 3 19 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů February 27, 2008 20 / 36 modely, které nejsou silně souvislé, jsou typicky chybou modelu nebo chybou v návrhu. jednoznačné kódovánı́ vstupů, 2 4 Terminologie February 27, 2008 úplnost a konzistence, tj. kontrola chybějı́cı́ch vstupů, nejednoznačnosti, rozpory, atd. Ověřovánı́ modelu [Bei95] Neformálnı́ přı́stup testovánı́ automatů Testovánı́ konečných automatů Okružnı́ cesta stavu A: sekvence přechodů jdoucı́ ze stavu A do stavu B a zpět do A. Úplně specifikovaný: je systém, pokud je přechody a výstupnı́ kódy definovány pro jakoukoliv kombinaci vstupnı́ho kódu a stavu. Množina koncových stavů: dostane-li se systém do této množiny, nelze se zpět vrátit do pracovnı́ množiny, např. ukončovacı́ sekvence programu. Počátečnı́ stav pracovnı́ množiny: stav pracovnı́ množiny, který je možné považovat za “výchozı́ stav”. Pracovnı́ stavy: po opuštěnı́ množiny počátečnı́ho stavu, se systém pohybuje v silně souvislé množině stavů, kde se provádı́ většina testovánı́. Radek Mařı́k ([email protected]) 1 Terminologie Množina počátečnı́ho stavu: Jakmile se provede přechod z této množiny, pak se do této množiny již nelze vrátit (např. boot systému). Rozdělenı́ stavů [Bei95] Neformálnı́ přı́stup testovánı́ automatů resetovánı́ do specifického stavu, krokovánı́, trasovánı́ přechodů. explicitnı́ tabulka vstupnı́ho kódovánı́, explicitnı́ tabulka výstupnı́ho kódovánı́, explicitnı́ tabulka přechodové funkce. 2 3 4 5 6 7 B Testovánı́ konečných automatů A g (q0 ) = q0 ′ ∀q ∈ Q, input ∈ Input, g (F(q, input)) = F′ (g (q), input) Radek Mařı́k ([email protected]) 2 1 g g : Q → Q′ = (Input, Q ′ , F′ , q0 ′ ) : A → A′ A′ A = (Input, Q, F, q0 ) založeno na izomorfismu konečných automatů, Testovánı́ konečného automatu [HI98] Definice Testovánı́ konečných automatů Formalizace testovánı́ automatů Radek Mařı́k ([email protected]) nedostatečná podpora. vnořené modely versus vnořené systémy, velké stavové grafy, Omezenı́: explicitnı́ počı́tadlo stavů, Problémy 1 Testovatelnost [Bei95] Neformálnı́ přı́stup testovánı́ automatů February 27, 2008 February 27, 2008 29 / 36 27 / 36 C c B Radek Mařı́k ([email protected]) b a a Skryté stavy b A A1 A2 Problémy Testovánı́ konečných automatů b Neformálnı́ přı́stup testovánı́ automatů Testovánı́ konečných automatů b C a a a a a !!! February 27, 2008 B1 B2 B3 c a February 27, 2008 c 26 / 36 c 25 / 36 Typicky se nejedná o jeden či dva skryté stavy, ale stavový prostor se zdvojnásobuje či jinak násobı́. např. že vı́me, ve kterém stavu se systém nacházı́. Při testovánı́ softwaru můžeme předpokládat věci, které nemusı́ obecně platit. Má implementace skryté stavy? Test nelze zahájit, pokud systém nenı́ potvrzeným způsobem v počátečnı́m stavu. Aplikace si uchovávajı́ persistentně své nastavenı́. Jestliže předchozı́ test selže, v jakém stavu se aplikace nacházı́? Radek Mařı́k ([email protected]) A Problémy Je systém v počátečnı́m stavu? Skryté stavy Neformálnı́ přı́stup testovánı́ automatů a/y q3 q0 b/x b/y b/y Přı́klad q2 a/x q1 a/y February 27, 2008 Radek Mařı́k ([email protected]) = . . . simplification Testovánı́ konečných automatů b :: a :: b :: b :: a :: b, b :: a :: b :: b :: b :: a, b :: a :: b :: b :: b :: b} b :: a :: b :: b :: a, b :: a :: b :: b :: b, b :: a :: b :: b :: a :: a, b :: a :: b :: a :: a :: b, b :: a :: b :: a :: b :: a, b :: a :: b :: a :: b :: b, b :: a :: b :: a :: a, b :: a :: b :: a :: b, b :: a :: b :: a :: a :: a, February 27, 2008 b :: a :: b :: a, b :: a :: b :: b, b :: a :: b :: a :: a, b :: a :: b :: a :: b, b :: a :: b :: b :: a, b :: a :: b :: b :: b, b :: a :: a :: a, b :: a :: a :: b, b :: a :: a :: a :: a, b :: a :: a :: a :: b, b :: a :: a :: b :: a, b :: a :: a :: b :: b, b :: b :: a, b :: b :: b, b :: b :: a :: a, b :: b :: a :: b, b :: b :: b :: a, b :: b :: b :: b, b :: a :: a, b :: a :: b, b :: a :: a :: a, b :: a :: a :: b, b :: a :: b :: a, b :: a :: b :: b, b :: a, b :: b, b :: a :: a, b :: a :: b, b :: b :: a, b :: b :: b, a :: a, a :: b, a :: a :: a, a :: a :: b, a :: b :: a, a :: b :: b, = {a, b, a :: a, a :: b, b :: a, b :: b, •{a, b, a :: a, a :: b, b :: a, b :: b} = { <>, a, b, b :: a, b :: b, b :: a :: a, b :: a :: b, b :: a :: b :: a, b :: a :: b :: b} T •Z = Testovacı́ množina přı́kladu [HI98] Přı́klad Testovánı́ konečných automatů Formalizace testovánı́ automatů Radek Mařı́k ([email protected]) 34 / 36 33 / 36 Input = {a, b} L = {<>, b, b :: a, b :: a :: b}, <> . . . nulový vstup T = {<>, a, b, b :: a, b :: b, b :: a :: a, b :: a :: b, b :: a :: b :: a, b :: a :: b :: b} W = {a, b} [Chy84], pp. 31–34 Z = Input • W ∪ W = {a, b} • {a, b} ∪ {a, b} = {a, b, a :: a, a :: b, b :: a, b :: b} a/x Jednoduchý přı́klad [HI98] Formalizace testovánı́ automatů Definice February 27, 2008 T •Z 30 / 36 Radek Mařı́k ([email protected]) Testovánı́ konečných automatů February 27, 2008 31 / 36 že všechny stavy a přechody specifikace jsou implementovány, množina Z zajišťuje, že implementace je ve stejném stavu, který určuje specifikace. Parametr k jistı́, že do jisté úrovně všechny skryté stavy implementace jsou testovány. Pokrytı́ přechodů zajisťuje, Konečná množina testů: Jestliže A a B jsou množiny sekvencı́ stejné abecedy, pak A • B značı́ množinu sekvencı́, složených ze sekvencı́ množiny A následujı́cı́ sekvencı́ z B. k kroků do “neznámého” prostoru následovaných ověřenı́m stavu O kolik je v implementaci vı́ce testů než ve specifikaci? (k) Z = Input k • W ∪ Input k−1 • W ∪ · · · ∪ Input 1 • W ∪ W Generovánı́ množiny testů [HI98] Definice Testovánı́ konečných automatů Formalizace testovánı́ automatů Radek Mařı́k ([email protected]) sequence ∈ T + input ∈ Input Pokrytı́ stavu je množina vstupnı́ch sekvencı́ L taková, že lze nalézt prvek množiny L, kterým se lze dostat do jakéhokoliv žádaného stavu z počátečnı́ho stavu q0 . Pokrytı́ přechodů minimálnı́ho automatu je množina vstupnı́ch sekvencı́ T , která je pokrytı́m stavů a uzavřená z hlediska pravé kompozice s množinou vstupů Input. Množina vstupnı́ch sekvencı́ W se nazývá charakterizačnı́ množina, jestliže může rozlišit jakékoliv dva stavy stavy automatu. Automat je minimálnı́, pokud neobsahuje redundantnı́ stavy. Nechť L je množina vstupnı́ch sekvencı́ a q, q ′ dva stavy. L rozlišı́ stav q od q ′ , jestliže existuje sekvence k v L taková, že výstup zı́skaný apliacı́ k na automat ve stavu q je různý od výstupu zı́skaný aplikacı́ k na stav q ′ . Konstrukce množiny testů [HI98] Formalizace testovánı́ automatů Formalizace testovánı́ automatů Přı́klad Radek Mařı́k ([email protected]) Testovánı́ konečných automatů Mike Holcombe and Florentin Ipate. Correct Systems: Building a Business Process Solution. Springer, 1998. Michal Chytil. Automaty a gramatiky. SNTL Praha, 1984. Boris Beizer. Black-Box Testing, Techniques for Functional Testing of Software and Systems. John Wiley & Sons, Inc., New York, 1995. Literatura I Přı́klad Testovánı́ konečných automatů Formalizace testovánı́ automatů Radek Mařı́k ([email protected]) software pro archivaci či obnovenı́. instalace softwaru, mikropočı́tače průmyslových a domacı́ch zařı́zenı́, staršı́ hardware, řadiče zařı́zenı́, protokoly, objektově orientovaný software, software řı́zený pomocı́ menu, Aplikace [Bei95] February 27, 2008 February 27, 2008 36 / 36 35 / 36
Podobné dokumenty
Strukturované testování
Pokrytı́ řádek požaduje provedenı́ každé řádky kódu alespoň jednou.
Nejslabšı́ kritérium.
Tester může pokrýt všechny tři řádky kódu přı́padem
(a).
Pokrytı́ větvı́ znamená, že...
Syntaktick anal za roz i iteln ch jazyk
pitom bude odpovdat poadavkm kladen
m na formln model: pv
tiv automat.
Pokud vynechme v
stup (pro tuto chvli nepodstatn
- nem vliv na strukturu ani
na anal
zu i pijet), meme si v
...
Certifikovaný tester
Efektivní použití nástrojů: možné výhody a rizika (Z2) ....................................................... 67
6.2.1 Možné výhody a rizika nástroje pro podporu testování (pro všechny nástroje) (...
pdf - Český národní symfonický orchestr
Citibank Europe plc, company established and existing under the Irish law, registered seat at Dublin, North Wall Quay 1, Ireland, registered in the Register of Companies in the Republic of Ireland,...
– Technologicky orientované podnikání
2. Pilotní kurz distanční formou – v termínu 1. červen až 15. srpen 2005
Tato fáze výuky se sestává z následujících aktivit:
a) Studium aktuální tématiky (včetně EU) – viz níže Příloha č. 1 (Aktuál...
to get the file
Technické řešenı́ je provedeno jako integrálnı́ kompaktnı́ zařı́zenı́ vybavené 2 plně
motorizovanými polohovacı́mi osami pro polohovánı́ vzorku a 1 plně motorizovanou indentačnı́ osou. N...