T estovanı konecnych autom atu O bsah K onecne autom aty v praxi

Transkript

T estovanı konecnych autom atu O bsah K onecne autom aty v praxi
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í

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

Více

Syntaktick anal za roz i iteln ch jazyk

Syntaktick anal za roz i iteln ch jazyk p itom 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 p ijet), meme si v ...

Více

Certifikovaný tester

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

Více

pdf - Český národní symfonický orchestr

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

Více

– Technologicky orientované podnikání

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

Více

to get the file

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

Více