Thierry Jéron Habilitation à diriger des recherches 16 mars 2004

Slides:



Advertisements
Présentations similaires
Yassine Lakhnech Prof. UJF Verimag
Advertisements

Mais vous comprenez qu’il s’agit d’une « tromperie ».
Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Fabrice Lauri, François Charpillet, Daniel Szer
Licence pro MPCQ : Cours
Additions soustractions
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
11 Bienvenue Entrez le nom du groupe ou projet ici mardi, 17 novembre 2009.
Projet FIACRE 1 ACI Sécurité InformatiqueToulouse, novembre 2004 FIACRE Fiabilité des Assemblages de Composants Répartis Modèles et outils pour lanalyse.
Les numéros 70 –
Les numéros
Les identités remarquables
Le, la, les words Possessive Adjectives MINE!!. 2 My in french is mon, ma,mes... Le word/ begins with a vowel: Mon La word: Ma Les word: Mes.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
Ordonnancement des mouvements de deux robots
Alain Le Guennec Jean-Marc Jézéquel Action Triskell
1 7 Langues niveaux débutant à avancé. 2 Allemand.
SERABEC Simulation sauvetage aérien avec un Hercule C130. Départ de St-Honoré le 4 octobre Durée de vol 3 heures. Premier vol en Hercule pour les.
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
Méthodes symboliques pour la génération de tests de systèmes réactifs comportant des données Eléna Zinovieva Leroux novembre 2004 Membres du jury:
Maîtrise en technologie de l’information
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Application des algorithmes génétiques
le profil UML en temps réel MARTE
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
Olivier DERUELLE Erwan FOUYER Maxime JOUIN Rodolphe LOUE
Présentation générale
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
Le drapeau canadien comme symbole de fierté nationale : une question de valeurs partagées Jack Jedwab Association détudes canadiennes 28 novembre 2012.
Session 7 1 IST/VIH/SIDA.
Le Concours de Conaissance Francais I novembre 2012.
Si le Diaporama ne s'ouvre pas en plein écran Faites F5 sur votre clavier.
Titre : Implémentation des éléments finis sous Matlab
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
LES NOMBRES PREMIERS ET COMPOSÉS
VOC 1 CE2 Je sais utiliser des mots de la vie quotidienne.
Vuibert Systèmes dinformation et management des organisations 6 e édition R. Reix – B. Fallery – M. Kalika – F. Rowe Chapitre 7 : Les méthodes de conception.
Les chiffres & les nombres
1.Un rang de données multicolores 2. Deux permutations des n premiers entiers 3. b permutations des k premiers entiers 4. Choix de n points dans [0,1]
RACINES CARREES Définition Développer avec la distributivité Produit 1
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Chapitre 3 Syntaxe et sémantique.
Titre : Implémentation des éléments finis en Matlab
Partie II Sémantique.
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
Aire d’une figure par encadrement
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
Comment rendre une femme heureuse…
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
Les fondements constitutionnels
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Nom:____________ Prénom: ___________
LES PILES ET FILES.
Discussion autour du référentiel
Commission paritaire de suivi des opérations de reclassement repositionnement dans le cadre du droit d’option Statistiques novembre 2010.
Les Chiffres Prêts?
Initiation à la conception des systèmes d'informations
Transcription de la présentation:

Thierry Jéron Habilitation à diriger des recherches 16 mars 2004 Contribution à la génération automatique de tests pour les systèmes réactifs Thierry Jéron Habilitation à diriger des recherches 16 mars 2004

Contexte: les systèmes réactifs Env P1 P2 Exemples: protocoles télécom, systèmes embarqués, systèmes contrôle/commande, etc. Complexité, répartition croissante, criticité Nécessité de fiabilité / maîtrise des coûts  méthodes formelles

Spécification comportementale: exemple du protocole du bit alterné Env RQ(data) IND(data) CNF Receiver Transmitter d:=0 b:=0 s br = b ?DT(d,br) !IND(d) !ACK(b) b:=1-b br ≠ bit ACK(bit) s b:=0 ?RQ(d)/ !DT(d,b) br = b ?ACK(br) / !CNF b:=1-b DT(data,bit) br ≠ bit ?ACK(br) / !DT(d,b) w Processus concurrents, communication (interne-externe), structure de contrôle, données. Langages de spécification : SDL, Lotos, UML, etc

