Validation des services web à l’aide de la génération automatique de tests Vincent Pretre 18 mars 2009 Jury : INP/Esisar, ...
Sommaire <ul><li>La qualité pour les services web (WS) </li></ul><ul><li>Assurer la qualité des WS </li></ul><ul><li>iTaC-...
Sommaire La qualité pour les services web <ul><li>La qualité pour les services web (WS) </li></ul><ul><ul><li>introduction...
La qualité pour les services web Introduction aux services web Fournisseur Client Service web XML 1 – Conception 2 – Dével...
<ul><li>Justesse des résultats </li></ul><ul><ul><li>corrects </li></ul></ul><ul><ul><li>complets </li></ul></ul><ul><li>A...
Qualité des services web Facteurs de qualité Utilisation Consommation Robustesse Temps de réponse Accessibilité Sécurité d...
Qualité des services web Problématique traitée <ul><li>Problématique :  comment être sûr de la qualité des services découv...
Qualité des services web Couverture de la solution Utilisation Consommation Robustesse Temps de réponse Accessibilité Sécu...
Sommaire Assurer la qualité des services web <ul><li>La qualité pour les services web </li></ul><ul><li>Assurer la qualité...
Assurer la qualité des services web Modélisation <ul><li>U nified  M odeling  L anguage </li></ul><ul><ul><li>répandu </li...
Assurer la qualité des services web Validation <ul><li>Divers domaines traités </li></ul><ul><li>vérification de propriété...
Assurer la qualité des services web Evaluation <ul><li>Automatic conformance testing of web services   (R. Heckel et L. Ma...
Assurer la qualité des services web Bilan <ul><li>Modélisation </li></ul><ul><ul><li>aucune méthode modélisant l’interface...
Sommaire iTaC-QoS – une plateforme de validation des services web <ul><li>La qualité pour les services web </li></ul><ul><...
iTaC-QoS Présentation de l’exemple <ul><li>Service web de blog </li></ul><ul><li>Couplé à une plate-forme de publication <...
iTaC-QoS Présentation de la méthode A Model based Validation Framework for Web Services  (V. Pretre, F. Bouquet, C. Lang -...
iTaC-QoS Modélisation des services <ul><li>Modélisation UML (profil UML4ST) </li></ul><ul><li>Adaptation du modèle pour iT...
iTaC-QoS Découverte des relations <ul><li>Nécessaire pour trois raisons </li></ul><ul><ul><li>calcul des notes </li></ul><...
iTaC-QoS Fusion de modèles <ul><li>Nécessaire en cas de compositions </li></ul><ul><li>Impossible de modéliser un service ...
iTaC-QoS Couverture et stratégies de test <ul><li>Découverte des comportements ( cibles de test ) </li></ul><ul><ul><li>da...
iTaC-QoS Réification des tests <ul><li>Génération d’une bibliothèque de connexion au WS grâce à  wsdl2java </li></ul><ul><...
iTaC-QoS Réification des tests – réorganisation des scripts de test <ul><li>Ordre des opérations </li></ul><ul><li>Deux ra...
iTaC-QoS Réification des tests – Calcul du verdict <ul><li>Problème des résultats de tests </li></ul><ul><li>Les tests ne ...
iTaC-QoS Réification des tests -   Verdicts possibles Modélisation  – Découverte des relations – Fusion des modèles – Géné...
iTaC-QoS Exécution des tests <ul><li>Calcul du plan de test </li></ul><ul><li>Deux types de test </li></ul><ul><ul><li>éta...
iTaC-QoS  Evaluation des services web <ul><li>Attribution de notes aux opérations </li></ul><ul><ul><li>note unitaire :   ...
iTaC-QoS Evaluation des WS - Classification des tests <ul><li>A posteriori </li></ul><ul><ul><li>classification des tests ...
iTaC-QoS Evaluation des WS - Présentation aux utilisateurs Using Common Criteria to Assess Quality of Web Services V. Pret...
Sommaire Conclusion et travaux futurs <ul><li>La qualité pour les services web </li></ul><ul><li>Assurer la qualité des se...
Conclusion et travaux futurs Synthèse 1 – Conception, création, déploiement et  modélisation 2 - Enregistrement Client 3 –...
Conclusion et travaux futurs Synthèse <ul><li>Points forts </li></ul><ul><li>Méthode :  générique, basée sur des standards...
Conclusion et travaux futurs Travaux futurs <ul><li>Valider la couverture du modèle </li></ul><ul><li>Gérer les compositio...
Questions <ul><li>Merci de votre attention … </li></ul>
Web services certification UML models used - OCL code <ul><li>Code OCL: </li></ul><ul><li>Représente le comportement des o...
Questions Exécution des tests <ul><li>Tous les tests replacent le service dans son état initial </li></ul><ul><li>Vagues d...
Questions Fusion modèles – diagrammes d‘états-transitions <ul><li>Mise à plat du diagramme </li></ul><ul><ul><li>suppressi...
Questions Fusion modèles – diagramme de classes <ul><li>Découverte des messages SOAP et de l’interface du WS (WSDL) </li><...
Questions Fusion modèles – OCL <ul><li>Mise à jour des références à « self » </li></ul><ul><li>Mise à jour des paramètres ...
<ul><li>Répercussion des modifications du diagramme de classes </li></ul><ul><li>Déplacement dans un diagramme commun </li...
Upcoming SlideShare
Loading in …5
×

Validation des services web à l’aide de la génération automatique de tests

664 views
556 views

Published on

Slides from my Ph.D defensis (in french)

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
664
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Validation des services web à l’aide de la génération automatique de tests

  1. 1. Validation des services web à l’aide de la génération automatique de tests Vincent Pretre 18 mars 2009 Jury : INP/Esisar, Grenoble Rapporteur Ioannis Parissis UHA, Mulhouse Examinateur Pierre-Alain Muller LIFC, Besançon Examinateur Jean-Christophe Lapayre LIFC, Besançon Encadrant Christophe Lang LIFC, Besançon Encadrant Fabrice Bouquet IRIT, Toulouse Rapporteur Philippe Balbiani
  2. 2. Sommaire <ul><li>La qualité pour les services web (WS) </li></ul><ul><li>Assurer la qualité des WS </li></ul><ul><li>iTaC-QoS – une plateforme de validation des WS </li></ul><ul><li>Conclusion et travaux futurs </li></ul>
  3. 3. Sommaire La qualité pour les services web <ul><li>La qualité pour les services web (WS) </li></ul><ul><ul><li>introduction aux WS </li></ul></ul><ul><ul><li>critères de qualité </li></ul></ul><ul><ul><li>facteurs de qualité </li></ul></ul><ul><li>Assurer la qualité des WS </li></ul><ul><li>iTaC-QoS – une plateforme de validation des WS </li></ul><ul><li>Conclusion et travaux futurs </li></ul>
  4. 4. La qualité pour les services web Introduction aux services web Fournisseur Client Service web XML 1 – Conception 2 – Développement 3 – Déploiement 6 – 4 - Déclaration W eb S ervice D escription L anguage S imple O bject A ccess P rotocol U niversal D escription, D iscovery and I ntegration Composition 5 – Recherche Internet Utilisation 4 – recherche
  5. 5. <ul><li>Justesse des résultats </li></ul><ul><ul><li>corrects </li></ul></ul><ul><ul><li>complets </li></ul></ul><ul><li>Accessibilité </li></ul><ul><ul><li>fonctionnelle </li></ul></ul><ul><ul><li>comportementale </li></ul></ul><ul><li>Sécurité des données </li></ul><ul><ul><li>vie privée des utilisateurs </li></ul></ul><ul><ul><li>données privées </li></ul></ul>La qualité pour les services web Six critères de qualité <ul><li>Temps de réponse </li></ul><ul><ul><li>dépend de l’utilisateur et du type de service </li></ul></ul><ul><li>Robustesse </li></ul><ul><ul><li>capacité à résister aux attaques </li></ul></ul><ul><ul><li>capacité à résister aux erreurs </li></ul></ul><ul><ul><li>tenue à la charge </li></ul></ul><ul><li>Consommation </li></ul><ul><ul><li>bande-passante </li></ul></ul><ul><ul><li>temps machine </li></ul></ul>movieDatabase.byActor(‘Michel Audiard’) -> [‘Faut pas prendre les enfant du bon Dieu pour des canards sauvages’, ‘Elle boit pas, elle fume pas, elle drague pas … mais elle cause’, ‘Comment réussir … quand on est con et pleurnichard’, ‘C’est jeune et ça sait tout!’, ‘Tendre poulet’] Nom, prénom, adresse, numéro sécurité sociale, téléphone … Brouillon de messages, recherche effectuée, image … FPR (Privacy), FDP (Data privacy) FTA (Access) movieDatabase.details(112) -> {‘Les tontons flingueurs’, 1963, ‘Lautner’} FRU (Ressource Utilisation) FPT (Protection) Assemblage pano Attente bus 10 sec 2 min 10 sec 5 min
  6. 6. Qualité des services web Facteurs de qualité Utilisation Consommation Robustesse Temps de réponse Accessibilité Sécurité des données Qualité des résultats Relations Réseau Déploiement Conception et développement
  7. 7. Qualité des services web Problématique traitée <ul><li>Problématique : comment être sûr de la qualité des services découverts ? </li></ul><ul><li>Solution apportée </li></ul><ul><ul><li>ajout d’une notion de qualité à UDDI </li></ul></ul><ul><ul><li>utilisation du test à partir de modèle </li></ul></ul><ul><li>Domaines couverts </li></ul><ul><ul><li>justesse des résultats </li></ul></ul><ul><ul><li>sécurité des données </li></ul></ul><ul><ul><li>accessibilité comportementale </li></ul></ul>
  8. 8. Qualité des services web Couverture de la solution Utilisation Consommation Robustesse Temps de réponse Accessibilité Sécurité des données Qualité des résultats Relations Réseau Déploiement Conception et développement
  9. 9. Sommaire Assurer la qualité des services web <ul><li>La qualité pour les services web </li></ul><ul><li>Assurer la qualité des services web </li></ul><ul><ul><li>modélisation </li></ul></ul><ul><ul><li>validation </li></ul></ul><ul><ul><li>evaluation </li></ul></ul><ul><li>iTaC-QoS – une plateforme de validation des services web </li></ul><ul><li>Conclusion et travaux futurs </li></ul>
  10. 10. Assurer la qualité des services web Modélisation <ul><li>U nified M odeling L anguage </li></ul><ul><ul><li>répandu </li></ul></ul><ul><ul><li>expressif </li></ul></ul><ul><li>Trois parties du WS à couvrir </li></ul><ul><ul><li>interface proposée </li></ul></ul><ul><ul><li>comportements des opérations </li></ul></ul><ul><ul><li>compositions effectuées </li></ul></ul>Interface Comportement Composition WSDL WSDL-S OWL-S BPEL A comparative study of meta-model integration and interoperability in UML and Web Services (A. Staikopoulos et B. Bordard, 2005) Modeling semantic Web Services: a case study (C.J. Acuna et E. Marcos, 2006) génération WSDL et OWL-S grâce à UML Modeling crosscutting services with UML sequence diagrams (M. Deubler, 2005) MDA applied: from sequence diagrams to Web Services choreography (B. Bauer et J.P. Müller, 2004) Towards using UML 2 form modelling Web Service collaboration (G. Kramler et al. 2005) génération BPEL depuis UML UML-based service discovery framework (A. Zisman et G. Spanoudakis, 2006) remplacement WSDL par UML dans UDDI Representing Web Services with UML (E. Marcos et al. 2003) génération WSDL grâce à UML Automatic generation of service ontology from UML diagrams for semantic Web Services (J.H. Yang et I.J. Chung, 2006) génération OWL-S depuis UML Model-driven design and development of semantic Web Service applications (M. Brambilla et al. 2007) génération WSMO depuis BPMN & WebML
  11. 11. Assurer la qualité des services web Validation <ul><li>Divers domaines traités </li></ul><ul><li>vérification de propriétés (des services ou des compositions) </li></ul><ul><li>substitutivité </li></ul><ul><li>intégration d’un service dans une composition ou un site web </li></ul><ul><li>qualité de service </li></ul><ul><li>qualité fonctionnelle </li></ul><ul><li>robustesse </li></ul><ul><li>non régression </li></ul><ul><li>Trois types d’approches </li></ul><ul><li>vérification (model-checking, preuve …) </li></ul><ul><li>validation (test par mutations, test de charge, test fonctionnel …) </li></ul><ul><li>approche conjointe </li></ul>
  12. 12. Assurer la qualité des services web Evaluation <ul><li>Automatic conformance testing of web services (R. Heckel et L. Mariani, 2005) </li></ul><ul><li>The audition framework for testing web services interoperability (A. Bertolino et A. Polini, 2005) </li></ul><ul><li>Verification of web services using an enhanced UDDI server (W-T. Tsai et al. 2003) </li></ul>Fournisseur Client Service web 1 – Conception, création et déploiement 2 - Enregistrement 3 - Recherche 4 - Utilise 2 - Soumission 3 – Génération des tests 4 – Exécution des tests 5 - Recherche 6 - Utilisation
  13. 13. Assurer la qualité des services web Bilan <ul><li>Modélisation </li></ul><ul><ul><li>aucune méthode modélisant l’interface, les comportements et les compositions </li></ul></ul><ul><ul><li>modèles de conception </li></ul></ul><ul><li>Validation </li></ul><ul><ul><li>grand choix de méthodes (preuve, model-checking, test …) </li></ul></ul><ul><ul><li>test fonctionnel le plus adapté à nos besoins </li></ul></ul><ul><li>Évaluation </li></ul><ul><ul><li>utiliser UDDI afin d’assurer la qualité aux utilisateurs </li></ul></ul><ul><ul><li>méthodes trop binaires </li></ul></ul>
  14. 14. Sommaire iTaC-QoS – une plateforme de validation des services web <ul><li>La qualité pour les services web </li></ul><ul><li>Assurer la qualité des services web </li></ul><ul><li>iTaC-QoS – une plateforme de validation des services web </li></ul><ul><ul><li>méthode outillée </li></ul></ul><ul><ul><li>conception et traitement du modèle </li></ul></ul><ul><ul><li>gestion des tests </li></ul></ul><ul><ul><li>validation </li></ul></ul><ul><li>Conclusion et travaux futurs </li></ul>
  15. 15. iTaC-QoS Présentation de l’exemple <ul><li>Service web de blog </li></ul><ul><li>Couplé à une plate-forme de publication </li></ul><ul><li>Six opérations </li></ul><ul><ul><li>register </li></ul></ul><ul><ul><li>login </li></ul></ul><ul><ul><li>logout </li></ul></ul><ul><ul><li>writeDraft </li></ul></ul><ul><ul><li>readDraft </li></ul></ul><ul><ul><li>Publish </li></ul></ul><ul><li>Aucune composition, mais dépendances temporelles </li></ul><ul><li>Deux implémentations </li></ul>register login logout writeDraft readDraft publish
  16. 16. iTaC-QoS Présentation de la méthode A Model based Validation Framework for Web Services (V. Pretre, F. Bouquet, C. Lang - STV 2007) 1 – Conception, création, déploiement 2 – Enregistrement 3 – Génération des tests 4 – Exécution des tests 5 – Recherche 6 – Utilisation Fournisseur Client 7 – Envoi des notes 8 – Utilisation et modélisation 6 – Recherche 5 – Calcul des notes 3 – Extraction des relations 4 – Fusion et traitements du modèle 5 – Génération des tests 6 – Réification 7 - Exécution 8 – Calcul des notes 10 – Envoi des notes 9 – Recherche 11 – Utilisation Comment modéliser efficacement un WS ? Comment extraire les relations du modèle ? Comment gérer la composition de WS ? Comment réifier automatiquement les tests ? Comment évaluer la qualité d’un WS ? Comment obtenir des notes faciles à comprendre ? Modélisation Découverte des relations Fusion des modèles Génération des tests Réification Exécution Evaluation Comment exécuter les tests ? Comment générer les tests ? TD
  17. 17. iTaC-QoS Modélisation des services <ul><li>Modélisation UML (profil UML4ST) </li></ul><ul><li>Adaptation du modèle pour iTaC-QoS </li></ul><ul><ul><li>messages SOAP et l’interface du WS </li></ul></ul><ul><ul><li>données réelles </li></ul></ul><ul><ul><li>diagramme d’états-transitions complet </li></ul></ul><ul><ul><li>modélisation OCL défensive </li></ul></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation Structure données & interface Evolution temporelle Données Comportements Impossibilité de partager les tests et le modèle A subset of precise UML for model based testing (F. Bouquet, C. Grandpierre, B. Legeard, F. Peureux, N. Vacelet et M. Utting
  18. 18. iTaC-QoS Découverte des relations <ul><li>Nécessaire pour trois raisons </li></ul><ul><ul><li>calcul des notes </li></ul></ul><ul><ul><li>fusion des modèles </li></ul></ul><ul><ul><li>calcul de l’ordre de passage des tests </li></ul></ul><ul><li>Compositions : décrites dans les clauses OCL </li></ul><ul><li>Dépendances temporelles : modélisées dans un diagramme de séquences </li></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation User Blog register login User Blog login logout /* Composition du service « Captcha » */ self .captchaMsg.key = 123 and self .captchaRes = self .captcha.generateCaptcha( self.captchaMsg)
  19. 19. iTaC-QoS Fusion de modèles <ul><li>Nécessaire en cas de compositions </li></ul><ul><li>Impossible de modéliser un service externe </li></ul><ul><li>Quatre étapes </li></ul><ul><ul><li>transformation des diagramme d’états-transitions en clauses OCL </li></ul></ul><ul><ul><li>fusion des diagrammes de classes </li></ul></ul><ul><ul><li>fusion des clauses OCL (basée sur des méthodes classiques de compilation) </li></ul></ul><ul><ul><li>fusion des diagrammes d’instances </li></ul></ul><ul><li>Méthode innovante </li></ul><ul><ul><li>aucune méthode existante de fusion de modèle pour le test </li></ul></ul><ul><ul><li>autres méthodes dédiées à un type de diagramme </li></ul></ul>Automating UML Models Merge for Web Services Testing V. Pretre, F. Bouquet, C. Lang - iiWAS, 2008 V. Pretre, A. de Kermadec, F. Bouquet, C. Lang, F. Dadeau – IJWGS, 2009 (extended version) Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation
  20. 20. iTaC-QoS Couverture et stratégies de test <ul><li>Découverte des comportements ( cibles de test ) </li></ul><ul><ul><li>dans les clauses OCL </li></ul></ul><ul><ul><li>dans le diagramme d’états-transitions </li></ul></ul><ul><li>Génération des tests </li></ul><ul><ul><li>une séquence d’opérations activant la cible de test </li></ul></ul><ul><li>Calcul de l’ oracle </li></ul><ul><ul><li>état du système après l’exécution du test et réponses fournies par les opérations </li></ul></ul><ul><li>Établissement du verdict </li></ul><ul><ul><li>comparaison entre l’oracle et les résultats obtenus </li></ul></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation Publication réussie d’un message L’utilisateur numéro 1 est identifié sur le système Un identifiant de session lui est affectée L’opération login retourne {0, « Ok »} Le message 1 passe à l’état publié L’opération publish retourne {0, « Ok »} blogInstance1.currentUser = userInstance1 userInstance1.session = sessionInstance2 loginMsgInstance.res = 0 loginMsgInstance.msg = str::ok postInstance1.status = str::published publishMsgInstance.res = 0 publishMsgInstance.msg = str::ok login(‘user1’, ‘pwd1’) publish(‘user1’, ‘ssId2’, 1) self .user->exists(u|u.login = pPublishMsg.login and u.session.id = pPublishMsg.sessionId) self .post->exists(p| p.id = pPublish M sg.id and p.user.login = pPublishMsg.login) self .post->exists(p|p.id = pPublishMsg.id and p.status = draft)
  21. 21. iTaC-QoS Réification des tests <ul><li>Génération d’une bibliothèque de connexion au WS grâce à wsdl2java </li></ul><ul><li>Transformation du code XML fourni par TD en code Java </li></ul><ul><li>Deux problèmes subsistent </li></ul><ul><ul><li>ordre des opérations au sein d’un test </li></ul></ul><ul><ul><li>oracle fourni ne permet de calculer que des résultats binaires </li></ul></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation Service sous test Bibliothèque de connexion WSDL Tests java Export TD Banc de test Couche d’adaptation wsdl2xmi iTaC-QoS
  22. 22. iTaC-QoS Réification des tests – réorganisation des scripts de test <ul><li>Ordre des opérations </li></ul><ul><li>Deux raisons </li></ul><ul><ul><li>échange entre opérations </li></ul></ul><ul><ul><li>données non calculables </li></ul></ul><ul><li>Non décelables dans le modèle </li></ul><ul><li>Ajout d’informations dans le diagramme de classes </li></ul><ul><ul><li>[uncomputable] </li></ul></ul><ul><ul><li>[producedBy] operation[attr] </li></ul></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation readDraft.setLogin(« user2 ») readDraft.setSessionId(« ssId3 ») login.setPassword(« pwd2 ») login.setLogin(« user2 ») loginResponse = blog.login(login) readDraftResponse = blog.readDraft(readDraft) readDraft.setLogin(« user2 ») login.setPassword(« pwd2 ») login.setLogin(« user2 ») loginResponse = blog.login(login) readDraft.setSessionId(« ssId3 ») readDraftResponse = blog.readDraft(readDraft) readDraft.setLogin(« user2 ») login.setPassword(« pwd2 ») login.setLogin(« user2 ») loginResponse = blog.login(login) readDraft.setSessionId( loginResponse.getSessionId()) readDraftResponse = blog.readDraft(readDraft) Exemple de test de l’opération readDraft loginResponse resCode msg sessionId readDraftMsg login sessionId draftId [producedBy]login[sessionId] [uncomputable]
  23. 23. iTaC-QoS Réification des tests – Calcul du verdict <ul><li>Problème des résultats de tests </li></ul><ul><li>Les tests ne peuvent être fournis aux utilisateurs </li></ul><ul><ul><li>présence de données « sensibles » </li></ul></ul><ul><ul><li>risque de dévoiler des failles </li></ul></ul><ul><li>Ne prend pas en compte les niveaux de gravité des échecs </li></ul><ul><li>Test de lecture du message d’un autre utilisateur </li></ul><ul><ul><li>l’opération produit l’erreur « Accès interdit » </li></ul></ul><ul><ul><li>l’opération produit l’erreur « Message inconnu » </li></ul></ul><ul><ul><li>l’opération renvoie le message demandé </li></ul></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation
  24. 24. iTaC-QoS Réification des tests - Verdicts possibles Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation Échec critique Résultat Erreur Échec Résultat différent de « r » Résultat « r » Échec bénin Erreur Résultat Échec bénin Erreur différente de « e » Erreur « e » Réussite partielle Sous-ensemble de « r » Résultat « r » Réussite Erreur « e » Erreur « e » Réussite Résultat « r » Résultat « r » Classification Résultat obtenu Résultat attendu
  25. 25. iTaC-QoS Exécution des tests <ul><li>Calcul du plan de test </li></ul><ul><li>Deux types de test </li></ul><ul><ul><li>état final = état initial </li></ul></ul><ul><ul><li>état final ≠ état initial </li></ul></ul><ul><li>Certains tests ne peuvent être exécutés avant d’autres </li></ul><ul><ul><li>lit le contenu du message « a » </li></ul></ul><ul><ul><li>publie le message « a » </li></ul></ul><ul><li>Exécution 1 – 2 -> OK </li></ul><ul><li>Exécution 2 – 1 -> Faux-positif </li></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation État initial État post-test État cible login(…) (préambule) writeDraft(…) (corps) writeDraft(…) logout(…) (postambule)
  26. 26. iTaC-QoS Evaluation des services web <ul><li>Attribution de notes aux opérations </li></ul><ul><ul><li>note unitaire : au niveau de l’opération testée </li></ul></ul><ul><ul><li>note de relation : au niveau des relations </li></ul></ul><ul><ul><li>note détaillée : synthèse des précédentes </li></ul></ul><ul><li>Classification des tests en catégories </li></ul><ul><ul><li>FIA : identification et authentification </li></ul></ul><ul><ul><li>FPR : vie privée de l’utilisateur </li></ul></ul><ul><ul><li>FDP : données privées de l’utilisateur </li></ul></ul><ul><ul><li>FCT : fonctionnalités métiers du service </li></ul></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation Critères Communs
  27. 27. iTaC-QoS Evaluation des WS - Classification des tests <ul><li>A posteriori </li></ul><ul><ul><li>classification des tests après génération </li></ul></ul><ul><ul><li>long et fastidieux </li></ul></ul><ul><li>A priori </li></ul><ul><ul><li>classification des comportements à la modélisation </li></ul></ul><ul><ul><li>méthode plus rapide </li></ul></ul><ul><ul><li>risque d’avoir des comportements non classés </li></ul></ul>Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation /* Teste si l’utilisateur est identifié */ if (…) then /* Teste si le message existe */ if (…) then /* Teste que l’utilisateur est propriétaire */ if (…) then … self.res.content = self.blogpost.content and self.res.resCode = 0 and self.res.resCode.errorChannel = « ok » /*@REQ: READ_OK_1, READ_FCT_1 @*/ else self.res.resCode = -1 and self.res.errorChannel = « Access denied » /*@REQ: READ_ERR_1, READ_FPR_1, READ_FDP_1 @*/ endif and … Post-condition de l’opération readDraft
  28. 28. iTaC-QoS Evaluation des WS - Présentation aux utilisateurs Using Common Criteria to Assess Quality of Web Services V. Pretre, F. Bouquet, C. Lang - WebTest, 2009 Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation Note unitaire Note de relation
  29. 29. Sommaire Conclusion et travaux futurs <ul><li>La qualité pour les services web </li></ul><ul><li>Assurer la qualité des services web </li></ul><ul><li>iTaC-QoS – une plateforme de validation des services web </li></ul><ul><li>Conclusion et travaux futurs </li></ul><ul><ul><li>Conclusion </li></ul></ul><ul><ul><li>Travaux futurs </li></ul></ul>
  30. 30. Conclusion et travaux futurs Synthèse 1 – Conception, création, déploiement et modélisation 2 - Enregistrement Client 3 – Extraction des relations 4 – Fusion et traitements du modèle 5 – Génération des tests 6 – Réification 7 - Exécution 8 – Calcul des notes 10 – Envoi des notes 9 – Recherche 11 - Utilisation Comment modéliser un service web ? Comment extraire les relations du modèle ? Comment gérer les compositions ? Comment réifier automatiquement les tests ? Comment exécuter les tests ? Comment évaluer un service web ? Comment fournir des notes simples à comprendre ? TD
  31. 31. Conclusion et travaux futurs Synthèse <ul><li>Points forts </li></ul><ul><li>Méthode : générique, basée sur des standards ouverts, évaluation fine des WS </li></ul><ul><li>iTaC-QoS : automatisé, sources ouvertes ( code.google.com/p/itacqos/ ) , facile d’utilisation ( itacqos.alwaysdata.net ) </li></ul><ul><li>Général : classification des tests, résultats des tests </li></ul><ul><li>Points faibles </li></ul><ul><li>Couverture partielle de la qualité </li></ul><ul><li>Testabilité des services web : </li></ul><ul><ul><li>prédictibilité </li></ul></ul><ul><ul><li>observabilité </li></ul></ul><ul><li>Repose sur la confiance dans le fournisseur </li></ul>
  32. 32. Conclusion et travaux futurs Travaux futurs <ul><li>Valider la couverture du modèle </li></ul><ul><li>Gérer les compositions dynamiques </li></ul><ul><li>Intégrer iTaC-QoS aux plateformes de mash-up </li></ul><ul><ul><li>manuellement </li></ul></ul><ul><ul><li>évaluation de la couverture de code </li></ul></ul><ul><ul><li>WSDL (existe dans iTaC-QoS) </li></ul></ul><ul><ul><li>WSDL-S / OWL-S </li></ul></ul><ul><ul><li>notion sémantique </li></ul></ul><ul><ul><li>sélection du service à composer </li></ul></ul><ul><ul><li>conserver la dynamicité et le suivi des notes </li></ul></ul><ul><ul><li>simple d’utilisation </li></ul></ul><ul><ul><li>repose partiellement sur les services web </li></ul></ul><ul><ul><li>valider l’interface ou le service utilisé </li></ul></ul>1 – Création et modélisation UML + WSDL UML + WSDL-S UML + OWL-S 2 - Enregistrement 3 - Recherche 4 - Filtre 5 - Sélection WSDL-S / OWL-S UML Tests 1 – Générer des tests 2 – Animer et évaluer la couverture 1 - Transformation 2 - Bisimulation
  33. 33. Questions <ul><li>Merci de votre attention … </li></ul>
  34. 34. Web services certification UML models used - OCL code <ul><li>Code OCL: </li></ul><ul><li>Représente le comportement des opérations </li></ul><ul><li>Modélisation défensive </li></ul><ul><ul><li>pas de pré-conditions </li></ul></ul><ul><ul><li>gestion des erreurs dans les post-conditions </li></ul></ul><ul><ul><li>permet de test des cas d’erreurs </li></ul></ul>Pre-condition : self.mission.status = waitingValidation and self.mission.employee <> self.user Post-condition : if pAnswer then self.mission.status = validated else self.mission.status = refused endif if then if then result = ok else result = autoValidation endif else result = unvalidableMission endif
  35. 35. Questions Exécution des tests <ul><li>Tous les tests replacent le service dans son état initial </li></ul><ul><li>Vagues de tests selon les relations </li></ul><ul><li>Certains tests ne replacent pas le service dans son état initial </li></ul><ul><li>Découverte des relations entre les tests </li></ul><ul><li>Extraction du graphe de relation </li></ul><ul><li>Calcul de l’ordre de passage </li></ul>register login logout writeDraft readDraft publish test13 test10 test2 test3 test4 test5 test6 test7 test8 test1 test11 test12
  36. 36. Questions Fusion modèles – diagrammes d‘états-transitions <ul><li>Mise à plat du diagramme </li></ul><ul><ul><li>suppression des transitions automatiques </li></ul></ul><ul><ul><li>suppression des états composites </li></ul></ul><ul><li>Création d’un classe énuméréé </li></ul><ul><li>Création de 4-uplets </li></ul><ul><ul><li>état quitté </li></ul></ul><ul><ul><li>garde </li></ul></ul><ul><ul><li>déclencheur </li></ul></ul><ul><ul><li>état atteint </li></ul></ul><ul><li>Modifications du code OCL </li></ul><ul><li>Suppression du diagramme </li></ul>serviceStarted statusUpdated userLoggedIn login() logout() updateStatus() <serviceStarted, , login, serviceWaiting> <serviceWaiting, , updateStatus, serviceWaiting> <serviceWaiting, , logout, serviceStarted > if (( self .state = States::serviceStarted) then … /* Post-condition originale */ if ( self .state = States::serviceStarted) then self .state = States::serviceWaiting endif endif serviceWaiting States serviceStarted serviceWaiting
  37. 37. Questions Fusion modèles – diagramme de classes <ul><li>Découverte des messages SOAP et de l’interface du WS (WSDL) </li></ul><ul><li>Renommage des autres classes </li></ul><ul><li>Déplacement dans un diagramme commun </li></ul><ul><li>Reconnaissance des classes communes </li></ul><ul><li>Fusion des classes </li></ul>OnlineStore register() login() search() logout() ParcelService login() getPrice() logout() ParcelServiceLoginMsg login password ParcelService login() getPrice() logout() ParcelServiceLoginMsg login password 1 2 User id login password User id login password
  38. 38. Questions Fusion modèles – OCL <ul><li>Mise à jour des références à « self » </li></ul><ul><li>Mise à jour des paramètres </li></ul><ul><li>Déplacement du code </li></ul><ul><li>Création du lien « result » -> appel </li></ul>self .a = param1 and self .b = param2 and if ( self .a > self .b) then result = self .a else result = self .b endif if ( self .ws2.operation(self.y, self .x) > 1) then self . ws2 .a = param1 and self . ws2 .b = param2 and if ( self . ws2 .a > self . ws2 .b) then result = self . ws2 .a else result = self . ws2 .b endif self .ws2.a = self.y and self .ws2.b = self.x and if ( self .ws2.a > self .ws2.b) then result = self .ws2.a else result = self .ws2.b endif self .ws2.a = self .y and self .ws2.b = self .x and if ( self .ws2.a > self .ws2.b) then result = self .ws2.a else result = self .ws2.b endif self .ws2.a = self .y and self .ws2.b = self .x and if ( self .ws2.a > self .ws2.b) then self.tmp = self .ws2.a else self.tmp = self .ws2.b endif if ( self.tmp > 1) then
  39. 39. <ul><li>Répercussion des modifications du diagramme de classes </li></ul><ul><li>Déplacement dans un diagramme commun </li></ul><ul><li>Fusion des instances représentant </li></ul><ul><ul><li>l’interface des WS </li></ul></ul><ul><ul><li>Les messages SOAP </li></ul></ul><ul><li>Accord avec la cardinalité </li></ul>Questions Fusion modèles – diagramme de classes lr1::ParcelServiceLoginResponse lr1::ParcelServiceLoginResponse ol1::OnlineStore ps1::ParcelService ps1::ParcelService

×