ČVUT FEL, K Radek Mařík Testování konečných automatů 27. října / 52

Podobné dokumenty
CA CZ, s.r.o. May 21, Radek Mařík Testování konečných automatů May 21, / 36

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Testování a verifikace softwaru

v praze fakulta elektrotechnická katedra počítačové grafiky a interakce

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

5. Sekvenční logické obvody

Minimalizace KA - Úvod

Formální jazyky a gramatiky Teorie programovacích jazyků

Úvod do informatiky. Miroslav Kolařík

Naproti tomu gramatika je vlastně soupis pravidel, jak

Syntaxí řízený překlad

Struktura a architektura počítačů (BI-SAP) 3

Zjednodušení generativního systému redukcí rozlišení

Sekvenční logické obvody

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

3. Sekvenční logické obvody

Operační výzkum. Síťová analýza. Metoda CPM.

Základy maticového počtu Matice, determinant, definitnost

Teoretická informatika - Úkol č.1

AUTOMATY A GRAMATIKY

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

Základy teoretické informatiky Formální jazyky a automaty

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Aplikovaná numerická matematika - ANM

Matice. Je dána matice A R m,n, pak máme zobrazení A : R n R m.

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

TGH02 - teorie grafů, základní pojmy

TGH02 - teorie grafů, základní pojmy

Soustavy linea rnı ch rovnic

Automaty a gramatiky

Úvod do lineární algebry

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Fakulta informačních technologií. Teoretická informatika

Přijímací zkouška na navazující magisterské studium 2018

TGH02 - teorie grafů, základní pojmy

Lineární programování

Čísla značí použité pravidlo, šipka směr postupu Analýza shora. Analýza zdola A 2 B 3 B * C 2 C ( A ) 1 a A + B. A Derivace zleva:

NAIVNÍ TEORIE MNOŽIN, okruh č. 5

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

Výroková a predikátová logika - III

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

Metody síťové analýzy

Jednoznačné a nejednoznačné gramatiky

Vztah jazyků Chomskeho hierarchie a jazyků TS

Četba: Texty o lineární algebře (odkazy na webových stránkách přednášejícího).

Informační systémy 2008/2009. Radim Farana. Obsah. Nástroje business modelování. Business modelling, základní nástroje a metody business modelování.

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Četba: Texty o lineární algebře (odkazy na webových stránkách přednášejícího).

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Konečný automat. Jan Kybic.

Lineární algebra : Skalární součin a ortogonalita

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Učební texty k státní bakalářské zkoušce Matematika Diferenciální rovnice. študenti MFF 15. augusta 2008

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Konečný automat. Studium chování dynam. Systémů s diskrétním parametrem číslic. Počítae, nervové sys, jazyky...

ORIENTOVANÉ GRAFY, REPREZENTACE GRAFŮ

ALGEBRA. Téma 5: Vektorové prostory

Vývoj řízený testy Test Driven Development

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

VLASTNOSTI GRAFŮ. Vlastnosti grafů - kap. 3 TI 5 / 1

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

VLASTNOSTI GRAFŮ. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze. BI-GRA, LS 2010/2011, Lekce 5

Matematika B101MA1, B101MA2

Testování kombinačních obvodů Intuitivní zcitlivění cesty, D-algoritmus

Simulace číslicových obvodů (MI-SIM) zimní semestr 2010/2011

Vlastnosti regulárních jazyků

Grafové algoritmy. Programovací techniky

1 Linearní prostory nad komplexními čísly

Grafové algoritmy. Programovací techniky

Přijímací zkouška na navazující magisterské studium 2017

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Analýza Petriho sítí. Analýza Petriho sítí p.1/28

Obsah. October 2, Polymorfizmus. Typologie testování. Problém polymorfizmu. Vady/Anomálie. Vazební sekvence ČVUT FEL, K13132

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1]

Testování a spolehlivost. 3. Laboratoř Program Atalanta, BIST, testování sekvenčních obvodů

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

