37
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

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

Embed Size (px)

Citation preview

Page 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

1

Contribution à la génération automatique

de tests pour les systèmes réactifs

Thierry Jéron

Habilitation à diriger des recherches16 mars 2004

Page 2: 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

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

P1 P2

Env

Page 3: 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

3

Env

Spécification comportementale: exemple du protocole du bit alterné

Transmitter Receiver

RQ(data) CNFIND(data)

w

s

d:=0b:=0

?RQ(d)/!DT(d,b)

br ≠ bit?ACK(br) /

!DT(d,b)

br = b?ACK(br) /

!CNFb:=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

Page 4: 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

4

Sémantique : systèmes de transitions (LTS)

Spécification

comportementale

Spec

état: (localités, val(var), files)

état’: (localités, val(var), files)

action

Explosion combinatoire, voire infinitude (données, files)

Système de

transitions (LTS)

S = [[Spec]]simulation exhaustive

Page 5: 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

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

Page 6: 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

6

Historique

Vérification à la volée

Non bornitudede files de CFSM

Génération de testssymbolique (IOSTS)(E. Zinovieva, 00->)

Modelchecking

Gen.test

(FSM)

Test et contrôle(V.Tschaen, 01->)

88 9291 93 9689 90 94 95 97 98 99 00 01 02 03 04

ADP AAR PAMPA VerTeCS

Véri

fica

tion

Test

de c

onfo

rmit

é &

O

bse

rvati

on

Repr. 3DLTS

Représentationmodel-checkingde 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

Page 7: 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

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

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

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 artisanaleFormaliser est incontournable pour

Améliorer la qualité des tests Diminuer le coût du test

Page 9: 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

9

Test de conformité de systèmes réactifsPb: tester qu’une 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 testcontrôle

observation

Générateur de tests

Critères desélection

Page 10: 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

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

Page 11: 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

11

Le modèle: les IOLTSIOLTS (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)

incertitudesupprimé par déterminisation

?B

! X

Page 12: 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

12

Comportements visibles par le testLe 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 Comportementsvisibles de référence. Base pour définir la conformité

?A

?B

!Z

!Y!X

?B

Vis(S)=det((S))(S)Automate de suspension

Page 13: 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

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, l’implémentation n’est autorisé à produireque 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)

Page 14: 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

14

Cas de test et exécutions

!A

?Y?X

TC

? Z

! BInconc

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

Page 15: 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

15

Principes de la génération de tests

S

(S)Calcul des blocages !

Déterminisation

Produit: intersectionde comportement

Sélection + Mirroir + Ajout des verdicts

Conflits de contrôlabilité

!z

*

Accept

!x

*

Objectif de test :

automate complet

TracesAccept(TP)TP

CTG

TC

Vis(S)

Vis(S)xTP

TC

Algorithme non-déterministe

[Tretmans96][Lestiennes-Gaudel02]

!A ?

!B!A?

X

Page 16: 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

16

Étapes de la génération

AcceptPass reach(Init)

Inconc

!z

*

Accept

!x

*TP

?B

?A

?B

!Y

!X

!Z

SélectionVerdictsMirroir

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

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

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

Page 18: 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

18

Génération à la voléeConstat : 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 d’une représentation

implicite des IOLTS

algorithmes basés sur DFS

Cal

cul à

la v

olée

TP

CTG

S

(S)

TC

Spec

Vis(S)

Page 19: 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

19

Implémentation: TGV Expérimentations

dans des domaines

variés.

Distribution: CADP,

Agedis

Transfert:

ObjectGéode

Objectifde test bcg, IF

API de Simulation(primitives parcours de S)

UmlautObjectGéode

Caesar

open

IFopen

SpecificationUML SDL Lotos IF

TGV CA

DP lib

Cas de test (bcg, aut, TTCN, )

Page 20: 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

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)

Page 21: 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

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 d’information Test réparti :

coordination concurrence

Contributions : Inversion de la distorsion

par estampillage [JJTV-FP99]

Distribution de testeur+ consensus [JJKV-FP98]

Page 22: 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

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 ∈ IOSTSSélection par utilisation de l’interprétation abstraite [Cousot77]

Exécution : Instanciation des entrées ← résolution de contraintes

Page 23: 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

23

Modèle IOSTS

Begin

Idle

Pay

Choose

Price >0

Return

Delivery

paid:=0

