1 / 37

Contribution à la génération automatique de tests pour les systèmes réactifs

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. P 2. P 1. Exemples: protocoles télécom, systèmes embarqués, systèmes contrôle/commande, etc.

adamdaniel
Télécharger la présentation

Contribution à la génération automatique de tests pour les systèmes réactifs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Contexte: les systèmes réactifs Env P2 P1 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

  3. br = b ?DT(d,br) !IND(d) !ACK(b) b:=1-b s br ≠ bit ?DT(d,br) !IND(d) !ACK(b) b:=1-b Spécification comportementale: exemple du protocole du bit alterné Env IND(data) RQ(data) CNF Receiver d:=0 b:=0 Transmitter 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

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

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

  6. 88 89 90 91 92 93 94 95 96 97 98 99 00 01 02 03 04 Représentation model-checking de syst. infinis (YM Quemener,93-96) Observation répartie Historique ADP AAR PAMPA VerTeCS 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) 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->)

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

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

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

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

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

  13. I !d S? ?A !Y !X !d ?B !d ?B !Z !d 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é à produireque les sorties et blocages spécifiées 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

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

  15. * !x * !z Accept ? !A !B Principes de la génération de tests 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 CTG Conflits de contrôlabilité ? !A TC TC

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

  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. 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 Génération à la volée Spec S D(S) Calcul à la volée TP Vis(S) CTG TC

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

  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. !a !b ?x !c !d !f ?z ?y !e ?a !x ?b ?d ?c !y !z 3. Test asynchrone et test réparti testeur 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

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

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

  24. (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 (2,s1,3,0) (2,s1,2,0) (2,s1,3,1) (2,s1,2,1) (2,s1,2,2) (2,s1,3,2) (2,s1,2,3) (2,s1,3,3) Sémantique [[.]]: IOSTS IOLTSM [[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 in?(2) in?(1)

  25. 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 op ops [[.]] = [[ops(M)]] ops(M) op[[M]]

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

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

  28. Sélection du graphe de test CTG Price >0 Price >0 Vis(PS) ?d paid:=0 Begin,s0 !d paid:=0 Begin,s0 Cancel? paid:=0 Cancel? !d ?d v ≥ Price Coin!(v) paid:=v Idle,s0 Idle,s0 Return Reject 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 Idle Reject Pay,s0 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 vb=COFFEE ∧ b=vb Deliver?(b) Delivery,s0 vb= COFFEE ∧ b=vb Empty!(b) Empty!(b) Begin Accept Begin Reject Inconc Pass

  29. Exécution: instanciation des constantes et résolution des gardes CTG Price >0 Implémentation I Price = 40 Begin,s0 ?d paid:=0 Résolution v ≥ Price !d Idle,s0 v ≥ Price Coin!(v) paid:=v 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 Deliver?(b) Delivery,s0 vb= COFFEE ∧ b=vb Empty!(b) Empty?(COFFEE) Pass Inconc Pass Inconc

  30. Outillage: STG Specification Test purpose 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 Génération de test NBAC dotty Test case Compilation IUT C++/Java C++/ Java Test case Omega verdict

  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 l’approximation Cadre formel : ⇒ garantiede propriétés des tests : correction, « exhaustivité » Outillage (STG) : génération et exécution Publications

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

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

  34. 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ûtsL’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éthodologiesd’utilisation et de combinaison des méthodes formelles

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

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

  37. Fin

More Related