U Úvod do modelování a simulace systémů

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

TGH05 - aplikace DFS, průchod do šířky

Cvičení z Lineární algebry 1

10. Techniky formální verifikace a validace

Algoritmus pro hledání vlastních čísel kvaternionových matic

Četba: Texty o lineární algebře (odkazy na webových stránkách přednášejícího).

SEMESTRÁLNÍ PROJEKT Y38PRO

Cvičení ke kursu Vyčíslitelnost

Usuzování za neurčitosti

Tento dokument obsahuje zadání pro semestrální programy z PAA. Vypracování. vypracovanou úlohu podle níže uvedených zadání. To mimo jiné znamená, že

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Matice. a m1 a m2... a mn

Transkript:

Testování konečných automatů Radek Mařík ČVUT FEL, K13132 27. října 2016 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 1 / 52

Obsah 1 Konečný automat - základy Definice 2 Neformální přístup testování automatů Terminologie Postup Problémy 3 Formalizace testování automatů Definice Příklad Konstrukce charakterizační množiny Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 2 / 52

Konečný automat - základy Definice Konečné automaty v praxi [Bei95] výborný model pro testování aplikací řízených pomocí menu, software řízený pomocí menu: primární ovládání se provádí pomocí výběru z položek menu. široké použití v objektově orientovaném návrhu. Konečný automat abstraktní stroj, jehož počet stavů a vstupních symbolů je konečný a neměnný. skládá se ze stavů (vrcholy), přechodů (hrany), vstupů (označení hran) a výstupů (označení hran či uzlů). Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 4 / 52

Konečný automat - základy Definice Konečný automat [HI98] Necht Input je konečná abeceda. Konečný stavový automat nad Input obsahuje následující položky: 1 konečnou množinu Q prvků nazývanou stavy. 2 podmnožinu I množiny Q obsahující počáteční stavy. 3 podmnožinu T množinu Q obsahující konečné stavy. 4 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 F : Q Input PQ F(q, input) obsahuje možné stavy automatu, do kterých lze přejít ze stavu q po přijmutí symbolu input. PQ označuje množinu všech podmnožin Q (potenční množina množiny Q). Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 5 / 52

Konečný automat - základy Definice Konečný automat s výstupem [HI98] Input konečná abeceda. Konečný automat nad množinou Input obsahuje následující komponenty: 1 Konečná množina Q prvků nazývaných stavy. 2 Podmnožina I množiny Q obsahující počáteční stavy. 3 Podmnožina T množiny Q obsahující koncové stavy. 4 Množina Output možných výstupů. 5 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 G : Q Input Output pro každý stav a pro každý vstupní symbol určuje výstupní symbol. F a G mohou být parciální funkce. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 6 / 52

Konečný automat - základy Definice Příklady konečných automatů [HI98] Množina Input akce či příkazy uživatele zadaných na klávesnici, kliky či pohyby myše, přijmutí signálu ze senzoru. Množina stavů Q hodnoty jistých důležitých proměnných systému, mód chování systému, druh formuláře, který je viditelný na monitoru, zda jsou zařízení aktivní či ne. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 7 / 52

Konečný automat - základy Definice Kódování vstupů [Bei95] Vstupy Vstupní událost: rozlišitelná opakovatelná událost jako fixní sekvence aktivy vstupů. Kódování vstupních událostí: přiřazení jména či čísla. Vstupní symboly: množina vzájemně různých symbolů použitých pro kódování vstupních událostí. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 8 / 52

Konečný automat - základy Definice Kódování stavů [Bei95] Stavy Stav: stavy se zobrazují jako uzly diagramu stavového automatu. Kód stavu: přiřazení symbolů ke stavům. Okamžitý stav: stav, ve kterém se právě systém nachází. 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. Čítač stavů: hypotetické nebo aktuální místo paměti držicí kód okamžitého stavu. Počet stavů: počet vzájemně různých kódů stavu. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 9 / 52