Sémantique : systèmes de transitions (LTS) Spécification comportementale Spec Système de transitions (LTS) S = [[Spec]] simulation exhaustive état: (localités, val(var), files) action état’: (localités, val(var), files) Explosion combinatoire, voire infinitude (données, files)

Vérification de modèle Hyp: Imp modélisable par I Vérification et test Propriété P (automate, logique) Vérification de modèle S ⊨ P ? Spécification Spec  S = [[Spec]] comportementale Test: Imp conforme à S ? I conf S ? Implémentation Imp Hyp: Imp modélisable par I

Génération de tests à la volée (IOLTS) Historique ADP AAR PAMPA VerTeCS 88 92 91 93 96 89 90 94 95 97 98 99 00 01 02 03 04 Représentation model-checking de syst. infinis (YM Quemener,93-96) Non bornitude de files de CFSM Vérification Vérification à la volée Model checking Repr. 3D LTS Génération de tests à la volée (IOLTS) (P. Morel, 96-00) Gen. test (FSM) Observation répartie Test asynchrone & réparti Test de conformité & Observation Génération de tests symbolique (IOSTS) (E. Zinovieva, 00->) Test et jeux Test et contrôle (V.Tschaen, 01->)

Plan Problématique du test Génération de tests à la volée Test asynchrone et réparti Génération de tests symbolique Bilan et perspectives

1. Problématique du test Test = analyse dynamique de programmes pour détecter des fautes par rapport à une spécification. ≠ vérification de modèle : exhaustivité impossible en pratique  Sélectionner les tests : à partir du code : test boîte blanche/structurel à partir de la spécification : test boîte noire Activité coûteuse et souvent artisanale Formaliser est incontournable pour  Améliorer la qualité des tests  Diminuer le coût du test

Test de conformité de systèmes réactifs Pb: tester qu’une implémentation I (boîte noire) est conforme à sa spécification S (supposée correcte). Critères de sélection Générateur de tests S? Spécification S S! I conf S ? S? contrôle Implémentation I Cas de test Verdict S! observation

2. Génération de tests à la volée [CAV96-99,SCP97-00,IWTCS96,Cfip97, IDPT02,TSI03, …] Motivations: Éviter l’explosion combinatoire Traiter des systèmes non déterministes Cadre théorique: Théorie du test des IOTS [Tretmans 95-96] Origines: LTS [DeNicola-Henessy84, Abramsky87, Philips87, Brinksma88] Contribution: Formalisation des objectifs de test Sélection de tests à la volée ← vérification à la volée

Le modèle: les IOLTS IOLTS (input/output LTS) : ~ IOTS [Tretmans96], IOA [Lynch88] sémantique de systèmes réactifs non-déterministes  spécifications, implémentations, tests, objectifs S ?A non-déterminisme observable : Les entrées ne déterminent pas les sorties  non-contrôlabilité ! X ! Y t ?B ?B non-déterminisme (au sens des automates)  incertitude supprimé par déterminisation ! X ! Z

Comportements visibles par le test Le test permet de contrôler les entrées et observer sorties et blocages (timers) distinguer les blocages spécifiés dans S des autres ⇒ calculer les blocages sur S !d Vis(S)=det(D(S)) D(S) Automate de suspension ?A ?B ! Z ! Y t ! X S ?A ?B !Z !Y !X !d Comportements visibles de référence.  Base pour définir la conformité

Relation de conformité Plusieurs choix possibles: inclusion, égalité de traces, de sorties, de refus, etc  ioco [Tretmans96] : après un comportement visible de la spécification, l’implémentation n’est autorisé à produire que les sorties et blocages spécifiées ?A ?B !Z !Y !X !d I S? Entrées non spécifiées I ioco S Spécification partielle Sorties, blocages non spécifiées ¬ (I ioco S) vis(S) S!d

Cas de test et exécutions ?B !Z !Y !X !d Vis(S) ?A ?B !Z !Y !X !d I !A ?Y ?X TC ?d ? Z ! B Inconc Fail Pass ? otherwise ∥ Verdict: Fail, Pass, Inconc Propriétés attendues des algorithmes de génération: Correction : I peut être rejetée par TC ⇒ ¬ (I ioco S) Exhaustivité: ¬ (I ioco S) ⇒ on peut générer TC qui peut rejeter I