v > 0Coin?(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?

Cancel?

Choose?(b)vb:=b

b = vbDeliver!(b)

Variable propre/observée

Constantesymbolique

paramètrede communication

Localitésval(l)

S TP

S0

Accept

mb=COFFEEDeliver!(mb)

Reject

paid < Price

Return?(m)

true

conditionInitiale

Empty!(b)

¬(mb=COFFEE)

Deliver!(mb)

Cancel?

Page 24: 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

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

vo < k ⌃ x > 0 ⌃ (l=s0)in?(x) v1:= vo+ p; (l=s1)

Condition initiale

GardeAction(param.com.)Affectation

Page 25: 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

25

Opérations syntaxiques dont la sémantique commute avec les opérations sur les IOLTS :

Produit: xs

Calcul des blocages: s

Déterminisation: dets

Vis(PS) = dets(s(S xsTP ))Traces([[ dets(s(S xsTP)) ]]) = Traces(det(([[ S ]] xe [[ TP ]]))

Sélection : reach, coreach non calculables de manière exacte⇒ sur-approximations reach et coreach

Génération symbolique

M

ops(M)

[[M]]

[[ops(M) ]]

[[.]]

[[.]]

opsop

op[[M]]=

Page 26: 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

26

Conséquences de la sur-approximation

reach(∩

coreach(Accept)

Accept

reach()

?otherwise

Inconc

[[Vis(PS) ]] CTG

Fail

Sur-approximation[[CTG]]

Calcul exact ?

!

?

?

Page 27: 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

27

Exemple: calcul du produit Begin

Idle

Pay

Choose

Price >0

Return Delivery

paid:=0

v > 0Coin?(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?

Cancel?

Choose?(b)vb:=b

b=vbDeliver!(b)

S

TPS0

Accept

mb=COFFEEDeliver!(mb)

Reject

paid < PriceReturn!(m)

true

¬(mb=COFFEE)Deliver!(mb)

Begin,s0

Idle,s0

Pay,s0

Choose,s0

Price >0

Delivery,s0

paid:=0

v > 0Coin?(v)

paid:=paid+vpaid < Price ∧

d = paid - Price Return!(d)

paid ≥ Price ∧d =paid - Price

Return!(d) paid:=Price

Cancel?

Cancel?

Choose?(b)vb:=b

b=COFFEE∧ b=vb

Deliver!(b)

PS

IdleReject

ReturnReject

BeginAccept

¬(b=COFFEE)∧ b=vb

Deliver!(b)

BeginReject

Cancel?

Empty!(b)

Empty!(b)

Page 28: 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

28

Sélection du graphe de test

Begin,s0

Pay,s0

Choose,s0

Price >0

Delivery,s0

v > 0Coin?(v) paid:=0+v

paid < Price ∧ d = paid - Price Return!(d)

paid ≥ Price ∧d =paid - PriceReturn!(d) paid:=Price

Cancel?paid:=0

Cancel?

Choose?(b)vb:=b

b=COFFEE∧ b=vbDeliver!(b)

Vis(PS)

IdleReject

ReturnReject

BeginAccept

¬(b=COFFEE)∧ b=vbDeliver!(b)

BeginReject

paid:=0

Idle,s0Cancel?

v > 0Coin?(v) paid:=paid+v

Empty!(b)

Begin,s0

Pay,s0

Choose,s0

Price >0

Delivery,s0

d =paid - PriceReturn?(d)paid:=Price

b=COFFEEChoose!(b)vb:=b

vb=COFFEE ∧ b=vbDeliver?(b)

Pass

paid:=0

Idle,s0

v ≥ PriceCoin!(v) paid:=v

v ≥ PriceCoin!(v) paid:=v

Fail

?otherwise

CTG

Inconc

vb= COFFEE∧ b=vb

Empty!(b)

?otherwise

Page 29: 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

29

Exécution: instanciation des constantes et résolution des gardes

Begin,s0

Pay,s0

Choose,s0

Price >0

Delivery,s0

d =paid - PriceReturn?(d)

b=COFFEEChoose!(b)vb:=b

vb=COFFEE ∧ b=vbDeliver?(b)

Pass

paid:=0

Idle,s0

v ≥ PriceCoin!(v) paid:=v

v ≥ PriceCoin!(v) paid:=v

Fail

?otherwise

CTG

Inconc

vb= COFFEE∧ b=vb

Empty!(b)

?otherwise

Implémentation IPrice = 40

Coin!(50)

Return? (10) ?otherwise

Fail

Choose!(COFFEE)

Deliver?(COFFEE)

Empty?(COFFEE)

PassInconc

?otherwise

Résolutionv ≥ Price

Page 30: 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

30

Outillage: STGGé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++/JavaTest case

Test purposeSpecification

Générationde test

Compilation

dotty

Omegaverdict

NBAC

Test case

Page 31: 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

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 :

⇒ garantie de propriétés des tests : correction, « exhaustivité »

Outillage (STG) : génération et exécution

Publications

Page 32: 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

32

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

Page 33: 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

33

Travaux connexesModè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]

Page 34: 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

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

Page 35: 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

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

Page 36: 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

36

Quelques travaux en coursVé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]

Page 37: 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

37

Fin