Konečný automat - základy Definice Přechody a výstupy [Bei95] Přechody Přechod: odezva systému na vstupní událost, při které se může změnit jeho stav. State A input X / output Y State B Výstupy Vlastní přechod: při přechodu se stav nezmění; hrana vede stavu zpět do tohoto stavu. 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. Kódování výstupu: symbol výstupní události. Nulový výstup: hypotetická výstupní údalost, při které systém na svém výstupu neprovede žádnou akvititu. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 10 / 52

Konečný automat - základy Definice Stavový diagram [Bei95] 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í kĺıče, klávesy pohybu kursoru. Atributy hran (výstupní kódy): např. zobrazení jiného menu či otevření dalšího okna. Model vesmírné lodi Enterprise tři nastavení impulsního motoru: tah vpřed(d), neutrál(n), a zpětný tah(r). tři možné stavy pohybu: pohyb dopředu(f), zastavena(s), a pohyb vzad(b). kombinace vytvoří devět stavů: DF, DS, DB, NF, NS, NB, RF, RS, a RB. možné vstupy: d > d, r > r, n > n, d > n, n > d, n > r, r > n. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 11 / 52

Konečný automat - základy Definice Stavový prostor Enterprise [Bei95] BACKWARD <> STOPPED <> FORWARD r>r RB r>r RS r>r RF n>r r>n n>r r>n n>r r>n NB n>n NS n>n NF n>n d>n n>d d>n n>d d>n n>d d>d d>d DB DS DF d>d Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 12 / 52

Konečný automat - základy Definice Vlastnosti stavových diagramů [Bei95] Vlastnosti silně souvislý graf, stavové grafy rostou velmi rychle, typicky se uvažují všechny možné i nemožné vstupy v daném stavu - implementace systému nemusí být správná. pěkná symetrie je velmi řídký jev v praxi. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 13 / 52

Konečný automat - základy Definice Přechodové tabulky [Bei95] má pro každý stav jeden řádek a pro každý vstup jeden sloupec, ve skutečnosti jsou tabulky dvě s stejným tvarem: tabulka přechodů tabulka výstupů hodnotou pole v tabulce přechodů je příští stav, hodnotou pole v tabulce výstupů je výstupní kód pro daný přechod. hierarchické (vnořené) automaty jsou jedinou cestou, jak se vyhnout obrovským tabulkám (např. stavová schémata, angl. statechart, starchart, atd.) Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 14 / 52

Konečný automat - základy Definice Přechodová tabulka Enterprise [Bei95] Enterprise STATE r > r r > n n > n n > r n > d d > d d > n r > d d > r RB RB NB RS RB NS RF RS NF NB NB RB DB NS NS RS DS NF NF RF DF DB DS NB DS DF NS DF DF NF Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 15 / 52

Konečný automat - základy Definice Příklad - estimátor [HI98] edit_cust CUST OMERS help_cust close_help_cust HELP CUST cust close_cust open prices OFF close MAIN close_price PRICES edit_price close_order orders ORDERS edit_order Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 16 / 52

Neformální přístup testování automatů Terminologie Dosažitelnost stavů [Bei95] 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. 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. 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. 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. Reset: speciální vstupní akce způsobující přechod z jakéhokoliv stavu do počátečního stavu. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 18 / 52

Neformální přístup testování automatů Terminologie Rozdělení stavů [Bei95] 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). 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í. Počáteční stav pracovní množiny: stav pracovní množiny, který je možné považovat za výchozí stav. 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. Ú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. Okružní cesta stavu A: sekvence přechodů jdoucí ze stavu A do stavu B a zpět do A. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 19 / 52

Neformální přístup testování automatů Terminologie Ověřování modelu [Bei95] 1 úplnost a konzistence, tj. kontrola chybějících vstupů, nejednoznačnosti, rozpory, atd. 2 jednoznačné kódování vstupů, 3 minimální automaty, 4 modely, které nejsou silně souvislé, jsou typicky chybou modelu nebo chybou v návrhu. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 20 / 52

