Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parSacha Doucet Modifié depuis plus de 10 années
1
Méthodes symboliques pour la génération de tests de systèmes réactifs comportant des données Eléna Zinovieva Leroux 2004 22 novembre 2004 Membres du jury: Prof. Bruno Legeard Prof. Jan Tretmans Dr. Bruno Marre Prof. Olivier Ridoux Prof. Claude Jard Dr. Vlad Rusu (rapporteur)(rapporteur)(examinateur)(examinateur) (directeur de thèse) (encadrant)
2
2 Systèmes Réactifs Environnement Environnement complexes, critiques. Doivent être fiables et sans erreur importante. test, vérification, analyse statique, …
3
3 Test Exécution dune implémentation sous test avec lintention dy trouver des erreurs. « Program testing can be a very effective way to show the presence of bugs, but it is hopelessly inadequate for showing their absence. » E.W. Dijkstra CoffeeButton ? Coffee !Tea ! PassFail Cas de test CoffeeButton ? Coffee !Tea ! PassFail bouton de café thé café
4
4 Pourquoi sintéresser au test? Le test est largement utilisé dans lindustrie, mais il est coûteux. La détection derreurs graves dans les systèmes réactifs est très importante. « Testing often consume 50% of software effort. » B. Boehm Mars Climate Orbiter de la NASA (Octobre 1999) [Isbell & Savage] Désastre: écrasé sur la planète au lieu datteindre une orbite sécurisé. Pourquoi: erreur logicielle – erreur lors de la conversion des unités de mesure américaines en valeurs métriques. automatisation du test Diminution du coût. Identification plus facile des erreurs.
5
5 Plan 1.Test de conformité boîte noire. 2.Cadre formel du test de conformité. 3.Génération symbolique de cas de test. 4.Exécution dun cas de test. 5.Outil : STG. 6.Conclusion et perspectives.
6
6 Test de conformité boîte noire Spécification (et objectif de test) Cas de test Implémentation du système Génération de cas de test automatique Exécution du test ? Fail Inconclusive Pass conforme à ?
7
7 Des techniques énumératives aux techniques symboliques Explosion combinatoire de lespace détats; Les cas de test ne sont pas génériques. Motivations : Utiliser un nouveau modèle et des techniques symboliques pour produire un cas de test! Solution :
8
8 Notre approche Modèle symbolique : IOSTS. Génération symbolique de cas de test : Spec, TP IOSTS TC IOSTS. Exécution de cas de test : instanciation des entrées par la résolution de contraintes.
9
9 Plan 1.Test de conformité boîte noire. 2.Cadre formel du test de conformité : système symbolique de transitions à entrée/sortie (IOSTS), relation de conformité, cas de test & implémentation sous test, propriétés attendues des cas de test. 3.Génération symbolique de cas de test. 4.Exécution dun cas de test. 5.Outil : STG. 6.Conclusion et perspectives.
10
10 Système symbolique de transitions à entrée/sortie (IOSTS) Machine à café Spécification (vBev = pBev) Deliver ! (pBev) Return Delivery (pRemVal=vPaid) Return ! (pRemVal) Cancel ? ChooseBeverage ? (pBev) vBev := pBev Begin Idle Pay Choose vPaid:=0 (vPaid cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal cPrice>0 Empty ! Objectif de test Accept Begin (vPaid<cPrice) Return ! (pRemVal tp ) Reject (pBev tp = COFFEE) Deliver ! (pBev tp ) Cancel ? Exemple de comportement :. Coin ? (5). Return ! (2). ChooseBererage ? (COFFEE). Deliver ! (COFFEE) visible Traces(Spec)
11
11 Relation de conformité ioc (version faible dioco [Tretmans96]) : après un comportement visible de la spécification Spec, limplémentation sous test IUT nest autorisée à produire que les sorties spécifiées. Formellement : IUT Spécification partielle Comportements visibles dune Spec IUT ioc Spec = Traces(Spec). [ Out(IUT after ) Out(Spec after ) ] Sorties non spécifiées ! ¬ (IUT ioc Spec) ? Entrées non spécifiées (IUT ioc Spec)
12
12 Cas de test & IUT …………… BeverageType ChooseBeverage (BeverageType pBeverage) { cerr << "ChooseBeverage("; if(pBeverage == COFFEE) { cerr << TEA)"; return TEA; } if(pBeverage == TEA) { cerr << "TEA)"; return TEA; } …………… Machine à café cPrice>0 (vPaid = cPrice) & (vPaid > 0) Empty ? (pCoinVal>0) & (pCpinVal cPrice) Coin ! (pCoinVal) vPaid:=0+pCoinVal Inconclusive (pRemVal = vPaid-cPrice) & (vPaid > 0) & (vPaid cPrice) Return ? (pRemVal) vPaid:=cPrice (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) ChooseBeverage ! (pBev) vBev := pBev (pBev=COFFEE) & (vBev=pBev) & (vPaid > 0) & (vPaid=cPrice) Deliver ? (pBev) PassFail ( (pBev=COFFEE) & (vBev=pBev) & (vPaid > 0) & (vPaid=cPrice) ) Deliver ? (pBev)
13
13 Propriétés des cas de test TC est non biaisé sil ne rejette pas les IUT conformes. TC est précis sil produit le verdict Pass lorsque la trace observée de lIUT est une trace de la Spec sélectionnée par lobjectif de test TP. TC est concluant sil produit le verdict Inconclusive quand la trace observée de lIUT est une trace de la Spec qui finit par une action de sortie mais aucun prolongement de cette trace ne peut produire le verdict Pass.
14
14 Plan 1.Test de conformité boîte noire. 2.Cadre formel du test de conformité. 3.Génération symbolique de cas de test. 4.Exécution dun cas de test. 5.Outil : STG. 6.Conclusion et perspectives.
15
15 Génération symbolique de cas de test Objectif de test TP Cas de test TC Spécification Spec Génération symbolique de cas de test : Calcul du produit SP = Spec TP; Construction des comportements visibles SP vis ; Sélection et simplification du graphe de test TG; Complétion de TG en entrée.
16
16 Exemple : calcul du produit Spec (vBev = pBev) Deliver ! (pBev) Return Delivery (pRemVal=vPaid) Return ! (pRemVal) Cancel ? ChooseBeverage ? (pBev) vBev := pBev Choose (vPaid cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal cPrice>0 Begin tau vPaid:=0 Empty ! Pay Idle TP Accept Begin Reject Cancel ? (pBev tp = COFFEE) Deliver ! (pBev tp ) (vPaid<cPrice) Return ! (pRemVal tp ) (pBev tp COFFEE) Deliver ! (pBev tp ) otherwise (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) (vBev=pBev) & (pBev=COFFEE) Deliver ! (pBev) (vPaid cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice ChooseBeverage ? (pBev) vBev := pBev pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal cPrice>0 & true (vBev=pBev) & (pBev COFFEE) Deliver ! (pBev) tau vPaid:=0 SP = Spec TP Cancel ? Cancel ? (vPaid<cPrice) & (vPaid cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) (vPaid<cPrice) & (vPaid cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice Empty ! true
17
17 Génération symbolique de cas de test Objectif de test TP Cas de test TC Spécification Spec Génération symbolique de cas de test : Calcul du produit SP = Spec TP; Construction des comportements visibles SP vis : clôture, déterminisation. Sélection et simplification du graphe de test TG; Complétion de TG en entrée. Résultat après le produit : Traces(SP) = Traces(Spec) ATraces(SP) Traces(Spec) ATraces(TP)
18
18 Construction des comportements visibles (1/2) l a l n+1 l1l1 l2l2 lnln G 1 1 A 1 G n n A n G a a( ) A a G 1 & (G 2A 1 ) & … & (G n A n-1 …A 1 ) & (G a A n A n-1 …A 1 ) a( ) A a A n A n-1 … A 1 l1l1 l a Clôture : Exemple : (pCoinVal>0) & (vPaid < max) Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal cPrice>0 vPaid:=0 SP Cancel ? vPaid:=vPaid (pCoinVal>0) & (0<max) Coin ? (pCoinVal) vPaid:=0+pCoinVal cPrice>0 clôture(SP) Cancel ? vPaid:=0 pas de cycle dactions internes.
19
19 Construction des comportements visibles (2/2) l G 1 a( ) A 1 Déterminisation : l1l1 l2l2 G 2 a( ) A 2 lblb lclc G b b( b ) A b G c c( c ) A c l (G 1 & ¬ G 2 ) a( ) A 1 l1l1 l2l2 lblb lclc G b b( b ) A b G c c( c ) A c ( ¬ G 1 & G 2 ) a( ) A 2 l 1,2 (G 1 & G 2 ) a( ) (G b A 1 ) b( b ) (A b A 1 ) (G c A 2 ) c( c ) (A c A 2 ) Begin pCoinVal > 0 Coin ? (pCoinVal) vPaid := pCoinVal WaitMilk clôture(SP) Exemple : Pay vPaid 3 Coffee ! v := 1 vPaid 3 Coffee ! v := 2 Coffee&Milk vPaid + v > 10 Milk ! vPaid := vPaid + v v := v Begin pCoinVal > 0 Coin ? (pCoinVal) vPaid := pCoinVal Wait 1,2 SP vis = det(clôture(SP)) Pay vPaid = 3 Coffee ! vPaid > 3 Coffee ! v := 2 WaitMilk vPaid < 3 Coffee ! v := 1 WaitSugar termine sous une condition syntaxique. WaitSugar Coffee&Sugar vPaid – v > 0 Sugar ! vPaid := vPaid v := v Coffee&Milk vPaid + v > 10 Milk ! vPaid := vPaid + v v := v vPaid + 2 > 10 Milk ! vPaid := vPaid + 2 v := 2 Coffee&Sugar vPaid – v > 0 Sugar ! vPaid := vPaid v := v vPaid – 1 > 0 Sugar ! vPaid := vPaid v := 1
20
20 Génération symbolique de cas de test Objectif de test TP Cas de test TC Spécification Spec Génération symbolique de cas de test : Calcul du produit SP = Spec TP; Construction des comportements visibles SP vis ; Sélection et simplification du graphe de test TG; Complétion de TG en entrée. Résultat après construction de SP vis : Traces(SP vis ) = Traces(SP) = Traces(Spec) ATraces(SP vis ) = ATraces(SP)
21
21 Sélection du graphe de test SP vis avec S – ensemble des états, S 0 – ensemble des états initiaux, S but – ensemble des états buts. coreach(SP vis,S but ) Solution : S S0S0 non calculables de manière exacte sur-approximation coreach (SP vis,S but ) calcul exact sur-approximation Problème : Sélectionner un sous graphe de SP vis menant à la satisfaction de lobjectif de test TP. TG S but Coin ? (5) Return ! (2) ChooseBeverage ? (COFFEE) Empty ! Deliver ? (COFFEE) inconclusive Cancel ?
22
22 Exemple : sélection du graphe de test (vPaid > 0) & (cPrice > 0) & (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) Deliver ! (pBev) Return ! (pRemVal) vPaid:=cPrice ChooseBeverage ? (pBev) vBev := pBev Coin ? (pCoinVal) vPaid:=0+pCoinVal cPrice>0 (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) & (vBev=pBev) & (pBev COFFEE) Deliver ! (pBev) TG = coreach(SP vis,S acc ) (cPrice > 0) Cancel ? vPaid := 0 (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Cancel ? (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Empty ! SP vis analyse de co- accessibilité avec NBac pRemVal=vPaid-cPrice (pBev=COFFEE) & (pBev=vBev) (cPrice>0) (cPrice>0) & (vPaid cPrice) (cPrice>0) & (vPaid=cPrice) (cPrice>0) & (vPaid=cPrice) & (vBev=COFFEE) (cPrice>0) & (vPaid=cPrice) & (vBev=COFFEE) pCoinVal>0 true Résultat de lanalyse de la co-accessibilité (cPrice > 0) & (pCoinVal > 0) & pCoinVal>0 & (cPrice>0) & (vPaid cPrice)(0+pCoinVal cPrice) Inconclusive (vPaid > 0) & (cPrice > 0) & (vPaid cPrice) & (pRemVal=vPaid-cPrice) & (pRemVal=vPaid-cPrice) & (cPrice>0) & (vPaid=cPrice)(cPrice=cPrice) (pRemVal = vPaid-cPrice) & ¬[ (cPrice>0) & (cPrice = cPrice) ] Return ! (pRemVal) vPaid:=cPrice (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) (cPrice > 0) & (vPaid = cPrice) & (vBev = COFFEE) (pBev = COFFEE) (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) & (vBev=pBev) & (pBev=COFFEE) & (pBev=COFFEE) & (vBev=pBev) & (cPrice > 0) & (vPaid=cPrice) & (vBev=COFFEE) (pBev=COFFEE) & (vBev=pBev) & ¬[ (cPrice > 0) & (vPaid=cPrice) & (vBev=COFFEE) ] Deliver ! (pBev) Pass analyse daccessibilité avec NBac + miroir TG = miroir(reach(TG,S 0 )) cPrice>0 (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Empty ? (pCoinVal>0) & (cPrice>0) & (pCpinVal cPrice) Coin ! (pCoinVal) vPaid:=0+pCoinVal Inconclusive (pRemVal=vPaid-cPrice) & (vPaid > 0) & (cPrice > 0) & (vPaid cPrice) Return ? (pRemVal) vPaid:=cPrice (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) ChooseBeverage ! (pBev) vBev := pBev (pBev=COFFEE) & (vBev=pBev) & (vBev=COFFEE) (cPrice > 0) & (vPaid > 0) & (vPaid=cPrice) Deliver ? (pBev) Pass et simplification
23
23 Génération symbolique de cas de test Objectif de test TP Cas de test TC Spécification Spec Génération symbolique de cas de test : Calcul du produit SP = Spec TP; Construction des comportements visibles SP vis ; Sélection et simplification du graphe de test TG. Complétion de TG en entrée. Résultat après sélection de TG : Traces(TG) Traces(SP vis ) = Traces(SP) = Traces(Spec) Traces pass (TG) = ATraces(Spec TP) Traces inconc (TG) (Traces(Spec) Traces(Spec). ! Spec ) \ pref(ATraces(Spec TP))
24
24 Exemple : complétion de TG en entrée TG vers TC cPrice>0 (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Empty ? (pCoinVal>0) & (cPrice>0) & (pCpinVal cPrice) Coin ! (pCoinVal) vPaid:=0+pCoinVal Inconclusive (pRemVal=vPaid-cPrice) & (vPaid > 0) & (cPrice > 0) & (vPaid cPrice) Return ? (pRemVal) vPaid:=cPrice (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) ChooseBeverage ! (pBev) vBev := pBev (pBev=COFFEE) & (vBev=pBev) & (vBev=COFFEE) (cPrice > 0) & (vPaid > 0) & (vPaid=cPrice) Deliver ? (pBev) Pass Fail otherwise ? Traces(TC) = Traces(TG) Traces fail (TC) Traces fail (TC) Traces(Spec). ! Spec \ Traces(Spec) Traces pass (TC) = Traces pass (TG) = ATraces(Spec TP) Traces inconc (TC) = Traces inconc (TG) (Traces(Spec) Traces(Spec). ! Spec ) \ pref(ATraces(Spec TP)) TC est non biaiséTC est précisTC est concluant
25
25 Plan 1.Test de conformité boîte noire. 2.Des techniques énumératives aux techniques symboliques. 3.Génération symbolique de cas de test. 4.Exécution dun cas de test. 5.Outil : STG. 6.Conclusion et perspectives.
26
26 Exécution dun cas de test TC cPrice>0 (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Coin ! (pCoinVal) vPaid:=0+pCoinVal Inconclusive (pRemVal=vPaid-cPrice) & (vPaid > 0) & (cPrice > 0) & (vPaid cPrice) (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) (pBev=COFFEE) & (vBev=pBev) & (vBev=COFFEE) (cPrice > 0) & (vPaid > 0) & (vPaid=cPrice) Pass Fail otherwise ? instanciation des constantes symboliques, résolution des gardes. IUT dune machine à café cPrice IUT = 3 Coin ? (5) Return ! (2) ChooseBeverage ? (COFFEE) Deliver ! (COFFEE) Empty ! Pass Inconclusive Fail otherwise ! (pCoinVal>0) & (cPrice>0) & (pCoinVal cPrice) Return ? (pRemVal) vPaid:=cPrice ChooseBeverage ! (pBev) vBev := pBev Deliver ? (pBev) Empty ?
27
27 Plan 1.Test de conformité boîte noire. 2.Cadre formel du test de conformité. 3.Génération symbolique de cas de test. 4.Exécution dun cas de test. 5.Outil : STG. 6.Conclusion et perspectives.
28
28 Outil : STG en collaboration avec D. Clarke et F.-X. Ponscarme IUT (C++/Java) Spécification & Objectif de test Cas de test abstrait Génération de cas de test Compilation Cas de test (C++/Java) STG Dotty Omega NBac Pass, Inconclusive, Fail 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 BRP, CEPS [CJRZ-Esmart01] : ~30 variables et constantes symboliques, 30 localités et 91 transitions syntaxiques.
29
29 Plan 1.Test de conformité boîte noire. 2.Cadre formel du test de conformité. 3.Génération symbolique de cas de test. 4.Exécution dun cas de test. 5.Outil : STG. 6.Conclusion et perspectives.
30
30 Contributions [ CJRZ-Esec01, CJRZ-Esmart01, CJRZ-Tacas02, Z-Movep02, JJRZ-RR04 ] Originalité : Génération de cas de test génériques. Traitement de systèmes non déterministes. Sélection symbolique de cas de test basée sur lanalyse approchée et indépendante de lapproximation. Implémentation : La génération symbolique de tests est complètement automatisée (STG).
31
31 Perspectives Améliorer les critères de sélection : génération automatique dobjectifs de test, génération de cas de test à partir de spécifications et de critères de couverture, … Combiner des méthodes de validation dans le processus de développement. Réaliser plus détudes de cas.
32
Merci Thank you Спасибо
33
33 Déterminisme à lhorizon k IOSTS déterministe a lhorizon k : il nexiste pas deux transitions t 1 et t 2, impliquées dans un même choix non déterministe, telles que une même séquence dactions de longueur supérieure ou égale à k est exécutable à la fois après t 1 et t 2. Exemples : Begin pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal WaitCoffee Pay vPaid 3 Coffee ! v:=0 vPaid 3 Coffee ! v:=1 WaitMilk v = 1 Milk ! déterministe à lhorizon 2 Begin End il nexiste pas de k tel que cet IOSTS est déterministe à lhorizon k a ? x := x+1 x = 0 a ? x := x+2 p = x b ! (p)
34
34 Construction des comportements visibles (2/2) l G 1 a( ) A 1 Déterminisation : l1l1 l2l2 G 2 a( ) A 2 lblb lclc G b b( b ) A b G c c( c ) A c l (G 1 & ¬ G 2 ) a( ) A 1 l1l1 l2l2 lblb lclc G b b( b ) A b G c c( c ) A c ( ¬ G 1 & G 2 ) a( ) A 2 l 1,2 (G 1 & G 2 ) a( ) (G b A 1 ) b( b ) (A b A 1 ) (G c A 2 ) c( c ) (A c A 2 ) Begin pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal WaitCoffee clôture(SP) Exemple : Pay vPaid 3 Coffee ! v:=0 vPaid 3 Coffee ! v:=1 WaitMilk v = 1 Milk ! Begin pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal WaitMilk WaitCoffee 1,2 SP vis = det(clôture(SP)) Pay vPaid = 3 Coffee ! v:=v vPaid > 3 Coffee ! v:=1 1 = 1 Milk ! WaitCoffee 1 vPaid < 3 Coffee ! v:=0 WaitCoffee 2 0 = 1 Milk ! v = 1 Milk ! v = 1 Milk ! termine sous une condition syntaxique.
35
35 Clôture Begin p = 0 Input ? (p) x := p Idle 2 Idle 1 x := x+1 End p = x Output ! (p) IOSTS avec un cycle dactions internes x := x+1
36
36 ioc vers ioco G a ( a ) a ! a IOSTS G G b ( b ) b ? b a :sig(a).[ G a ( a ) ] & [ G ] ! suspendu
37
37 Notre approche Modèle symbolique : IOSTS. Génération symbolique de cas de test : Spec, TP IOSTS TC IOSTS, sélection symbolique de cas de test basée sur lanalyse approchée. Exécution de cas de test : instanciation des entrées par la résolution de contraintes.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.