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

Post on 22-Jun-2015

407 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides from my Ph.D defensis (in french)

TRANSCRIPT

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

top related