Neformální přístup testování automatů Postup Obecný návod k testování automatů [Bei95] 1 identifikuj vstupy. 2 definuj kódy vstupů. Vstupy, které netestujeme se nezahrnují. 3 identifikuj stavy. 4 definuj kódování stavů. 5 identifikuj výstupní akce. 6 definuj kódování výstupních akcí. 7 specifikuj tabulku přechodů a tabulku výstupů a zkontroluj ji - jeden z nejnamahavějších kroků návrhu, 8 navrhni testy, 9 proved testy, 10 pro každý vstup ověř jak přechod, tak i výstup. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 22 / 52

Neformální přístup testování automatů Postup Návrh testů [Bei95] Každý test začíná v počátečním stavu. 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 staví na předchozích jednodušších testech. Určíme vstupní kód pro každý přechod okružní cesty. Určíme výstupní kódy asociované s přechody okružní cesty. Ověříme kódování vstupů, kódování výstupů, stavy, každý přechod. Je každý koncový stav dosažitelný? Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 23 / 52

Skryté stavy Neformální přístup testování automatů Problémy Je systém v počátečním stavu? 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í? Má implementace skryté stavy? Při testování softwaru můžeme předpokládat věci, které nemusí obecně platit. např. že víme, ve kterém stavu se systém nachází. Typicky se nejedná o jeden či dva skryté stavy, ale stavový prostor se zdvojnásobuje či jinak násobí. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 25 / 52

Skryté stavy Neformální přístup testování automatů Problémy!!! a B3 a A2 a A b a C a c B b b A1 a a a B2 B1 c c A b c C Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 26 / 52

Neformální přístup testování automatů Problémy Testovatelnost [Bei95] 1 explicitní počítadlo stavů, 2 resetování do specifického stavu, 3 krokování, 4 trasování přechodů. 5 explicitní tabulka vstupního kódování, 6 explicitní tabulka výstupního kódování, 7 explicitní tabulka přechodové funkce. Omezení: velké stavové grafy, vnořené modely versus vnořené systémy, nedostatečná podpora. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 27 / 52

Formalizace testování automatů Definice Testování konečného automatu [HI98] založeno na izomorfismu konečných automatů, A = (Input, Q, F, q 0 ) A = (Input, Q, F, q 0 ) g : A A g : Q Q 1 g(q 0 ) = q 0 2 q Q, input Input, g(f(q, input)) = F (g(q), input) B A Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 29 / 52

Formalizace testování automatů Definice Konstrukce množiny testů [HI98, Cho78] Chowova W metoda Necht 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. Automat je minimální, pokud neobsahuje redundantní stavy. 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. 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 q 0. 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. sequence T = L (Input 1 {<>} Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 30 / 52

Formalizace testování automatů Definice Generování množiny testů [HI98, Cho78] O kolik je v implementaci více testů než ve specifikaci? (k) Z = Input k W Input k 1 W Input 1 W W 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 Konečná množina testů: T Z Pokrytí přechodů zajist uje, že všechny stavy a přechody specifikace jsou implementovány, množina Z zajišt 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. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 31 / 52

Formalizace testování automatů Příklad Jednoduchý příklad [HI98] a/x q0 b/y q1 a/y b/y a/x q3 b/x q2 a/y 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} Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 33 / 52