Principes de la génération de tests !z * Accept !x S Objectif de test : automate complet TracesAccept(TP) Calcul des blocages !d D(S) Déterminisation TP Vis(S) Algorithme non-déterministe [Tretmans96] [Lestiennes-Gaudel02] Produit: intersection de comportement Vis(S)xTP Sélection + Mirroir + Ajout des verdicts X !A ? !B CTG Conflits de contrôlabilité ? !A TC TC

Étapes de la génération ?B !Z !Y !X Vis(S)) ?C Produit Vis(S)xTP Sélection Verdicts Mirroir CTG Conflits de contrôlabilité TC Init ?d !d ?C ?A !A !Y ?Y !Y Fail ?X !X Inconc ?d !d reach(Init) ∩ coreach(Accept) !Z !d ?B !d ?d ?B !B !z * Accept !x TP ?otherwise ?B !B ?C !Y !Z ?Z Accept Pass reach(Init)

Propriétés des tests générés Correction: possibilité de rejet  non conformité “Exhaustivité”: non-conformité  possibilité de rejet Tests arborescents ⇒ adaptés au non-déterminisme observable

Génération à la volée Spec S Calcul à la volée D(S) TP Vis(S) CTG TC Constat : S très grand ou infini |S| ≫ |TC| Idée: éviter de construire S  construction paresseuse de S, D(S), Vis(S), Vis(S)xTP,CTG pilotée par TP  utilisation d’une représentation implicite des IOLTS  algorithmes basés sur DFS Spec S D(S) Calcul à la volée TP Vis(S) CTG TC

Cas de test (bcg, aut, TTCN, ) Implémentation: TGV Expérimentations dans des domaines variés. Distribution: CADP, Agedis Transfert: ObjectGéode Specification Objectif de test bcg, IF UML SDL Lotos IF Object Géode Caesar open IF open Umlaut API de Simulation (primitives parcours de S) CADP lib TGV Cas de test (bcg, aut, TTCN, )

Résumé de la contribution Algorithmique de la génération de tests sur des modèles énumérés Fondée sur une théorie du test bien établie Implémentation efficace: génération à la volée (TGV) Largement publié Transfert industriel (Telelogic)

3. Test asynchrone et test réparti testeur ?a !x ?b ?d ?c !y !z !a ?x !b !d !c ?y ?z !e !f I Contributions : Inversion de la distorsion par estampillage [JJTV-FP99] Distribution de testeur + consensus [JJKV-FP98] Problèmes : Test asynchrone : distorsion ⇒ perte d’information Test réparti : coordination concurrence

4. Génération de tests symboliques [RBJ-IFM00, CJRZ-Tacas01, CJRZ-Esmart01,CJRZ-Esec01] Motivations: Éviter l’explosion combinatoire ← données énumérées “Programmes” de test génériques (non instanciés) Approche Modèle symbolique: IOSTS (~ autres modèles similaires)  Sémantique IOLTS ⇒ théorie du test identique Génération symbolique: S , TP ∈ IOSTS  TC ∈ IOSTS Sélection par utilisation de l’interprétation abstraite [Cousot77] Exécution : Instanciation des entrées ← résolution de contraintes

Modèle IOSTS TP S t condition Constante Initiale Q symbolique Variable Price >0 TP Variable propre/observée Begin p =paid Return!(p) b = vb Deliver!(b) t paid:=0 true paid < Price Return?(m) S0 Cancel? Cancel? Empty!(b) Return Idle Reject ¬(mb=COFFEE) Deliver!(mb) Localités val(l) v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) Delivery mb=COFFEE Deliver!(mb) Pay Choose?(b) vb:=b paid ≥ Price ∧ d=paid - Price Return!(d) paid:=Price Accept Cancel? paramètre de communication Choose

Sémantique [[.]]: IOSTS  IOLTS M  [[M]] Condition initiale Q k>0 ⌃ v1=0 s0 vo < k ⌃ x > 0 ⌃ (l=s0) in?(x) v1:= vo+ p; (l=s1) Garde Action(param.com.) Affectation s1 (s0,1,0,0) (s0,1,0,1) (s0,1,0,2) (s0,1,0,3) (s0,2,0,0) (s0,2,0,1) (s0,2,0,2) (s0,2,0,3) ⊨ Q in?(1) in?(2) (2,s1,2,1) (2,s1,2,0) (2,s1,2,2) (2,s1,2,3) (2,s1,3,1) (2,s1,3,0) (2,s1,3,2) (2,s1,3,3)

