1/33
Validation des services web à l’aide de la génération automatique de tests
Vincent Pretre18 mars 2009
Jury :
Philippe Balbiani Rapporteur IRIT, Toulouse
Fabrice Bouquet Encadrant LIFC, Besançon
Christophe Lang Encadrant LIFC, Besançon
Jean-Christophe Lapayre Examinateur LIFC, Besançon
Pierre-Alain Muller Examinateur UHA, Mulhouse
Ioannis Parissis Rapporteur INP/Esisar, Grenoble
2/33
Sommaire
La qualité pour les services web (WS)
Assurer la qualité des WS
iTaC-QoS – une plateforme de validation des WS
Conclusion et travaux futurs
3/33
SommaireLa qualité pour les services web
La qualité pour les services web (WS)
introduction aux WS
critères de qualité
facteurs de qualité
Assurer la qualité des WS
iTaC-QoS – une plateforme de validation des WS
Conclusion et travaux futurs
4/33
La qualité pour les services webIntroduction aux services web
Fournisseur
ClientService web
XML1 – Conception2 – Développement3 – Déploiement
6 –
4 - Déclaration
Web Service Description Language
Simple Object Access Protocol
Universal Description,Discovery and Integration
Composition
5 – Recherche
InternetUtilisation
recherche
4 –
5/33
Justesse des résultatscorrects
complets
Accessibilitéfonctionnelle
comportementale
Sécurité des donnéesvie privée des utilisateurs
données privées
La qualité pour les services webSix critères de qualité
Temps de réponsedépend de l’utilisateur et du type de service
Robustessecapacité à résister aux attaques
capacité à résister aux erreurs
tenue à la charge
Consommationbande-passante
temps machine
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 …
Assemblage pano
Attente bus
10 sec
2 min
10 sec
5 min
FPR (Privacy), FDP (Data privacy)
FTA (Access)
movieDatabase.details(112) → {‘Les tontons flingueurs’, 1963, ‘Lautner’}
FRU (Ressource Utilisation)
FPT (Protection)
6/33
Qualité des services webFacteurs de qualité
Conception et développement
Déploiement
Utilisation
Réseau Relations
Qualité des résultats
Sécurité des données
Accessibilité
Temps de réponse
Robustesse
Consommation
7/33
Qualité des services webProblématique traitée
Problématique : comment être sûr de la qualité des services découverts ?
Solution apportéeajout d’une notion de qualité à UDDI
utilisation du test à partir de modèle
Domaines couvertsjustesse des résultats
sécurité des données
accessibilité comportementale
8/33
Qualité des services webCouverture de la solution
Conception et développement
Déploiement
Utilisation
Réseau Relations
Qualité des résultats
Sécurité des données
Accessibilité
Temps de réponse
Robustesse
Consommation
9/33
SommaireAssurer la qualité des services web
La qualité pour les services web
Assurer la qualité des services web
modélisation
validation
evaluation
iTaC-QoS – une plateforme de validation des services web
Conclusion et travaux futurs
10/33
Assurer la qualité des services webModélisation
Unified Modeling Languagerépandu
expressif
Trois parties du WS à couvririnterface proposée
comportements des opérations
compositions effectuées
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)
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 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
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
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 UMLModel-driven design and development of semantic Web Service applications (M. Brambilla et al. 2007)
génération WSMO depuis BPMN & WebML
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 UMLModel-driven design and development of semantic Web Service applications (M. Brambilla et al. 2007)
génération WSMO depuis BPMN & WebML
11/33
Assurer la qualité des services webValidation
Divers domaines traitésvérification de propriétés (des services ou des compositions)substitutivitéintégration d’un service dans une composition ou un site webqualité de servicequalité fonctionnellerobustessenon régression
Trois types d’approchesvérification (model-checking, preuve …)validation (test par mutations, test de charge, test fonctionnel …)approche conjointe
12/33
Assurer la qualité des services webEvaluation
Automatic conformance testing of web services (R. Heckel et L. Mariani, 2005)The audition framework for testing web services interoperability (A. Bertolino et A. Polini,
2005)Verification of web services using an enhanced UDDI server (W-T. Tsai et al. 2003)
Automatic conformance testing of web services (R. Heckel et L. Mariani, 2005)The audition framework for testing web services interoperability (A. Bertolino et A. Polini,
2005)Verification of web services using an enhanced UDDI server (W-T. Tsai et al. 2003)
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/33
Assurer la qualité des services webBilan
Modélisationaucune méthode modélisant l’interface, les comportements et les compositions
modèles de conception
Validationgrand choix de méthodes (preuve, model-checking, test …)
test fonctionnel le plus adapté à nos besoins
Évaluationutiliser UDDI afin d’assurer la qualité aux utilisateurs
méthodes trop binaires
14/33
SommaireiTaC-QoS – une plateforme de validation
des services web
La qualité pour les services web
Assurer la qualité des services web
iTaC-QoS – une plateforme de validation des services web
méthode outillée
conception et traitement du modèle
gestion des tests
validation
Conclusion et travaux futurs
15/33
iTaC-QoSPrésentation de l’exemple
Service web de blogCouplé à une plate-forme de publicationSix opérations
registerloginlogoutwriteDraftreadDraftPublish
Aucune composition, mais dépendances temporellesDeux implémentations
register login
logout
writeDraft
readDraft
publish
16/33
iTaC-QoSPré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 destests
5 – Recherche
6 – Utilisation
Fournisseur Client
7 – Envoi des notes
8 – Utilisationet modélisation
6 – Recherche
5 – Calcul des notes
TD
3 – Extraction des relations
4 – Fusion et traitements du modèle
5 – Génération des tests6 – 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 ?
17/33
iTaC-QoSModélisation des services
Modélisation UML (profil UML4ST)
Adaptation du modèle pour iTaC-QoS1. messages SOAP et
l’interface du WS
2. données réelles
3. diagramme d’états-transitions complet
4. modélisation OCL défensive
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
A subset of precise UML for model based testing (F. Bouquet, C. Grandpierre, B. Legeard, F. Peureux, N. Vacelet et M. Utting
18/33
iTaC-QoSDécouverte des relations
Nécessaire pour trois raisons
calcul des notes
fusion des modèles
calcul de l’ordre de passage des tests
Compositions : décrites dans les clauses OCL
Dépendances temporelles : modélisées dans un diagramme de séquences
Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation
User Blogregister
login
User Bloglogin
logout
/* Composition du service « Captcha » */self.captchaMsg.key = 123 andself.captchaRes = self.captcha.generateCaptcha(
self.captchaMsg)
19/33
iTaC-QoSFusion de modèles
Nécessaire en cas de compositionsImpossible de modéliser un service externeQuatre étapes1. transformation des diagramme d’états-transitions en clauses OCL2. fusion des diagrammes de classes3. fusion des clauses OCL (basée sur des méthodes classiques de
compilation)4. fusion des diagrammes d’instances
Méthode innovanteaucune méthode existante de fusion de modèle pour le testautres méthodes dédiées à un type de diagramme
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/33
iTaC-QoSCouverture et stratégies de test
1. Découverte des comportements (cibles de test)
dans les clauses OCLdans le diagramme d’états-transitions
2. Génération des testsune séquence d’opérations activant la cible de test
3. Calcul de l’oracleétat du système après l’exécution du test et réponses fournies par les opérations
4. Établissement du verdictcomparaison entre l’oracle et les résultats obtenus
self.user->exists(u|u.login = pPublishMsg.login and u.session.id = pPublishMsg.sessionId)
self.post->exists(p|p.id = pPublishMsg.id and p.user.login = pPublishMsg.login)
self.post->exists(p|p.id = pPublishMsg.id and p.status = draft)
login(‘user1’, ‘pwd1’)
publish(‘user1’, ‘ssId2’, 1)
blogInstance1.currentUser = userInstance1
userInstance1.session = sessionInstance2
loginMsgInstance.res = 0
loginMsgInstance.msg = str::ok
postInstance1.status = str::published
publishMsgInstance.res = 0
publishMsgInstance.msg = str::ok
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èmeUn identifiant de session lui est affectéeL’opération login retourne {0, « Ok »}Le message 1 passe à l’état publiéL’opération publish retourne {0, « Ok »}
21/33
iTaC-QoSRéification des tests
Génération d’une bibliothèque de connexion au WS grâce à wsdl2java
Transformation du code XML fourni par TD en code Java
Deux problèmes subsistentordre des opérations au sein d’un test
oracle fourni ne permet de calculer que des résultats binaires
Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation
Servicesous test
Bibliothèque deconnexion
WSDL
Tests javaExport TD
Banc de test
Couche d’adaptation
wsdl2xmi
iTaC-QoS
22/33
iTaC-QoSRéification des tests – réorganisation des
scripts de testOrdre des opérations
Deux raisonséchange entre opérations
données non calculables
Non décelables dans le modèle
Ajout d’informations dans le diagramme de classes
[uncomputable]
[producedBy]operation[attr]
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
resCodemsgsessionId
readDraftMsg
loginsessionIddraftId
[producedBy]login[sessionId]
[uncomputable]
23/33
iTaC-QoSRéification des tests – Calcul du verdict
Problème des résultats de testsLes tests ne peuvent être fournis aux utilisateurs
présence de données « sensibles »risque de dévoiler des failles
Ne prend pas en compte les niveaux de gravité des échecsTest de lecture du message d’un autre utilisateur1. l’opération produit l’erreur « Accès interdit »2. l’opération produit l’erreur « Message inconnu »3. l’opération renvoie le message demandé
Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation
24/33
iTaC-QoSRéification des tests - Verdicts possibles
Résultat attendu Résultat obtenu Classification
Résultat « r » Résultat « r » Réussite
Erreur « e » Erreur « e » Réussite
Résultat « r » Sous-ensemble de « r » Réussite partielle
Erreur « e » Erreur différente de « e » Échec bénin
Résultat Erreur Échec bénin
Résultat « r » Résultat différent de « r » Échec
Erreur Résultat Échec critique
Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation
25/33
iTaC-QoSExécution des tests
Calcul du plan de test
Deux types de testétat final = état initial
état final ≠ état initial
Certains tests ne peuvent être exécutés avant d’autres1. lit le contenu du message «
a »
2. publie le message « a »
Exécution 1 – 2 → OK
Exécution 2 – 1 → Faux-positif
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/33
iTaC-QoS Evaluation des services web
Attribution de notes aux opérations
note unitaire : au niveau de l’opération testée
note de relation : au niveau des relations
note détaillée : synthèse des précédentes
Classification des tests en catégories
FIA : identification et authentification
FPR : vie privée de l’utilisateur
FDP : données privées de l’utilisateur
FCT : fonctionnalités métiers du service
Modélisation – Découverte des relations – Fusion des modèles – Génération des tests – Réification – Exécution - Evaluation
Critères Communs
27/33
iTaC-QoSEvaluation des WS - Classification des tests
A posterioriclassification des tests après génération
long et fastidieux
A prioriclassification des comportements à la modélisation
méthode plus rapide
risque d’avoir des comportements non classés
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/33
iTaC-QoSEvaluation 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/33
SommaireConclusion et travaux futurs
La qualité pour les services web
Assurer la qualité des services web
iTaC-QoS – une plateforme de validation des services web
Conclusion et travaux futurs
Conclusion
Travaux futurs
30/33
Conclusion et travaux futursSynthèse
1 – Conception, création, déploiement et modélisation
2 - EnregistrementClient
TD
3 – Extraction des relations
4 – Fusion et traitements du modèle
5 – Génération des tests6 – 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 ?
31/33
Conclusion et travaux futursSynthèse
Points fortsMéthode : générique, basée sur des standards ouverts, évaluation fine des WSiTaC-QoS : automatisé, sources ouvertes (code.google.com/p/itacqos/), facile d’utilisation (itacqos.alwaysdata.net)
Général : classification des tests, résultats des tests
Points faiblesCouverture partielle de la qualitéTestabilité des services web :
prédictibilitéobservabilité
Repose sur la confiance dans le fournisseur
32/33
Conclusion et travaux futursTravaux futurs
Valider la couverture du modèle
Gérer les compositions dynamiques
Intégrer iTaC-QoS aux plateformes de mash-up
manuellement évaluation de la couverture de code WSDL (existe dans iTaC-QoS) WSDL-S / OWL-S
notion sémantique sélection du service à composer conserver la dynamicité et le suivi des notes
simple d’utilisation repose partiellement sur les services web valider l’interface ou le service utilisé
1 – Création et modélisation
UML + WSDLUML + WSDL-SUML + OWL-S
2 - Enregistrement
3 - Recherche
4 - Filtre
5 - Sélection
WSDL-S / OWL-S UML
Tests
1 – Générerdes tests
2 – Animer et évaluer la couverture
1 - Transformation
2 - Bisimulation
33/33
Questions
Merci de votre attention …
34/33
Web services certificationUML models used - OCL code
Code OCL:Représente le comportement des opérations
Modélisation défensivepas de pré-conditions
gestion des erreurs dans les post-conditions
permet de test des cas d’erreurs
Pre-condition:
self.mission.status = waitingValidationand
self.mission.employee <> self.user
Post-condition:
if pAnswer then self.mission.status = validatedelse self.mission.status = refusedendif
if thenif then
result = ok else result = autoValidation endif else result = unvalidableMissionendif
35/33
QuestionsExécution des tests
Tous les tests replacent le service dans son état initialVagues de tests selon les relations
Certains tests ne replacent pas le service dans son état initialDécouverte des relations entre les testsExtraction du graphe de relationCalcul de l’ordre de passage
register login
logout
writeDraft
readDraft
publish
test13
test10
test2
test3
test4
test5
test6
test7
test8
test1
test11 test12
36/33
QuestionsFusion modèles – diagrammes d‘états-
transitionsMise à plat du diagramme
suppression des transitions automatiquessuppression des états composites
Création d’un classe énumérééCréation de 4-uplets
état quittégardedéclencheurétat atteint
Modifications du code OCLSuppression du diagramme
serviceStarted
serviceWaiting statusUpdated
userLoggedIn
login() logout()
updateStatus()
States
serviceStartedserviceWaiting
<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
37/33
QuestionsFusion modèles – diagramme de classes
Découverte des messages SOAP et de l’interface du WS (WSDL)Renommage des autres classesDéplacement dans un diagramme communReconnaissance des classes communesFusion des classes
OnlineStore
register()login()search()logout()
User
idloginpassword
ParcelService
login()getPrice()logout()
ParcelServiceLoginMsg
loginpassword
ParcelService
login()getPrice()logout()
User
idloginpassword ParcelServiceLoginMsg
loginpassword
1
2
38/33
QuestionsFusion modèles – OCL
Mise à jour des références à « self »
Mise à jour des paramètres
Déplacement du code
Création du lien « result » → appel
self.a = param1 andself.b = param2 andif (self.a > self.b) then result = self.aelse result = self.bendif
if (self.ws2.operation(self.y, self.x) > 1) then
self.ws2.a = param1 andself.ws2.b = param2 andif (self.ws2.a > self.ws2.b) then result = self.ws2.aelse result = self.ws2.bendif
self.ws2.a = self.y andself.ws2.b = self.x andif (self.ws2.a > self.ws2.b) then result = self.ws2.aelse result = self.ws2.bendif
self.ws2.a = self.y andself.ws2.b = self.x andif (self.ws2.a > self.ws2.b) then result = self.ws2.aelse result = self.ws2.bendif
self.ws2.a = self.y andself.ws2.b = self.x andif (self.ws2.a > self.ws2.b) then self.tmp = self.ws2.aelse self.tmp = self.ws2.bendif
if (self.tmp > 1) then
39/33
Répercussion des modifications du diagramme de classesDéplacement dans un diagramme communFusion des instances représentant
l’interface des WSLes messages SOAP
Accord avec la cardinalité
ps1::ParcelService
lr1::ParcelServiceLoginResponse
ps1::ParcelService
lr1::ParcelServiceLoginResponse
ol1::OnlineStore
QuestionsFusion modèles – diagramme de classes