Formalizace testování automatů Příklad Testovací množina příkladu [HI98] T Z = = { <>, a, b, b ::a, b ::b, b ::a::a, b ::a::b, b ::a::b ::a, b ::a::b ::b} {a, b, a::a, a::b, b ::a, b ::b} = {a, b, a::a, a::b, b ::a, b ::b, a::a, a::b, a::a::a, a::a::b, a::b ::a, a::b ::b, b ::a, b ::b, b ::a::a, b ::a::b, b ::b ::a, 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 ::b ::a, b ::b ::b, b ::b ::a::a, b ::b ::a::b, b ::b ::b ::a, b ::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 ::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::b ::a::a, b ::a::b ::a::b, b ::a::b ::a::a::a, b ::a::b ::a::a::b, b ::a::b ::a::b ::a, b ::a::b ::a::b ::b, b ::a::b ::b ::a, b ::a::b ::b ::b, b ::a::b ::b ::a::a, b ::a::b ::b ::a::b, b ::a::b ::b ::b ::a, b ::a::b ::b ::b ::b} =... simplification Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 34 / 52

Formalizace testování automatů Příklad Aplikace [Bei95] software řízený pomocí menu, objektově orientovaný software, protokoly, řadiče zařízení, starší hardware, mikropočítače průmyslových a domacích zařízení, instalace softwaru, software pro archivaci či obnovení. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 35 / 52

Mealyho automat Formalizace testování automatů [Mea55, Mat13] Konstrukce charakterizační množiny Definition 1 (Mealyho automat s konečným počtem stavů je ) 6-tice M(X, Y, Q, q 0, δ, λ): X je konečná množina vstupních symbolů (vstupní abeceda), Y je konečná množina výstupních symbolů (výstupní abeceda), Q je konečná množina stavů, q 0 Q je počáteční stav, D Q X je specifikační doména, δ : D Q je přechodová funkce, λ : D Y je výstupní funkce. Jestliže D = Q X, potom M je úplný Mealyho automat [SP10]. Řetězec α = x 1... x k, α I je definovaná vstupní sekvence pro stav q Q, jestliže existují q 1,..., q k+1, kde q 1 = q takové, že (q i, x i ) D a δ(q i, x i ) = q i+1 pro všechna 1 i k. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 37 / 52

Minimalita automatu Formalizace testování automatů [SP10, Mat13] Konstrukce charakterizační množiny Dán Mealyho automat M(X, Y, Q, q 0, δ, λ) s konečným počtem stavu. Rozšíření přechodové a výstupní funkce aplikovanou na vstupní symbol x na definované vstupní sekvence α, zahrnující prázdnou sekvenci ɛ: pro q Q, δ(q, ɛ) = q a λ(q, ɛ) = ɛ δ(q, αx) = δ(δ(q, α), x) λ(q, αx) = λ(δ(q, α), x) Ω(q) je množina všech definovaných vstupních sekvencí pro stav q Q. Dva stavy q, q Q jsou rozlišitelné, jestliže existuje γ Ω(q) Ω(q ) takové, že λ(q, γ) λ(q, γ). Pak říkáme, že γ rozlišuje stavy q a q. Dva stavy q 1, q 2 Q; q 1 q 2 jsou stavově ekvivalentní, jestliže po aplikaci jakékoliv vstupní sekvence vedou do stejných nebo ekvivalentních stavů. M je minimální, jestliže žádné jeho dva stavy nejsou ekvivalentní [Ner58, Gil60]. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 38 / 52