Génération symbolique Opérations syntaxiques dont la sémantique commute avec les opérations sur les IOLTS : Produit: xs Calcul des blocages: Ds Déterminisation: dets Vis(PS) = dets(Ds(S xsTP )) Traces([[ dets(Ds(S xsTP)) ]]) = Traces(det(D([[ S ]] xe [[ TP ]])) Sélection : reach, coreach non calculables de manière exacte ⇒ sur-approximations reacha et coreacha [[.]] [[M]] M ops op [[.]] ops(M) [[ops(M) ]] = op[[M]]

Conséquences de la sur-approximation reach(Q) ∩ coreach(Accept) [[Vis(PS) ]]  CTG Calcul exact ? ! Sur-approximation [[CTG]] ? ? Inconc reach(Q) Accept ?otherwise Fail

Exemple: calcul du produit S Price >0 Price >0 PS b=vb Deliver!(b) p =paid Return!(p) Begin Begin,s0 t paid:=0 Empty!(b) t paid:=0 Cancel? Return Idle Delivery Cancel? Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) Idle Reject Pay Choose?(b) vb:=b Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) paid:=Price paid ≥ Price ∧ d =paid - Price Return!(d) paid:=Price Cancel? Cancel? Choose Choose,s0 TP true Choose?(b) vb:=b Cancel? S0 ¬(b=COFFEE) ∧ b=vb Deliver!(b) paid < Price Return!(m) mb=COFFEE Deliver!(mb) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) ¬(mb=COFFEE) Deliver!(mb) Empty!(b) Reject Accept Begin Accept Begin Reject

Sélection du graphe de test CTG Price >0 Vis(PS) Price >0 !d paid:=0 Begin,s0 ?d paid:=0 Begin,s0 Cancel? paid:=0 Cancel? !d v ≥ Price Coin!(v) paid:=v ?d Idle,s0 Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v v > 0 Coin?(v) paid:=0+v ?otherwise v ≥ Price Coin!(v) paid:=v Pay,s0 paid < Price ∧ d = paid - Price Return!(d) Fail d =paid - Price Return?(d) paid:=Price Pay,s0 Idle Reject Cancel? paid ≥ Price ∧ d =paid - Price Return!(d) paid:=Price ?d Choose,s0 ?otherwise !d b=COFFEE Choose!(b) vb:=b Choose,s0 Choose?(b) vb:=b ¬(b=COFFEE) ∧ b=vb Deliver!(b) b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 Delivery,s0 vb=COFFEE ∧ b=vb Deliver?(b) vb= COFFEE ∧ b=vb Empty!(b) Empty!(b) Begin Accept Begin Reject Inconc Pass

Exécution: instanciation des constantes et résolution des gardes CTG Price >0 Implémentation I Price = 40 Begin,s0 ?d paid:=0 !d Résolution v ≥ Price v ≥ Price Coin!(v) paid:=v Idle,s0 Coin!(50) ?otherwise v ≥ Price Coin!(v) paid:=v Pay,s0 ?otherwise Return? (10) Fail d =paid - Price Return?(d) Fail ?d Choose!(COFFEE) Choose,s0 ?otherwise ?otherwise b=COFFEE Choose!(b) vb:=b Deliver?(COFFEE) vb= COFFEE ∧ b=vb Empty!(b) Delivery,s0 vb=COFFEE ∧ b=vb Deliver?(b) Empty?(COFFEE) Inconc Pass Pass Inconc

Outillage: STG Génération Opérations symboliques Analyse approchée par interprétation abstraite (NBAC) Exécution Compilation C++/Java Résolution de contraintes (Omega) Expérimentations : CEPS Distribution : prévue fin 2004 Specification Test purpose Génération de test NBAC dotty Test case Compilation C++/ Java Test case IUT C++/Java Omega verdict

Contributions à la génération de tests symbolique Originalité : Génération de « programmes » de test Traitement de systèmes non-déterministes Théorie indépendante de l’approximation Cadre formel : ⇒ garantie de propriétés des tests : correction, « exhaustivité » Outillage (STG) : génération et exécution Publications

5. Bilan Contribution originale à l’algorithmique de la génération de tests Techniques énumératives à la volée Techniques symboliques Non déterminisme Asynchronisme et répartition Cadre formel  propriétés des tests Outillage et expérimentations Passage à l’échelle

