1 test des machines de mealy stavros tripakis laboratoire verimag master 2 recherche s&l «...
TRANSCRIPT
1
Test des Machines de Mealy
Stavros Tripakis
Laboratoire Verimag
Master 2 Recherche S&L« Méthodes de test »
2
Les machines à entrées/sorties synchrones (machines de Mealy)
Machine
entrées sorties
Fonctionnement:Entrées: e1 e2 e3 …
Sorties: s1 s2 s3 …
3
Un exemple de machine
s1
s2
b/1b/1
a/1
a/0
4
Objectif : test de conformité
Machine A
1
2
3
4
5
a/1
a/1
a/0 a/0
a/1
a/0
Machine B
Boite noire
Est-elle conforme à A ?
Spécification
Modèle
Implémentation
Se comporte-t-elle comme A ?
5
Possibilités et impossibilités
s1
b/1
a/0
Comment tester la conformité pour cette spécification ?
Conformité = Isomorphisme
6
Un exemple un peu plus compliqué …
s1
s2
b/1b/1
a/1
a/0
Spécification Séquence de test
a a b a b b
Observation attendue
? 0 1 1 1 1
Est-ce correct ?
7
Pas tout à fait …
s1
s2
b/1b/1
a/1
a/0
Spécification Séquence de test
a a b a b b
Observation attendue
? 0 1 1 1 1
t1
t2
a/0 a/1
b/1
Machine B
b/1
8
Plan du cours
• Rappel sur les machines de Mealy• Problèmes d’identification d’état:
– Séquences « homing » et « synchronizing »– Séquences « distinguishing »– Séquences « UIO »– Existence, construction, longueur, complexité
• Test de conformité
9
Machines de Mealy: formalisation et rappel de notions
• Ensemble d’états fini
• Déterministe et complète
M = (I, O, S, , )
10
Machines de Mealy: formalisation et rappel de notions
• Exemple :
• Table des transitions
• Notation
M = (I, O, S, , )
s1
s2
b/1b/1
a/1
a/0
11
Machines de Mealy: formalisation et rappel de notions
• Équivalence des états, séquences « separating »• Machines minimales• Algorithme de minimisation• Machines équivalentes• Machines isomorphes
• Machines fortement connexes
M = (I, O, S, , )
12
Plan du cours
• Rappel sur les machines de Mealy• Problèmes d’identification d’état:
– Séquences « homing » et « synchronizing »– Séquences « distinguishing »– Séquences « UIO »– Existence, construction, longueur, complexité
• Test de conformité
13
Problèmes d’identification d’état
• La machine est connue, son état est inconnu
• Plusieurs types de problèmes:– « homing » : identifier l’état final– « synchronizing » : mener vers un état donné– « distinguishing » : identifier l’état initial– « UIO » (« unique I/O ») : vérifier l’état initial
• Ca va servir pour le test de conformité
14
Exemple : séquences homing et synchronizing (1)
s1
s2
b/1b/1
a/1
a/0
« M1 »
La séquence « a » est homing.Elle est aussi synchronizing.
15
Exemple : séquences homing et synchronizing (2)
« M2 »
a/0
s1
s3b/1
b/0
a/1
s2
b/1
a/0
Homing : a b (d’autres ?)
Pas de synchronizing (pourquoi ?)
Cette machine estminimale (pourquoi ?)
16
Exemple : séquences homing et synchronizing (3)
s1
s2
a/1 a/1
s1
s2
b/1b/1
a/0
a/0
Pas de homing/synchronizing Homing/synchronizing : a
Ces machines ne sont pas minimales (pourquoi ?)
17
Séquences homing et synchronizing: des faits
• Toute séquence synchronizing est aussi une séquence homing…
• …mais pas l’inverse.• Machines non-minimales : peuvent avoir ou ne
pas avoir des séquences homing/synchronizing.• Toute machine minimale a une séquence
homing…• …mais elle peut ne pas avoir de synchronizing.
18
Comment trouver des séquences homing: le « successor tree »
(pour machines minimales)
« M2 »
a/0
s1
s3b/1
b/0
a/1
s2
b/1
a/0
(s1, s2, s3)
a
0 1(s1, s3) (s2)
b
1 0(s2, s3) (s1)
a
1 0(s2) (s1)
0(s3)
19
Existence des séquences homing(pour machines minimales)
• Toute machine minimale avec n états a une séquence homing de longueur 2)1( n
20
Longueur des séquences homing
• Il existe des machines qui nécessitent une séquence de longueur
• (exercice)
2
)1( nn
21
Comment trouver des séquences synchronizing (s’il en existe)
• Utiliser le « successor tree »
• Modifications:– Ignorer les sorties– Arrêter l’exploration quand on tombe sur une
boucle– Arrêter quand on trouve un nœud singleton:
séquence synchronizing trouvée !
22
Exemple: synchronizing
(s1, s2)
a
(s1)
b
(s1, s2)
s1
s2
b/1b/1
a/1
a/0
« M1 »
23
Exemple: pas de synchronizing
(s1, s2, s3)
a
(s1, s2, s3)
b
(s1, s2, s3)
« M2 »
a/0
s1
s3b/1
b/0
a/1
s2
b/1
a/0
24
Exercice
• Trouver si la machine a une synchronizing
0 1
A B, 0 D, 0
B A, 0 B, 0
C D, 1 A, 0
D D, 1 C, 0
étatsentrées
25
Longueur des séquences synchronizing
• Si une séquence synchronizing existe, alors il existe une de longueur
• Il existe des machines qui nécessitent une séquence de longueur
• (exercices)
2
)1( 2
nn
2)1( n
26
Plan du cours
• Rappel sur les machines de Mealy• Problèmes d’identification d’état:
– Séquences « homing » et « synchronizing »– Séquences « distinguishing »– Séquences « UIO »– Existence, construction, longueur, complexité
• Test de conformité
27
Exemple : une séquence distinguishing
s1
s2
b/1b/1
a/1
a/0
« M1 »
La séquence « a » est distinguishing:
• Si on observe « 0 », on était à s1
• Si on observe « 1 », on était à s2
Toute séquence distinguishing est aussi une séquence homing (pourquoi ?)
28
Exemple: pas de séquence distinguishing (machine non-minimale)
s1
s2
b/1b/1
a/0
a/0
Une machine non-minimale ne peut avoirde séquence distinguishing (pourquoi ?)
29
Exemple: pas de séquence distinguishing (machine minimale)
• Ca ne peut pas commencer par a,
• Ca ne peut pas commencer par b,
• M4 est minimale (pourquoi ?)« M4 »
a/0
s1
s2
b/0
a/0
b/0
s3
b/1
a/0
30
Comment trouver des séquences distinguishing (s’il en existe)
• Utiliser le « successor tree » pour homing• Modifications:
– Arrêter l’exploration quand on tombe sur une boucle
– Arrêter l’exploration quand on tombe sur un nœud avec deux mêmes états dans un block
– Arrêter quand on trouve un nœud avec que des singletons: séquence distinguishing trouvée !
31
Exemple : distinguishing
« M2 »
a/0
s1
s3b/1
b/0
a/1
s2
b/1
a/0
(s1, s2, s3)
a
0 1(s1, s3) (s2)
b
1 0(s2, s3) (s1)
a
1 0(s2) (s1)
0(s3)
32
Exemple : pas de distinguishing
(s1, s2, s3)
a
0(s1, s1, s2)
b
0 1(s3, s3) (s3)
« M4 »
a/0
s1
s2
b/0
a/0
b/0
s3
b/1
a/0
33
Des tests « adaptatifs »
s2
s6
b/0
a/1
a/0
« M5 »
s3
s5
a/1
s4
s1 b/0
b/0
a/0
b/0
a/1
b/0
a/0
b/0
M5 est minimale (pourquoi?)
M5 n’a pas de séquence distinguishing (pourquoi?)
S4S1 S3
a
b S5
a
a b
a
S6 b
a
S2
a
b
0 1
1
1
1
11
0
0
0
0
0
0
0
0
Un test adaptatif :il est distinguishing !
34
Tests adaptatifs : des faits
• Tout test non-adaptatif peut être vu comme adaptatif.
• Il existe des machines qui ont un distinguishing adaptatif mais pas de distinguishing non-adaptatif.
• La longueur des adaptatifs est inférieure (dans le pire cas polynomiale vs. exponentielle pour les non-adaptatifs).
• L’adaptation n’influence pas l’existence de séquences synchronizing (pourquoi ?)
35
Plan du cours
• Rappel sur les machines de Mealy• Problèmes d’identification d’état:
– Séquences « homing » et « synchronizing »– Séquences « distinguishing »– Séquences « UIO »– Existence, construction, longueur, complexité
• Test de conformité
36
Exemple : séquence UIO
s1
s2
b/1b/1
a/1
a/0
« M1 »
La séquence « a » est UIO pour s1:
• Si on observe « 0 », on était à s1
• Si on observe « 1 », on n’était pas à s1
S’il existe un test distinguishing alors il existeune séquence UIO pour tout état (pourquoi ?)
Une séquence UIO peut ne pas exister pourun ou plusieurs états (pourquoi ?)
37
Exemple : séquence UIO
s1
s2
b/1b/1
a/1
a/0
« M1 »
La séquence « a » est UIO pour s1:
• Si on observe « 0 », on était à s1
• Si on observe « 1 », on n’était pas à s1
L’adaptation influence-t-elle l’existencede séquence UIO ?
38
Exemple : séquence UIO
s1
s2
b/1b/1
a/1
a/0
« M1 »
La séquence « a » est UIO pour s1:
• Si on observe « 0 », on était à s1
• Si on observe « 1 », on n’était pas à s1
Exercice : proposer une méthode pour chercher des séquences UIO
39
Complexité
• Les algorithmes basés sur le « successor tree » sont chers : exponentiels.
• Peut-on faire mieux ?
40
Complexité : homing/synchronizing
• Les problèmes d’existence et construction sont polynomiaux.
• Idée : utiliser la preuve sur la longueur de homing pour n’explorer qu’un seul chemin dans le successor tree.
41
Complexité : homing/synchronizing
• Trouver les séquences les plus courtes est un problème difficile : NP-dur.
• Réduction du problème 3SAT : au tableau !
Est-ce que j’ai triché ?
42
Complexité : distinguishing
• Trouver une séquence non-adaptative (s’il y en a) est difficile : PSPACE-dur.– Réduction du problème « Intersection
d’Automates Finis ».
• Trouver des séquences adaptatifs est « facile » : polynomial.
43
Complexité : UIO
• Les problèmes suivants sont PSPACE-complets :– Est-ce qu’un état s de M a une séquence UIO ?– Est-ce que tout état de M a une séquence UIO ?– Y a-t-il des états de M qui possèdent une
séquence UIO ?
44
Plan du cours
• Rappel sur les machines de Mealy• Problèmes d’identification d’état:
– Séquences « homing » et « synchronizing »– Séquences « distinguishing »– Séquences « UIO »– Existence, construction, longueur, complexité
• Test de conformité
45
Objectif : test de conformité
Machine A
1
2
3
4
5
a/1
a/1
a/0 a/0
a/1
a/0
Machine B
Boite noire
B conforme à A?
Spécification
Modèle
Implémentation
46
Objectif : test de conformité
Machine A
1
2
3
4
5
a/1
a/1
a/0 a/0
a/1
a/0
Machine B
Boite noire
B équivalente à A ?
Spécification
Modèle
Implémentation
47
Hypothèses
• Le nombre d'états de B est k– pour commencer, k = nombre d'états de A
• A est minimale– si elle ne l’est pas, on peut toujours la
minimiser sans changer la spécification
• A est fortement connexe– sinon, on ne peut pas tout tester - pourquoi ?
48
Objectif : test de conformité
Machine A
1
2
3
4
5
a/1
a/1
a/0 a/0
a/1
a/0
Machine B
Boite noire
B isomorphe à A ?
Spécification
Modèle
Implémentation
49
Méthode• Deux phases :
– Mener B vers un état donné • Pour cela on va utiliser des séquences homing ou
synchronizing
– Parcourir toutes les transitions de B et vérifier qu’elles produisent les bonnes sorties
• Pour cela on va utiliser des séquences « checking »• Pour produire des séquences checking, on peut utiliser des
séquences distinguishing, UIO, ou d’autres
• Le test final est la concaténation de ces tests.
50
Première phase: mener B vers un état donné s
• Si A a une séquence synchronizing vers s, utiliser cette séquence.
• Si A n’a pas de séquence synchronizing :– utiliser une séquence homing pour aller vers un état
connu – utiliser une séquence de transfert pour aller vers s
(pourquoi c’est toujours possible ?)
• Séquence de transfert (s1,s2) : une séquence qui mène de l'état s1 à l'état s2.
51
Première phase : exemple 1
s1
s2
b/1b/1
a/1
a/0
Machine A Séquence synchronizingpour l'état s1 :
a
Et pour l'état s2 ?
52
Première phase : exemple 2
Pas de séquence synchronizingMachine A
« M2 »
a/0
s1
s3b/1
b/0
a/1
s2
b/1
a/0
Séquence homing : a b
s10 0s3
s31 1s2
s20 1s1
Etat finalSortieEtat initial
53
Première phase : exemple 2
Machine A
« M2 »
a/0
s1
s3b/1
b/0
a/1
s2
b/1
a/0
Selon l'état final, appliquer :
s1 s1
s1bs3
s1s2
Nouvel étatSéquence de transfert
Etat final
b b
Le test de la première phase est en général adaptatif
54
Séquences « checking »
• Étant donnés une machine A avec n états et un état s de A,
• Une séquence d’entrées x est une séquence checking pour (A, s) ssi :
• Pour toute machine B avec ≤ n états, si B n’est pas isomorphe à A, alors pour tout état s’ de B ),'(),( xsxs BA
55
Séquences checking : quelques faits
• On peut toujours construire une séquence checking pour une machine minimale– En utilisant des séquences « identifying »
– Problème : longueur peut être exponentielle
• S’il en existent, on peut aussi utiliser des tests distinguishing (adaptatifs ou pas)– Longueur de la séquence checking : polynomiale sur la
longueur du test distinguishing et la taille de A
56
Construction d’une séquence checking à partir d’une séquence
distinguishing (I)
• Objectif : vérifier que B a n états distincts• Supposons :
– x : une séquence distinguishing pour A– s1 : l'état initial de A (après la première phase)– ti = (si, x)
• Séquence (I) :
x (t1,s2)x (t2,s3) x (tn,s1)x
57
Exemple (I)
s1
s2
b/1b/1
a/1
a/0
Séquence distinguishing : aSpécification
t1 = (s1, a) = s1
t2 = (s2, a) = s1
(t1,s2) = b(t2,s1) = vide
Séquence (I) : a b a a
58
Construction d’une séquence checking à partir d’une séquence
distinguishing (II)
• Objectif : vérifier toute transition de B – Pour chaque transition
1. Mener la machine à l'état si
2. Appliquer l’entrée a et observer la sortie o
3. Vérifier que l'état destination est bien sj
– Pour ce faire, appliquer la séquence (II) :
sia / o s j
(t,si 1)x (ti 1,si)ax(t est l'état de départ, après la séquence précédente)
59
Exemple (II)
s1
s2
b/1b/1
a/1
a/0
Spécification Séquence distinguishing : a
t1 = (s1, a) = s1
t2 = (s2, a) = s1
(t1,s2) = b(t2,s1) = vide
Séquence (II) pour :
a b b a
s2b /1 s1
60
Et s’il n’y a que de tests distinguishing adaptatifs ?
S4S1 S3
a
b S5
a
a b
a
S6 b
a
S2
a
b
0 1
1
1
1
11
0
0
0
0
0
0
0
0
Pour chaque état si, définir uneséquence xi : le chemin de l’arbre
x1 = a a b a b ax6 = a b a
Les séquences (I) et (II) deviennent :
(t,si 1)x i 1 (ti 1,si)ax j
x1 (t1,s2)x2 (t2,s3) xn (tn,s1)x1
61
Longueur de la séquence checking
O((lt ld )n ld (2lt ld 1)m)
lt = longueur de séquence de transfert < n
ld = longueur de séquence distinguishing
62
Exercice
• Trouver un test de conformité pour la machine :
« M2 »
a/0
s1
s3b/1
b/0
a/1
s2
b/1
a/0
63
La vie plus facile : les machines avec « status » ou « reset »
• Status : dévoile l'état de la machine– Un « self-loop » à chaque état « si » de A avec une
entrée « status » qui donne une sortie « si ».
• Reset : amène la machine dans un état donné– Une transition de chaque état de A vers un état « s1 »
avec entrée « reset » (peu importe la sortie).
• Hypothèse : « status » et « reset » fonctionnent correctement dans la machine B (« reliable »).
64
Les machines avec « status »
• Pour construire une séquence checking :– Trouver un chemin qui parcourt toutes les transitions de
la machine A.– Appliquer l’entrée « status » entre chaque deux autres
entrées.
• Exemple :– Chemin (à partir de s1) : a b a b b– Checking : s a s b s a s b s b s– (entrée « s » implicite)
s1
s2
b/1b/1
a/1
a/0
65
Les machines avec « reset »• Pour construire une séquence checking :
– Trouver un « spanning tree » T– Pour chaque état :
• Appliquer « reset », puis le chemin de T qui mène vers cet etat• Vérifier l'état à l’aide d’une séquence distinguishing• (ça vérifie aussi les transitions de T)
– Vérifier les transitions restantes
• Exemple :– T : s1 -> s2– Pour s1 : r a– Pour s2 : r b a– Puis : r b b– (entrée « r » vers s1 implicite)
s1
s2
b/1b/1
a/1
a/0
66
La vie plus difficile : k = n + u(k = borne sur le nombre d'états de B)
• Le test devient beaucoup plus « cher » : – Si le nombre d'entrées est p, alors la longueur
du test est – Exemple :
O( pu)
Machine A (presque)
q1 q2 q3 qu
s x0 x1 x2 xu-1
xu/faute
La machine B est un « combination lock »
Machine B
67
Questions ?
68
Conclusions
• Modèle : machines de Mealy– Simple, bon pour les circuits– Entrées/sorties « synchrones »
• Théorie bien développée :– Algorithmes, propriétés, complexité
69
Bibliographie
• Zvi Kohavi, « Switching and finite automata theory », 2nd edition, 1978, McGraw-Hill, Chapter 13.
• David Lee and Mihalis Yannakakis, « Principles and methods of testing finite-state machines – A survey », Proceedings of the IEEE, vol.84, no.8, August 1996.
70
Pour aller plus loin• D’autres modèles :
– Machines non-déterministes– Machines avec entrées/sorties « asynchrones »– Machines étendues avec variables– Automates temporisés– Machines probabilistes– …
• D’autres relations de conformité• D’autres techniques de génération et sélection des tests
– Algorithmes randomisés – Couverture– …