La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "1 Contribution à la génération automatique de tests pour les systèmes réactifs Thierry Jéron Habilitation à diriger des recherches 16 mars 2004."— Transcription de la présentation:

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

2 2 Contexte: les systèmes réactifs 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 P1P1 P2P2 Env

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

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

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

6 6 Historique Vérification à la volée Non bornitude de files de CFSM Génération de tests symbolique (IOSTS) (E. Zinovieva, 00->) Model checking Gen. test (FSM) Test et contrôle (V.Tschaen, 01->) ADPAARPAMPAVerTeCS Vérification Test de conformité & Observation Repr. 3D LTS Représentation model-checking de syst. infinis (YM Quemener,93-96) Observation répartie Génération de tests à la volée (IOLTS) (P. Morel, 96-00) Test asynchrone & réparti Test et jeux

7 7 Plan 1.Problématique du test 2.Génération de tests à la volée 3.Test asynchrone et réparti 4.Génération de tests symbolique 5.Bilan et perspectives

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

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

10 10 2. Génération de tests à la volée [CAV96-99,SCP97-00,IWTCS96,Cfip97, IDPT02,TSI03, …] Motivations: Éviter lexplosion 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

11 11 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 ?A ?B ! Z ! Y ! X S non-déterminisme observable : Les entrées ne déterminent pas les sorties non-contrôlabilité non-déterminisme (au sens des automates) incertitude supprimé par déterminisation ?B ! X

12 12 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 ?A ?B ! Z ! Y ! X S Comportements visibles de référence. Base pour définir la conformité ?A ?B !Z !Y !X ?B Vis(S)=det( (S)) (S) Automate de suspension

13 13 I 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, limplémentation nest autorisé à produire que les sorties et blocages spécifiées ?A ?B !Z !Y !X ?B ! ? Sorties, blocages non spécifiées ¬ (I ioco S) Entrées non spécifiées I ioco S Spécification partielle vis(S)

14 14 Cas de test et exécutions !A ?Y ?X TC ? Z ! B Inconc Fail Pass ? otherwise ?A ?B !Z !Y !X ?B Vis(S) 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 ?A ?B !Z !Y !X ?B !X I Verdict: Fail, Pass, Inconc

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

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

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

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

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

20 20 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)

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

22 22 4. Génération de tests symboliques [RBJ-IFM00, CJRZ-Tacas01, CJRZ-Esmart01,CJRZ-Esec01] Motivations: Éviter lexplosion 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 linterprétation abstraite [Cousot77] Exécution : Instanciation des entrées résolution de contraintes

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

24 24 Sémantique [[.]]: IOSTS IOLTS M [[ M ]] (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) in?(1) (2,s1,3,1)(2,s1,3,0) (2,s1,3,2)(2,s1,3,3) (2,s1,2,1)(2,s1,2,0) (2,s1,2,2)(2,s1,2,3) in?(2) s0 k>0 v1=0 s1 v o 0 (l=s0) in?(x) v1:= v o + p; (l=s1) Condition initiale Garde Action(param.com.) Affectation

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

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

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

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

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

30 30 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 IUT C++/Java C++/ Java Test case Test purposeSpecification Génération de test Compilation dotty Omega verdict NBAC Test case

31 31 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 lapproximation Cadre formel : garantie de propriétés des tests : correction, « exhaustivité » Outillage (STG) : génération et exécution Publications

32 32 5. Bilan Contribution originale à lalgorithmique 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

33 33 Travaux connexes Modèles voisins : FSM, EFSM (voir e.g. [Lee-Yannakakis 96]) contrôle et données Autres techniques à base dobjectifs : 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]

34 34 Défis de la génération automatique de tests pour les systèmes réactifs Accroître lusage industriel des méthodes formelles pour le test : qualité coûts Lautomatisation du test est un levier pour une meilleure introduction des méthodes formelles dans lindustrie. Passage à léchelle de lautomatisation traiter efficacement des systèmes plus complexes en taille et expressivité Méthodologies dutilisation et de combinaison des méthodes formelles

35 35 Perspectives Accroître lexpressivité 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

36 36 Quelques travaux en cours Vérification et test de propriétés de sûreté Tester violation dune 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 T ester la préservation de propriétés de sûreté en présence daléas Contrôle et test Contrôler la conformité dune implémentation [JMRT-MSR03-CDC04-IJPR04]

37 37 Fin

38 Systèmes infinis: détection, représentation et model-checking 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] !a !b ?c ?a !c ?b

39 39 Vérification à la volée Motivation: éviter lexplosion 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]

40 40 Observation de traces dexécutions réparties [JJJR-ICDCS94]

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

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