Travaux connexes Modèles voisins : FSM, EFSM (voir e.g. [Lee-Yannakakis 96])  contrôle et données Autres techniques à base d’objectifs : MSC [Grabowski et al 93] Utilisation de model-checkers (e.g. [Engels et al-97, Hong-Lee et al. 01])  limités dans le traitement du non-déterminisme Autres techniques symboliques : Simulation symbolique + résolution de contraintes (pb de chemins) Smile [Eertink94] TVeda [Clatin et al. 95], Agatha [Lugato et al. 02], Gatel [Marre], BZ-TT [Legeard et al] + spec algébriques [Gaudel-James99, Lestiennes-Gaudel02], Abstractions: EFSM [Petrenko et al 99-04]

Défis de la génération automatique de tests pour les systèmes réactifs Accroître l’usage industriel des méthodes formelles pour le test : ↗ qualité ↘ coûts L’automatisation du test est un levier pour une meilleure introduction des méthodes formelles dans l’industrie.  Passage à l’échelle de l’automatisation traiter efficacement des systèmes plus complexes en taille et expressivité  Méthodologies d’utilisation et de combinaison des méthodes formelles

Perspectives Accroître l’expressivité des modèles : contrôle, données, concurrence, communication, temps Améliorer les critères de sélection : objectifs, couverture, hypothèses de sélection Combiner les techniques pour la génération de tests : model-checking, preuve, analyse statique, interprétation abstraite, résolution de contraintes, ordres partiels, Combiner les méthodes de validation dans le processus de développement : Vérifications statiques, contrôle, test

Quelques travaux en cours Vérification et test de propriétés de sûreté Tester violation d’une propriété de sûreté valide sur la spécification [RMTJJ-Testcom04] Couverture en model-checking et génération de test [Hoskote et al. 99, Chockler et al. 01] Propriétés couvrantes  tests couvrants Test de robustesse Tester la préservation de propriétés de sûreté en présence d’aléas Contrôle et test Contrôler la conformité d’une implémentation [JMRT-MSR03-CDC04-IJPR04]

Fin

Systèmes infinis: détection, représentation et model-checking !b ?a !c ?b Non-bornitude Indécidable [BZ81] Décidable ds sous-classes [e.g. Fin82] Détection par CS sur files (CNS pour ss-classe + générale) Représentation du système infini par grammaire de graphes Model-checking de CTL sur grammaire de graphe [J-Stacs91, JJ-TCS93, QJ-Segragra95, QJ-FortePSTV96]

Vérification à la volée Motivation: éviter l’explosion combinatoire Spec  S  invalider P en construisant S partiellement par DFS + remplacement [Holzmann] Non-bornitude Model-checking de LTL(séq. finies) Bisimulation [FM-CAV91] [JJ-CAV89,JJ-CAV91, FJJM-FMSD93]

Observation de traces d’exécutions réparties [JJJR-ICDCS94]

Test asynchrone [JJTV-FP99] !x !y S∥F ?a !x !y S∥ST∥F ?a !x(1) !y(0) Testeur ST-1 F I ST !a ?x(1) ?y(0) TC(S∥ST∥F) ?otherw Fail ¬(I ioco S) ¬(I∥ST∥F ioco S||ST|| F) ?y ?otherw !a ?x TC(S) Fail ?a !y I∥F ioco S∥F ?a !y(1) ?a !y

Distribution de test pour le test réparti [JJKV-FP98] consensus distribué TC 1 3 2 !A ?C ?B Comm. asynchrone Pb choix non-local T1 T2 IUT TC1 TC2 1 1’ 1’’’ 2’ !A !vote(B) T2!B T2!A 1’’ 3 ?elu(B) ?elu(C) 2’’ ?B 1 !vote(C) T1?B T2?A 2 1’ ?elu(B) ?elu(C) ?C 1’’ 3 coordination T3 Approche par modèle de la concurrence [Jard02]

Vérification visuelle: dessin 3D de graphes d’états [J-GD94,J-Cfip94] Représentation des informations sémantiques processus actif concurrence Propriété s s’  coord(s) coord(s’)

Travaux en cours Couverture en model-checking / test pour S ⊨ y, s couvert si mutant(S,s) ⊭ y couverture structurelle ↔ MdF sur FSM couverture de dépliage ↔ MdF sur Traces, ioco S ⊨ y, s couvert pour y, q ssi Ssq¬q ⊭ y Test de robustesse Test de programmes à virgules flottantes

Systèmes réactifs et répartis Exemples: protocoles, systèmes embarqués, etc. Env communication synchrone/asynchrone P1 P2