C-ekvivalence stavů Formalizace testování automatů [SP10, Mat13] Konstrukce charakterizační množiny Dán Mealyho automat M(X, Y, Q, q 0, δ, λ) s konečným počtem stavu. Necht je dána množina C Ω(q) Ω(q ). Stavy q 1, q 2 Q jsou C-ekvivalentní, jestliže λ(q, γ) λ(q, γ) pro všechny γ C. Dva automaty M 1 (X, Y, Q 1, q 1 0, δ 1, λ 1 ) a M 2 (X, Y, Q 2, q 2 0, δ 2, λ 2 ) jsou ekvivalentní, jestliže 1 pro každý stav q M 1 existuje q M 2 takový, že q a q jsou ekvivalentní a 2 pro každý stav q M 2 existuje q M 1 takový, že q a q jsou ekvivalentní. k-ekvivalence Necht M 1 (X, Y, Q 1, q 1 0, δ 1, λ 1 ) a M 2 (X, Y, Q 2, q 2 0, δ 2, λ 2 ) jsou dva automaty. Stavy q i Q 1 a q j Q 2 se považují za k-ekvivalentní, jestliže po aplikování jakékoliv vstupní sekvence délky k jsou produkovány identické výstupní sekvence. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 39 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Charakterizační množina W [SP10, Mat13] Necht Mealyho automat M(X, Y, Q, q 0, δ, O) s konečným počtem stavu je minimální a úplný. W je konečná množina vstupních sekvencí, která rozliší jakýkoliv pár stavů q i, q j Q. Každá vstupní sekvence γ W má konečnou délku. Pro každé dva stavy q i, q j Q množina W obsahuje (alespoň jednu) vstupní sekvenci γ takovou, že λ(q i, γ) λ(q j, γ) Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 40 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Příklad charakterizační množiny [HI98] Input = {a, b} W = {baaa, aa, aaa} λ(q 1, baaa) = 1101 λ(q 2, baaa) = 1100 λ(q 1, baaa) λ(q 2, baaa) = baaa rozlišuje stavy q 1 a q 2 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 41 / 52

Formalizace testování automatů Konstrukce charakterizační množiny k-ekvivalentní rozklad stavů Q [Mat13] k-ekvivalentní rozklad stavů Q označovaný jako P k je soubor n konečných množin Σ k,1, Σ k,2,..., Σ k,n takových Stavy v Σ k,i jsou k-ekvivalentní. n i=1σ k,i = Q Jestliže q l1 Σ k,j a q l2 Σ k,j pro i j, potom q l1 a q l2 jsou k-rozlišitelné. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 42 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Konstrukce W množiny [Mat13] Postup 1 Vytvoření sekvenci k-ekvivalentních rozklad stavů Q označenou jako P 1, P 2,..., P m, m > 0 2 Prohledání k-ekvivalentních rozkladů v opačném pořadí se současnou kontrukcí rozlišujících sekvencí pro každou dvojici stavů. Je garantována konvergence postupu. Po skončení postupu každá třída Σ K,j konečného rozkladu P K definuje třídu ekvivalentních stavů (typicky 1). Neformálně: nejprve se zjistí, co lze rozlišit v jednom kroku po té ve dvou krocích atd. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 43 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Konstrukce W množiny [Mat13] Tabulární reprezentace M. 0-ekvivalenční rozklad P 0 = {Σ 1 = {q 1, q 2, q 3, q 4, q 5 }} Současný stav Výstup Následující stav a b a b q 1 0 1 q 1 q 4 q 2 0 1 q 1 q 5 q 3 0 1 q 5 q 1 q 4 1 1 q 3 q 4 q 5 1 1 q 2 q 5 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 44 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Konstrukce 1-ekvivalenční rozklad P 1 [Mat13] 1-ekvivalenční rozklad P 1 = {Σ 1 = {q 1, q 2, q 3 }, Σ 2 = {q 4, q 5 }}. Σ Současný stav Výstup Následující stav a b a b 1 q 1 0 1 q 1 q 4 q 2 0 1 q 1 q 5 q 3 0 1 q 5 q 1 2 q 4 1 1 q 3 q 4 q 5 1 1 q 2 q 5 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 45 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Konstrukce 2-ekvivalenční rozklad: přepis P 1 [Mat13] Přepis P 1, stav q i je nahrazen q i,j, přičemž q i Σ j. Σ Současný stav Následující stav a b 1 q 1 q 1,1 q 4,2 q 2 q 1,1 q 5,2 q 3 q 5,2 q 1,1 2 q 4 q 3,1 q 4,2 q 5 q 2,1 q 5,2 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 46 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Konstrukce 2-ekvivalenční rozklad: konstrukce P 2 [Mat13] Konstrukce P 2. Rozdělení Σ 1,j podle skupin příštích stavů. Σ Současný stav Následující stav a b 1 q 1 q 1,1 q 4,3 q 2 q 1,1 q 5,3 2 q 3 q 5,3 q 1,1 3 q 4 q 3,2 q 4,3 q 5 q 2,1 q 5,3 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 47 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Konstrukce 3-ekvivalenční rozklad: konstrukce P 3 [Mat13] Konstrukce P 3. Rozdělení Σ 2,j podle skupin příštích stavů. Σ Současný stav Následující stav a b 1 q 1 q 1,1 q 4,3 q 2 q 1,1 q 5,4 2 q 3 q 5,4 q 1,1 3 q 4 q 3,2 q 4,3 4 q 5 q 2,1 q 5,4 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 48 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Konstrukce 4-ekvivalenční rozklad: konstrukce P 4 [Mat13] Konstrukce P 4. Rozdělení Σ 3,j podle skupin příštích stavů. Σ Současný stav Následující stav a b 1 q 1 q 1,1 q 4,4 2 q 2 q 1,1 q 5,5 3 q 3 q 5,5 q 1,1 4 q 4 q 3,3 q 4,4 5 q 5 q 2,2 q 5,5 Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 49 / 52