43 43 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 coord(s)

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

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

46 46 Relation de conformité I ioco S STraces(S), Out( (I) after ) Out( (S) after ) ?A i ?B ! Z ! X i ?A I2 conforme choix dimplémentation spec. partielle ?A ?B ! Z ! Y i ! X i (I1) non-conforme livelock sortie non-spécifiée i ?A ?B ! Z ! Y i ! X i S (S)

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

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

49 49 Principes de la génération TP ! ? CTG S=[[Spec]] (S) TC Spec det( (S)) det( (S))xTP Spec TP ! ? S=[[Spec]] CTG (Sx i TP) TC det( (Sx i TP)) Sx i TP Spec TestP + var, loc SP=[[Spec x s TestP]] CTG (SP) TC det( (SP)) Spec x s TestP TGV Agedis

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

51 51 Extension aux propriétés de sûreté [Testcom04] Propriété accessibilité sur STraces sûreté sur STraces Objectif TP Traces Acc (TP )Obs ¬ Traces Vl (Obs ¬ ) Vérification S STraces(S) Traces Acc (TP ) S STraces(S) Traces Vl (TP ¬ )= Génération det( (S)) x TP reach(init) coreach(Acc) Pass, Inconc, Fail det( (S)). ! x TP ¬ reach(init) coreach(Vl) Violate, Inconc, Fail S sûreté, tester la violation de par I, I I ioco S pertinente(S), S I

52 52 Test et contrôle Contrôle : S construire C tq S C 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]

53 53 Panorama des techniques existantes Modèle Spec S + Hyp FSM [Lee-Yan] s - i/o-> s (IO)LTS [Tretmans] s-?i->s – -> s -!o-> s Spec. algébriques [Bernot -Gaudel] sort/op/axiom IUT inconnue I interface coonue hyp: modéle FSM I MdF (fini) sortie/transfert I (IO)LTSI Hyp unif, reg, etc Conformité/Modèle de fautes IUT sans faute/MdF (IUT traces S ) ioco STr(I) Str(S). ! STr(S) I Axiomes Cas de tests Séquences --> s –i/o->s + check(s) (IO)LTSInstance daxiome 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 correct exhaust. (TS infinie) correct exhaust /Hyp Extensions Ctrl + dataEFSMIOSTSSpec. alg + IOLTS

54 54 Shéma général de la génération de tests symboliques [[ TP ]] TP PS = S x s TP [[ S x s TP ]] = [[ S ]]x e [[ TP ]] S [[ S ]] PS = s PS ) s PS )]] = [[ PS ]] PS vis = det s PS ) CTG = select s ( PS vis ) Tr (Acc) [[det s ( PS ) ] = Tr (Acc) (det PS ]]) Tr[[select s ( PS vis ) ]] Tr(select [[ PS vis ]]) Tr P [[select s ( PS vis ) ]] = Tr P (select [[ PS vis ]]) Tr F [[select s ( PS vis ) ]] Tr F (select [[ PS vis ]]) s det s = subset s s select s xsxs xexe det = subset select IOSTS IOLTS [[. ]]

55 55 Déterminisation: heuristique l l2l1 G 1 a( ) A 1 G 2 a( ) A 2 G 1 b( ) A 1 G 2 c( ) A 2 l l2 l1 G 1 ¬ G 2 a( ) A 1 G 2¬ G 1 a( ) A 2 G 1 b( ) A 2 G 2 c( ) A 2 G 1 G 2 a( ) m a := l1,l2 l1 l2 l1 l2 G 1 A 1 ( m a ) b( ) A 1 A 1 ( m a ) G 2 A 2 ( m a ) c( ) A 2 A 2 ( m a )

56 56 Produit s0 s1 S G S (C,L S,V p S, S ) a( S ) (L S,V p S ) :=A S (C,L S,V p S, S ) G TP (C,L TP,V p TP,V o TP, TP ) a( TP ) (L TP,V p TP ) :=A TP (C,L TP,V p TP,V o TP, TP ) G S (C,L S,V p S, S ) ^ G TP (C,L TP,V p TP,V o TP, TP / S ) a( TP ) (L S, L TP,V p S,V p TP ) :=A S (C,L S,V p S, S ) A TP (C,L TP,V p TP,V o TP, TP / S ) tp0 tp1 TP s0,tp0 S1,tp1 S ^ TP V o TP = V p S

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

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

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

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

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

62 62 Approche 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

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

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


Télécharger ppt "1 Contribution à la génération automatique de tests pour les systèmes réactifs Thierry Jéron Habilitation à diriger des recherches 16 mars 2004."

Présentations similaires


Annonces Google