Relation de conformité I ioco S ≜ ∀ s ∈ STraces(S), Out(D(I) after s) ⊆ Out(D(S) after s) ?A ?B ! Z ! Y i ! X S D(S) !d ?A ?B ! Z ! Y i ! X D(I1) non-conforme livelock sortie non-spécifiée ?A i ?B ! Z ! X I2 conforme choix d’implémentation spec. partielle

Exemple de génération * Comportements visibles Calcul des blocages CTG TC ?A ?B !Z !Y i !X det(D(S)) ?B ?A !Y !X !Z !d Accept det(D(S))xTP S ?A ?B !Z !Y !X !d ?d !B !A ?Y ?X !B ?Z ?d Pass Inconc D(S) Fail ?other !d !d !z * Accept !x TP Comportements visibles STraces(S)=Traces(D(S)) Calcul des blocages Intersection de comportements acceptés STraces(S)  TracesAccept(TP) Objectif de test Traces(TP)=(Sd)* TracesAccept(TP) Sélection: pb de vérification reach(Init)  coreach(Accept) Inversion entrées/sorties Complétion  Fail Conflits de controlabilité

Principe de la génération de tests à la volée ?B !Z !Y i !X TC/CTG det(D(S)) det(D(S))xTP S ?A ?B !Z !Y !X !d D(S) ?B ?A !Y !X !Z !d Accept Inconc Fail !A ?Y ?X !B ?Z ?d Pass ?other !z * Accept !x TP

Principes de la génération TP S! d ⋃ S? CTG S=[[Spec]] D(S) TC Spec det(D(S)) det(D(S))xTP Spec Spec TestP + var, loc S=[[Spec]] TP S! ⋃ S? ⋃ St Spec xsTestP SxiTP SP=[[Spec xsTestP]] D(SxiTP) D(SP) det(D(SxiTP)) det(D(SP)) CTG CTG TGV Agedis TC TC TGV

Extension aux objectifs de sûreté [RMTJJ-Testcom04] y propriété de sûreté sur Straces(S).S! Vérifier S ⊨ y Tester la violation de y par I Lien entre vérification et test I ioco S ⇔ ∀y ∈ p(S), S ⊨ y  I ⊨ y Génération de tests sur det(D(S)).S! x w¬y Verdicts des cas de tests: Violate  y violée Fail  non-conformité  j violée Inconc  not (reach(¬y ∧ ¬ ioco)) Vérification S ⊨ P Test not(I conf S) ? I ⊭ P ? P S I

Extension aux propriétés de sûreté [Testcom04] S ⊨ y sûreté , tester la violation de y par I, I ⊭ y I ioco S ⇔ ∀y ∈ pertinente(S), S ⊨ y  I ⊨ y Propriété j accessibilité sur STraces y sûreté sur STraces Objectif TPj  TracesAcc(TPj) Obs¬y TracesVl(Obs¬y) Vérification S ⊨ j STraces(S) ⋂TracesAcc(TPj)≠⌀ S ⊨ y STraces(S) ⋂TracesVl(TP¬y)=⌀ Génération det(D(S)) x TPj reach(init) ⋂ coreach(Acc) Pass, Inconc, Fail det(D(S)).Sd! x TP¬y reach(init) ⋂ coreach(Vl) Violate, Inconc, Fail

Test et contrôle Contrôle : S ⊭ y  construire C tq S ∥ C ⊨ y Similitude avec génération de tests (reach ⋂ coreach)  synthèse de contrôleur (accessibilité) dans TGV Contrôle pour de la conformité S et I connues, assurer I ioco S par contrôle Observation totale Observation partielle [JMRT-MSR03-CDC04-IJPR04]

Panorama des techniques existantes Modèle Spec S + Hyp FSM [Lee-Yan] s - i/o-> s’ (IO)LTS [Tretmans] s-?i->s’ –t -> s” -!o-> s”’ Spec. algébriques [Bernot -Gaudel] sort/op/axiom IUT inconnue I interface coonue hyp: ∃ modéle I ∈ MdF (fini) sortie/transfert I ∈ (IO)LTS I ⊨ Hyp unif, reg, etc Conformité/Modèle de fautes IUT sans faute/MdF (IUT ≈traces S ) ioco STr(I) ⋂ Str(S).S! ⊆ STr(S) I ⊨ Axiomes Cas de tests Séquences --> s –i/o->s’ + check(s’) Instance d’axiome ds I Génération TT, DS, UIO,W… opt: voyag. comm. Sélection (non-det, obj) sous-IOLTS de vis(S) Dépliage termes Propriétés Correct: rejet  ┐conf Exhaust: ┐conf  rejet correct exhaust / MdF “exhaust.” (TS infinie) exhaust /Hyp Extensions Ctrl + data EFSM IOSTS Spec. alg + IOLTS

