700 likes | 906 Views
Master 2 Recherche S&L « Méthodes de test ». Test des Machines de Mealy. Stavros Tripakis Laboratoire Verimag. Machine. Les machines à entrées/sorties synchrones (machines de Mealy). sorties. entrées. Entrées: e1 e2 e3 …. Fonctionnement:. Sorties: s1 s2 s3 …. a/0. s 1. b/1. b/1.
E N D
Master 2 Recherche S&L« Méthodes de test » Test des Machines de Mealy Stavros Tripakis Laboratoire Verimag
Machine Les machines à entrées/sorties synchrones (machines de Mealy) sorties entrées Entrées: e1 e2 e3 … Fonctionnement: Sorties: s1 s2 s3 …
a/0 s1 b/1 b/1 a/1 s2 Un exemple de machine
a/1 1 2 a/0 a/0 a/1 5 3 a/0 Machine B 4 a/1 Machine A Objectif : test de conformité Spécification Implémentation Modèle Boite noire Est-elle conforme à A ? Se comporte-t-elle comme A ?
Possibilités et impossibilités a/0 s1 b/1 Comment tester la conformité pour cette spécification ? Conformité = Isomorphisme
Séquence de test a/0 a a b a b b s1 b/1 Observation attendue b/1 a/1 s2 ? 0 1 1 1 1 Un exemple un peu plus compliqué … Spécification Est-ce correct ?
Séquence de test a/0 a a b a b b s1 b/1 Observation attendue b/1 a/1 s2 ? 0 1 1 1 1 Pas tout à fait … Spécification Machine B b/1 t1 a/0 a/1 t2 b/1
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é
Machines de Mealy: formalisation et rappel de notions • Ensemble d’états fini • Déterministe et complète M = (I, O, S, , )
a/0 s1 b/1 b/1 a/1 s2 Machines de Mealy: formalisation et rappel de notions • Exemple : • Table des transitions • Notation M = (I, O, S, , )
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, , )
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é
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é
a/0 s1 b/1 b/1 a/1 s2 « M1 » Exemple : séquences homing et synchronizing (1) La séquence « a » est homing. Elle est aussi synchronizing.
a/0 s1 b/0 b/1 s3 s2 « M2 » b/1 a/0 a/1 Exemple : séquences homing et synchronizing (2) Cette machine est minimale (pourquoi ?) Homing : a b (d’autres ?) Pas de synchronizing (pourquoi ?)
a/0 s1 b/1 b/1 a/0 s2 Exemple : séquences homing et synchronizing (3) Pas de homing/synchronizing Homing/synchronizing : a s1 a/1 a/1 s2 Ces machines ne sont pas minimales (pourquoi ?)
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.
a/0 (s1, s2, s3) a s1 b b/0 b/1 s3 s2 « M2 » b/1 a a/0 a/1 1 0 0 (s2) (s3) (s1) 0 1 1 0 (s2, s3) (s1, s3) (s2) (s1) Comment trouver des séquences homing: le « successor tree »(pour machines minimales)
Existence des séquences homing(pour machines minimales) • Toute machine minimale avec n états a une séquence homing de longueur
Longueur des séquences homing • Il existe des machines qui nécessitent une séquence de longueur • (exercice)
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 !
a/0 s1 b/1 b/1 a/1 s2 « M1 » Exemple: synchronizing (s1, s2) a b (s1) (s1, s2)
a/0 s1 b/0 b/1 s3 s2 « M2 » b/1 a/0 a/1 Exemple: pas de synchronizing (s1, s2, s3) a b (s1, s2, s3) (s1, s2, s3)
Exercice entrées états • Trouver si la machine a une synchronizing
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)
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é
a/0 s1 b/1 b/1 a/1 s2 « M1 » Exemple : une séquence distinguishing • 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 ?)
a/0 s1 b/1 b/1 a/0 s2 Exemple: pas de séquence distinguishing (machine non-minimale) Une machine non-minimale ne peut avoir de séquence distinguishing (pourquoi ?)
a/0 s1 a/0 b/1 b/0 s2 s3 b/0 a/0 « M4 » 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 ?)
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 !
a/0 (s1, s2, s3) a s1 b b/0 b/1 s3 s2 « M2 » b/1 a a/0 a/1 1 0 0 (s2) (s3) (s1) 0 1 1 0 (s2, s3) (s1, s3) (s2) (s1) Exemple : distinguishing
a/0 (s1, s2, s3) s1 a b a/0 b/1 b/0 s2 s3 b/0 a/0 « M4 » 0 0 1 (s1, s1, s2) (s3, s3) (s3) Exemple : pas de distinguishing
a/1 s2 s3 a/0 a/0 a 0 1 b/0 b/0 a b s1 s4 1 0 b/0 b/0 b b/0 b/0 a/1 0 s6 s5 a 0 a/1 1 a a/0 1 0 b S6 « M5 » S5 b 0 0 a a 0 Un test adaptatif : il est distinguishing ! 1 1 0 S3 S2 S1 S4 Des tests « adaptatifs » M5 est minimale (pourquoi?) M5 n’a pas de séquence distinguishing (pourquoi?)
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 ?)
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é
a/0 s1 b/1 b/1 a/1 s2 « M1 » Exemple : séquence UIO • 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 existe une séquence UIO pour tout état (pourquoi ?) Une séquence UIO peut ne pas exister pour un ou plusieurs états (pourquoi ?)
a/0 s1 b/1 b/1 a/1 s2 « M1 » Exemple : séquence UIO • 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’existence de séquence UIO ?
a/0 s1 b/1 b/1 a/1 s2 « M1 » Exemple : séquence UIO • 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
Complexité • Les algorithmes basés sur le « successor tree » sont chers : exponentiels. • Peut-on faire mieux ?
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.
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é ?
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.
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 ?
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é
a/1 1 2 a/0 a/0 a/1 5 3 a/0 Machine B 4 a/1 Machine A Objectif : test de conformité Spécification Implémentation Modèle Boite noire B conforme à A?
a/1 1 2 a/0 a/0 a/1 5 3 a/0 Machine B 4 a/1 Machine A Objectif : test de conformité Spécification Implémentation Modèle Boite noire B équivalente à A ?
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 ?
a/1 1 2 a/0 a/0 a/1 5 3 a/0 Machine B 4 a/1 Machine A Objectif : test de conformité Spécification Implémentation Modèle Boite noire B isomorphe à A ?
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.
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.