Formalizace testování automatů Konstrukce charakterizační množiny Nalezení rozlišujících sekvencí: příklad [Mat13] 1 Nalezněme rozlišující sekvenci stavů q 1 a q 2. 2 Inicializace rozlišující sekvence: z = ɛ. 3 Najdi tabulky P i a P i+1 takové, že (q 1, q 2 ) jsou ve stejné skupině v P i a v různých skupinách v P i+1 : dostaneme P 3 a P 4. 4 Nalezni vstupní symbol rozlišující q 1 a q 2 v tabulce P 3 Rozlišujícím symbolem je b. Prodluž rozlišující sekvenci: z := z.b = ɛ.b = b. 5 Nalezni příští stavy stavů q 1 a q 2 po aplikaci symbolu b dostaneme q 4 a q 5. 6 Najdi tabulky P i a P i+1 takové, že (q 4, q 5 ) jsou ve stejné skupině v P i a v různých skupinách v P i+1 : dostaneme P 2 a P 3. 7 (q 4, q 5 ) P 2, P 3 a z = ba 8 (q 3, q 2 ) P 1, P 2 a z = baa 9 (q 1, q 5 ) P 0, P 1 a z = baaa 10 Opakuj pro každý pár (q i, q j ): W = {a, aa, aaa, baaa} Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 50 / 52

Literatura I Formalizace testování automatů Konstrukce charakterizační množiny Boris Beizer. Black-Box Testing, Techniques for Functional Testing of Software and Systems. John Wiley & Sons, Inc., New York, 1995. T.S. Chow. Testing software design modeled by finite-state machines. IEEE Transactions on Software Engineering, SE-4(3):178 187, May 1978. Michal Chytil. Automaty a gramatiky. SNTL Praha, 1984. A. Gill. Characterizing experiments for finite-memory binary automata. IRE Transactions on Electronic Computers, EC-9(4):469 471, Dec 1960. Mike Holcombe and Florentin Ipate. Correct Systems: Building a Business Process Solution. Springer, 1998. Aditya P. Mathur. Foundations of software testing 2e, slides, 2013. George H. Mealy. A method for synthesizing sequential circuits. Bell System Technical Journal, The, 34(5):1045 1079, Sept 1955. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 51 / 52

Literatura II Formalizace testování automatů Konstrukce charakterizační množiny A. Nerode. Linear automaton transformations. Proc. Amer. Math. Soc., 9:541 544, 1958. A. Simao and A. Petrenko. Checking completeness of tests for finite state machines. IEEE Transactions on Computers, 59(8):1023 1032, Aug 2010. Radek Mařík (radek.marik@fel.cvut.cz) Testování konečných automatů 27. října 2016 52 / 52