Shéma général de la génération de tests symboliques IOSTS S [[S]] IOLTS [[ . ]] TP [[TP]] xs xe [[ . ]] PS = S xs TP [[S xs TP]] = [[S]]xe[[TP]] Ds D [[ . ]] PS D = Ds(PS) [[Ds(PS)]] = D [[PS ]] dets = subsets ◯ es det = subset ◯ e [[ . ]] PSvis = dets(PS D ) Tr(Acc)[[dets(PS D) ] = Tr(Acc)(det[[PS D]]) select selects Tr[[selects(PSvis) ]] ⊇ Tr(select [[PSvis]]) TrP[[selects(PSvis) ]] = TrP(select [[PSvis]]) TrF[[selects(PSvis) ]] ⊇ TrF(select [[PSvis]]) [[ . ]] CTG = selects(PSvis)

Déterminisation: heuristique G1∧ ¬G2 a(p) A1 l G2∧¬G1 a(p) A2 l G1 a(p) A1 G2 a(p) A2 G1∧ G2 a(p) ma :=p l1 l2 l1 l2 G’1 b(r) A’2 G’2 c(l) A’2 G’1 b(r) A’1 G’2 c(l) A’2 l1,l2 G’1◯ A1(p/ ma) b(r) A’1◯ A1(p/ ma) G’2◯ A2(p/ ma) c(l) A’2◯ A2(p/ ma) l’1 l’2 l’1 l’2

Produit QS QTP QS ^ QTP VoTP = VpS GS(C,LS,VpS,pS) a(pS) (LS,VpS) :=AS(C,LS,VpS,pS) s0 tp0 GTP(C,LTP,VpTP,VoTP,pTP) a(pTP) (LTP,VpTP) :=ATP(C,LTP,VpTP,VoTP,pTP) s1 tp1 QS ^ QTP s0,tp0 GS(C,LS,VpS,pS) ^ GTP(C,LTP,VpTP,VoTP,pTP/pS) a(pTP) (LS, LTP,VpS,VpTP) :=AS(C,LS,VpS,pS) ⋃ ATP(C,LTP,VpTP,VoTP,pTP/pS) S1,tp1

Produit S PS TP t t Price >0 Price >0 b=vb Deliver!(b) p =paid Return!(p) Begin Begin,s0 t paid:=0 Empty!(b) t paid:=0 Cancel? Return Idle Delivery Cancel? Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) Idle Reject Pay Choose?(b) vb:=b Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) Cancel? Cancel? Choose Choose,s0 TP true Choose?(b) vb:=b Cancel? S0 ¬(b=COFFEE) ∧ b=vb Deliver!(b) paid < Price Return!(m) mb=COFFEE Deliver!(mb) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) ¬(mb=COFFEE) Deliver!(mb) Empty!(b) Reject Accept Begin Accept Begin Reject

Blocages et e-clôture PS PSvis !d t !d !d !d !d !d !d Price >0 Begin,s0 !d paid:=0 Begin,s0 t paid:=0 Cancel? paid:=0 Cancel? !d Cancel? Return Reject !d Idle,s0 Idle,s0 Return Reject v > 0 Coin?(v) paid:=paid+v v > 0 Coin?(v) paid:=0+v v > 0 Coin?(v) paid:=paid+v paid < Price ∧ d = paid - Price Return!(d) paid < Price ∧ d = paid - Price Return!(d) false !d Idle Reject Pay,s0 Pay,s0 Idle Reject Cancel? paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) Cancel? !d Choose,s0 !d Choose,s0 false !d Choose?(b) vb:=b Choose?(b) vb:=b b=COFFEE ∧ b=vb Deliver!(b) ¬(b=COFFEE) ∧ b=vb Deliver!(b) ¬(b=COFFEE) ∧ b=vb Deliver!(b) Delivery,s0 Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) Empty!(b) Begin Accept Empty!(b) Begin Accept Begin Reject Begin Reject

