1 / 32

Méthodes symboliques pour la génération de tests de systèmes réactifs comportant des données

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

diamond
Download Presentation

Méthodes symboliques pour la génération de tests de systèmes réactifs comportant des données

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. 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) Méthodes symboliques pour la génération de tests de systèmes réactifs comportant des données Eléna Zinovieva Leroux 22 novembre 2004

  2. Environnement Systèmes Réactifs • complexes, • critiques. Doivent être fiables et sans erreur importante. • test, • vérification, • analyse statique, • …

  3. CoffeeButton ? CoffeeButton ? Tea ! Tea ! Coffee ! Coffee ! Fail Fail Pass Pass bouton de café thé Cas de test café Test Exécution d’une implémentation sous test avec l’intention d’y 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

  4. Mars Climate Orbiter de la NASA (Octobre 1999) [Isbell & Savage] automatisation du test Désastre: écrasé sur la planète au lieu d’atteindre une orbite sécurisé. Pourquoi:erreur logicielle – erreur lors de la conversion des unités de mesure américaines en valeurs métriques. • Diminution du coût. • Identification plus facile des erreurs. Pourquoi s’intéresser au test? • Le test est largement utilisé dans l’industrie, mais il estcoûteux. • La détection d’erreurs graves dans les systèmes réactifs est très importante. « Testing often consume 50% of software effort. » B. Boehm

  5. Plan Test de conformité boîte noire. Cadre formel du test de conformité. Génération symbolique de cas de test. Exécution d’un cas de test. Outil : STG. Conclusionet perspectives.

  6. ? Test de conformité boîte noire conforme à ? Implémentation du système Spécification (et objectif de test) Génération de cas de test automatique Cas de test Exécution du test Inconclusive Fail Pass

  7. Des techniques énumératives aux techniques symboliques Motivations : • Explosion combinatoire de l’espace d’états; • Les cas de test ne sont pas génériques. Solution : Utiliser un nouveau modèle et des techniquessymboliques pour produire un cas de test!

  8. Notre approche • Modèlesymbolique : IOSTS. • Génération symboliquede 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. Plan • Test de conformité boîte noire. • 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. • Génération symbolique de cas de test. • Exécution d’un cas de test. • Outil : STG. • Conclusionet perspectives.

  10. Objectif de test Begin Begin visible cPrice>0 (pRemVal=vPaid) Return ! (pRemVal) Idle (pBevtp = COFFEE) Deliver ! (pBevtp) t vPaid:=0 Cancel ? Cancel ? (vPaid<cPrice) Return ! (pRemValtp) Pay pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) Return  Traces(Spec) Accept (vPaid ≥ cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice Choose (vBev = pBev) Deliver ! (pBev) Cancel ? Delivery Reject ChooseBeverage ? (pBev) vBev := pBev Empty ! Machine à café Système symbolique de transitions à entrée/sortie (IOSTS) Spécification Exemple de comportement : t. Coin ? (5) . Return ! (2) . ChooseBererage ? (COFFEE) . Deliver ! (COFFEE)

  11. Entrées non spécifiées (IUT ioc Spec) L? L! Sorties non spécifiées Spécification partielle ¬ (IUT ioc Spec) Relation de conformité ioc (version faible d’ioco[Tretmans96]) : aprèsuncomportement visible de la spécification Spec, l’implémentation sous test IUT n’est autorisée à produire que les sorties spécifiées. Formellement : IUT ioc Spec = ∀ s ∈ Traces(Spec) . [ Out(IUT after s) ⊆ Out(Spec after s) ] Comportements visibles d’une Spec IUT

  12. Machine à café Cas de test & IUT …………… BeverageType ChooseBeverage (BeverageType pBeverage) { cerr << "ChooseBeverage("; if(pBeverage == COFFEE) { cerr << “TEA)"; return TEA; } if(pBeverage == TEA) { cerr << "TEA)"; return TEA; } } …………… cPrice>0 <Begin,Begin> (pCoinVal>0) & (pCpinVal ≥ cPrice) Coin ! (pCoinVal) vPaid:=0+pCoinVal <Pay,Begin> (pRemVal = vPaid-cPrice) & (vPaid > 0) & (vPaid ≥cPrice) Return ? (pRemVal) vPaid:=cPrice <Choose,Begin> (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) ChooseBeverage ! (pBev) vBev := pBev <Delivery,Begin> (vPaid = cPrice) & (vPaid > 0) Empty ? (pBev=COFFEE) & (vBev=pBev) & (vPaid > 0) & (vPaid=cPrice) Deliver ? (pBev)  ( (pBev=COFFEE) & (vBev=pBev) & (vPaid > 0) & (vPaid=cPrice) ) Deliver ? (pBev) Pass Fail Inconclusive

  13. Propriétés des cas de test • TC est non biaisé s’il ne rejette pas les IUT conformes. • TC est précis s’il produit le verdict Pass lorsque la trace observée de l’IUT est une trace de la Spec sélectionnée par l’objectif de test TP. • TC est concluant s’il produit le verdict Inconclusive quand la trace observée de l’IUT 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. Plan Test de conformité boîte noire. Cadre formel du test de conformité. Génération symbolique de cas de test. Exécution d’un cas de test. Outil : STG. Conclusionet perspectives.

  15. Génération symbolique de cas de test • Génération symbolique • de cas de test : • Calcul du produit SP = Spec TP; • Construction des comportements • visibles SPvis; • Sélection et simplification du • graphe de test TG; • Complétion de TG en entrée. Spécification Spec Cas de test TC Objectif de test TP

  16. Exemple : calculduproduit SP = Spec  TP Spec cPrice>0 & true cPrice>0 (pRemVal=vPaid) Return ! (pRemVal) Begin <Begin,Begin> tau vPaid:=0 tau vPaid:=0 Cancel ? Idle (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) Cancel ? <Idle,Begin> <Choose,Reject> pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal (vPaid<cPrice) & (vPaid ≥cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice pCoinVal > 0 Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal (vPaid<cPrice) & (vPaid ≥cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) Return Pay (vPaid ≥ cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice <Return,Reject> (vBev = pBev) Deliver ! (pBev) <Pay,Begin> Cancel ? (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) (vPaid ≥cPrice) & (pRemVal=vPaid-cPrice) Return ! (pRemVal) vPaid:=cPrice Delivery Choose ChooseBeverage ? (pBev) vBev := pBev Cancel ? <Choose,Begin> <Idle,Reject> Empty ! ChooseBeverage ? (pBev) vBev := pBev TP otherwise true (pBevtp ≠ COFFEE) Deliver ! (pBevtp) <Delivery,Begin> Empty ! Begin (vBev=pBev) & (pBev ≠COFFEE) Deliver ! (pBev) (vBev=pBev) & (pBev=COFFEE) Deliver ! (pBev) (pBevtp = COFFEE) Deliver ! (pBevtp) Cancel ? <Begin,Accept> (vPaid<cPrice) Return ! (pRemValtp) <Begin,Reject> Accept Reject otherwise otherwise

  17. Génération symbolique de cas de test • Génération symbolique • de cas de test : • Calcul du produit SP = Spec TP; • Construction des comportements • visibles SPvis : • clôture, • déterminisation. • Sélection et simplification du • graphe de test TG; • Complétion de TG en entrée. Spécification Spec Cas de test TC Objectif de test TP • Résultat après le produit : • Traces(SP) = Traces(Spec) • ATraces(SP)  Traces(Spec) ATraces(TP)

  18. Ga a() Aa G1 1 A1 Gn n An ln+1 l2 ln G1 & (G2◦A1) & … & (Gn◦An-1◦…◦A1) & (Ga◦An◦An-1◦…◦A1) a() Aa ◦ An ◦ An-1 ◦…◦ A1 la la l1 l1 Construction des comportements visibles (1/2) pas de cycle d’actions internes. Clôture : Exemple : clôture(SP) cPrice>0 SP cPrice>0 <Begin,Begin> <Begin,Begin>  vPaid:=0 Cancel ? vPaid:=0 (pCoinVal>0) & (0<max) Coin ? (pCoinVal) vPaid:=0+pCoinVal <Idle,Begin> Cancel ? vPaid:=vPaid (pCoinVal>0) & (vPaid < max) Coin ? (pCoinVal) vPaid:=vPaid+pCoinVal <Return,Reject> <Pay,Begin> <Return,Reject> <Pay,Begin>

  19. lc l2 l1 l lb lb lc l2 l1 l Construction des comportements visibles (2/2) termine sous une condition syntaxique. Déterminisation : (G1 & ¬G2) a() A1 (¬G1 & G2) a() A2 G1 a() A1 G2 a() A2 (G1 & G2) a() Gb b(b) Ab Gc c(c) Ac Gc c(c) Ac Gb b(b) Ab l1,2 (Gc◦A2) c(c) (Ac◦A2) (Gb◦A1) b(b) (Ab◦A1) Exemple : SPvis = det(clôture(SP)) clôture(SP) Begin Begin pCoinVal > 0 Coin ? (pCoinVal) vPaid := pCoinVal pCoinVal > 0 Coin ? (pCoinVal) vPaid := pCoinVal Pay Pay vPaid > 3 Coffee ! v := 2 vPaid  3 Coffee ! v := 1 vPaid < 3 Coffee ! v := 1 vPaid  3 Coffee ! v := 2 vPaid = 3 Coffee ! WaitMilk WaitSugar WaitMilk WaitSugar Wait1,2 vPaid – v > 0 Sugar ! vPaid := vPaid v := v vPaid – v > 0 Sugar ! vPaid := vPaid v := v vPaid + v > 10 Milk ! vPaid := vPaid + v v := v vPaid + v > 10 Milk ! vPaid := vPaid + v v := v Coffee&Sugar Coffee&Milk Coffee&Sugar vPaid + 2 > 10 Milk ! vPaid := vPaid + 2 v := 2 Coffee&Milk vPaid – 1 > 0 Sugar ! vPaid := vPaid v := 1

  20. Génération symbolique de cas de test • Génération symbolique • de cas de test : • Calcul du produit SP = Spec TP; • Construction des comportements • visibles SPvis; • Sélection et simplification du • graphe de test TG; • Complétion de TG en entrée. Spécification Spec Cas de test TC • Résultat après construction de SPvis : • Traces(SPvis) = Traces(SP) = Traces(Spec) • ATraces(SPvis) = ATraces(SP) Objectif de test TP

  21. Sélection du graphe de test SPvis avec S – ensemble des états, S0 – ensemble des états initiaux, Sbut – ensemble des états buts. S0 S Coin ? (5) inconclusive Problème : Sélectionner un sous graphe de SPvis menant à la satisfaction de l’objectif de test TP. Return ! (2) Cancel ? ChooseBeverage ? (COFFEE) Empty ! Deliver ? (COFFEE) Solution : Sbut coreach(SPvis,Sbut) non calculables de manière exacte sur-approximation coreach(SPvis,Sbut) sur-approximation calcul exact TG

  22. et simplification TG = miroir(reach(TG,S0)) & cPrice>0 <Begin,Begin> & (pCoinVal>0) & (cPrice>0) & (pCpinVal ≥ cPrice) Coin ! (pCoinVal) vPaid:=0+pCoinVal <Pay,Begin> (pRemVal=vPaid-cPrice) & (vPaid > 0) & (cPrice > 0) & (vPaid ≥cPrice) Return ? (pRemVal) vPaid:=cPrice analyse d’accessibilité avec NBac analyse de co-accessibilité avec NBac <Choose,Begin> (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) ChooseBeverage ! (pBev) vBev := pBev & <Delivery,Begin> (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Empty ? (pBev=COFFEE) & (vBev=pBev) & (vBev=COFFEE) (cPrice > 0) & (vPaid > 0) & (vPaid=cPrice) Deliver ? (pBev) + miroir Pass Inconclusive Exemple : sélection du graphe de test Résultat de l‘analyse de la co-accessibilité TG’ = coreach(SP’vis,Sacc) SP’vis cPrice>0 <Begin,Begin> pCoinVal>0 & (cPrice>0) & <Begin,Begin> (cPrice>0) (cPrice > 0) & (pCoinVal > 0) (0+pCoinVal ≥ cPrice) (vPaid ≥ cPrice) Coin ? (pCoinVal) vPaid:=0+pCoinVal (cPrice > 0) Cancel ? vPaid := 0 pCoinVal>0 (pRemVal = vPaid-cPrice) & ¬[ (cPrice>0) & (cPrice = cPrice) ] Return ! (pRemVal) vPaid:=cPrice <Pay,Begin> <Pay,Begin> (cPrice>0) & (vPaid ≥ cPrice) (pRemVal=vPaid-cPrice) & (cPrice>0) & (vPaid > 0) & (cPrice > 0) & (vPaid ≥cPrice) & (pRemVal=vPaid-cPrice) pRemVal=vPaid-cPrice (cPrice=cPrice) (vPaid=cPrice) (vPaid > 0) & (cPrice > 0) & (vPaid<cPrice) & (pRemVal=cPrice-vPaid) Return ! (pRemVal) <Return,Reject> Inconclusive <Choose,Begin> (cPrice>0) & (vPaid=cPrice) Return ! (pRemVal) vPaid:=cPrice true (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Cancel ? <Delivery,Begin> (cPrice>0) & (vPaid=cPrice) & (vBev=COFFEE) (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Empty ! <Choose,Begin> Inconclusive <Idle,Reject> (pBev=COFFEE) & (pBev=vBev) (cPrice > 0) & (vPaid = cPrice) & (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) (vBev = COFFEE) (pBev = COFFEE) <Begin,Accept> (cPrice>0) & (vPaid=cPrice) & (vBev=COFFEE) ChooseBeverage ? (pBev) vBev := pBev (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) & (vBev=pBev) & (pBev ≠COFFEE) Deliver ! (pBev) <Delivery,Begin> (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) Deliver ! (pBev) <Begin,Accept> Pass <Begin,Reject>

  23. Génération symbolique de cas de test • Génération symbolique • de cas de test : • Calcul du produit SP = Spec TP; • Construction des comportements • visibles SPvis; • Sélection et simplification du • graphe de test TG. • Complétion de TG en entrée. Spécification Spec Cas de test TC • Résultat après sélection de TG : • Traces(TG) Traces(SPvis) = Traces(SP) = Traces(Spec) • Tracespass(TG) = ATraces(Spec  TP) • Tracesinconc (TG)  (Traces(Spec) Traces(Spec).L!Spec) \ pref(ATraces(Spec  TP)) Objectif de test TP

  24. TC est non biaisé TC est précis TC est concluant Exemple : complétion de TG en entrée • Traces(TC) = Traces(TG)  Tracesfail(TC) • Tracesfail(TC) Traces(Spec) . L!Spec \ Traces(Spec) TG vers TC cPrice>0 <Begin,Begin> (pCoinVal>0) & (cPrice>0) & (pCpinVal ≥ cPrice) Coin ! (pCoinVal) vPaid:=0+pCoinVal otherwise ? • Tracespass(TC) = Tracespass(TG) = ATraces(Spec  TP) <Pay,Begin> otherwise ? (pRemVal=vPaid-cPrice) & (vPaid > 0) & (cPrice > 0) & (vPaid ≥cPrice) Return ? (pRemVal) vPaid:=cPrice otherwise ? <Choose,Begin> (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) ChooseBeverage ! (pBev) vBev := pBev • Tracesinconc(TC) = Tracesinconc(TG)  • (Traces(Spec)  Traces(Spec).L!Spec) \ • pref(ATraces(Spec  TP)) otherwise ? <Delivery,Begin> (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) Empty ? (pBev=COFFEE) & (vBev=pBev) & (vBev=COFFEE) (cPrice > 0) & (vPaid > 0) & (vPaid=cPrice) Deliver ? (pBev) Fail Pass Inconclusive

  25. Plan Test de conformité boîte noire. Des techniques énumératives aux techniques symboliques. Génération symbolique de cas de test. Exécution d’un cas de test. Outil : STG. Conclusion et perspectives.

  26. Exécution d’un cas de test IUT d’une machine à café cPriceIUT = 3 TC cPrice>0 <Begin,Begin> (pCoinVal>0) & (cPrice>0) & (pCoinVal ≥ cPrice) Coin ! (pCoinVal) vPaid:=0+pCoinVal Coin ? (5) otherwise ? <Pay,Begin> otherwise ? (pRemVal=vPaid-cPrice) & (vPaid > 0) & (cPrice > 0) & (vPaid ≥cPrice) Return ! (2) Return ? (pRemVal) vPaid:=cPrice otherwise ! otherwise ? <Choose,Begin> ChooseBeverage ? (COFFEE) (pBev=COFFEE) & (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) otherwise ! ChooseBeverage ! (pBev) vBev := pBev otherwise ? <Delivery,Begin> Empty ! Deliver ! (COFFEE) (vPaid = cPrice) & (vPaid > 0) & (cPrice > 0) (pBev=COFFEE) & (vBev=pBev) & (vBev=COFFEE) (cPrice > 0) & (vPaid > 0) & (vPaid=cPrice) Fail Inconclusive Pass Empty ? Deliver ? (pBev) Fail Pass Inconclusive • instanciation des constantes symboliques, • résolution des gardes.

  27. Plan Test de conformité boîte noire. Cadre formel du test de conformité. Génération symbolique de cas de test. Exécution d’un cas de test. Outil : STG. Conclusion et perspectives.

  28. Outil : STGen collaboration avec D. Clarke et F.-X. Ponscarme Spécification & Objectif de test • Génération • opérations symboliques, • analyse approchée par • interprétation abstraite • (NBac). Dotty STG Génération de cas de test NBac Cas de test abstrait • Exécution • compilation (C++/Java), • résolution de contraintes • (Omega). Compilation IUT (C++/Java) • Expérimentations • BRP, • CEPS [CJRZ-Esmart01] : • ~30 variables et constantes symboliques, • 30 localités et 91 transitions syntaxiques. Cas de test (C++/Java) Omega Pass, Inconclusive, Fail

  29. Plan Test de conformité boîte noire. Cadre formel du test de conformité. Génération symbolique de cas de test. Exécution d’un cas de test. Outil : STG. Conclusionet perspectives.

  30. Contributions[CJRZ-Esec01, CJRZ-Esmart01, CJRZ-Tacas02, Z-Movep02, JJRZ-RR04 ] Originalité : • Génération de cas de test génériques. • Traitementde systèmes non déterministes. • Sélection symbolique de cas de test basée sur l’analyse approchée et indépendante de l’approximation. Implémentation : La génération symbolique de testsest complètement automatisée (STG).

  31. Perspectives • Améliorer les critères de sélection : • génération automatique d’objectifs 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

More Related