Sélection: reach (approx.) + S?  Reject Price >0 PSvis Price >0 !d paid:=0 !d paid:=0 Cancel? paid:=0 Begin,s0 Begin,s0 v > 0 Coin?(v) paid:=v Cancel? !d !d Idle,s0 Return Reject Idle,s0 v > 0 Coin?(v) paid:=paid+v v > 0 Coin?(v) paid:=0+v v > 0 Coin?(v) paid:=v paid < Price ∧ d = paid - Price Return!(d) paid < Price ∧ d = paid - Price Return!(d) Pay,s0 Idle Reject Pay,s0 Idle Reject Cancel? paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) d d Choose,s0 Choose,s0 Choose?(b) vb:=b Choose?(b) vb:=b ¬(b=COFFEE) ∧ b=vb Deliver!(b) ¬(b=COFFEE) ∧ b=vb Deliver!(b) b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 Begin Accept Empty!(b) Begin Reject Empty!(b) Begin Accept Begin Reject

Sélection: coreach (approx.) Price >0 Price >0 !d paid:=0 !d paid:=0 Begin,s0 Begin,s0 v > 0 Coin?(v) paid:=v v > 0 ∧ v ≥ Price Coin?(v) paid:=v !d !d Idle,s0 v > 0 ∧ v ≥ Price Coin?(v) paid:=v Idle,s0 v > 0 Coin?(v) paid:=v paid < Price ∧ d = paid - Price Return!(d) Pay,s0 paid < Price ∧ r_v = paid - Price Return!(d) Idle Reject Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) paid ≥ Price ∧ d =paid - Price Return!(d) Idle Reject !d Choose,s0 d Choose,s0 Choose?(b) vb:=b b=COFFEE Choose?(b) vb:=b ¬( b=COFFEE) ∧ b=vb Deliver!(b) Delivery,s0 b=COFFEE ∧ b=vb Deliver!(b) ¬( b=COFFEE) ∧ b=vb Deliver!(b) b=COFFEE ∧ b=vb Deliver!(b) Delivery,s0 Empty!(b) Begin Accept Begin Accept Empty!(b) Begin Reject Begin Reject

Sélection: reach (approx.) + inversion i/o + fail Price >0 CTG Price >0 !d paid:=0 Begin,s0 ?d paid:=0 Begin,s0 v > 0 ∧ v ≥ Price Coin?(v) paid:=v !d !d v > 0 ∧ v ≥ Price Coin?(v) paid:=v Idle,s0 v ≥ Price Coin!(v) paid:=v Idle,s0 ?otherwise v ≥ Price Coin!(v) paid:=v Pay,s0 paid < Price ∧ d = paid - Price Return!(d) Pay,s0 paid ≥ Price ∧ d =paid - Price Return!(d) Fail d =paid - Price Return?(d) Idle Reject d Choose,s0 ?d Choose,s0 b=COFFEE Choose?(b) vb:=b b=COFFEE Choose!(b) vb:=b ¬( vb=COFFEE) ∧ b=vb Deliver!(b) vb=COFFEE ∧ b=vb Deliver!(b) b=COFFEE Deliver?(b) Delivery,s0 b= COFFEE Empty!(b) Delivery,s0 Begin Accept Begin Accept Begin Reject Empty!(b) Inconc

Approche Passage à l’échelle Méthodes formelles pour le test et la vérification Modèles et théories Algorithmique Outillage : prototype  transfert Expérimentations Enseignement/Formation Passage à l’échelle

Modèle IOSTS S TP t k >0 in ? (x) v1:=x v1 < 0 nok!() true condition Initiale Q Constante symbolique ~ variable k >0 s0 TP in ? (x) v1:=x Variable propre/observée v1 < 0 nok!() true s1 t0 v1 >= 0 t v2:=v1- k 0 ≤v2 ≤ 2 out!(z) alert!() v2=0 alert!() y = v2 out!(y) nok!() Action & paramètre de communication Reject Accept s2 Localité ~ variable énumérée

Résultat sur l’exemple k >0 k x=v1 x=k, alert? x=k+2 out(x-k) s0 in ? (x) v1:=x v1 < 0 nok!() y = v2 out!(y) s1 v1 ≥ 0 t v2:=v1- k v2=0 alert!() k >0 TC tc0 k ≤ x ≤ k+2 in ! (x) v1:=x s2 TP true ?otherwise Fail tc1 t0 y = v1 – k ∧ 0≤ y ≤ 2 out ? (y) v1=k alert ? () 0 ≤v2 ≤ 2 out!(z) alert!() Inconc Pass nok!() Reject Accept