Contacts

Tester les services Web. Test de l'API de savon. Différents formats XSD -

Utilisation du programme Services Web. Outil de validation pour WSDL et SOAP

Apparemment, avec l'arrivée de nouvelles technologies et de nouvelles normes, telles que XML et HTTP, Web Services fournissait leur place dans le panthéon de l'innovation sur Internet. Mais comment cette innovation a-t-elle survécu?

Le concept principal des services Web peut être traqué aux États-Unis jusqu'au milieu des années 1960. Dans l'industrie des transports, par exemple, dans les sociétés ferroviaires et maritimes, un nouveau concept permettant d'échanger des données électroniques entre ordinateurs, développés à la technologie EDI (échange de données électroniques - échange de données électroniques) a été présentée. Pour la première fois, j'ai entendu parler d'EDI de professeur d'une école de commerce en 1980.

En 1996, l'Institut national des normes et technologies des États-Unis a annoncé la norme pour EDI dans les publications de normes de traitement des informations fédérales (FIPS PUB 161-2). Selon la spécification publiée, EDI est la norme de partage des messages strictement formatés entre ordinateurs. Le traitement des messages reçus est effectué uniquement avec un ordinateur et ces messages ne sont généralement pas destinés à être interprétés par une personne. C'est exactement ce que les services Web sont engagés, sauf que, au milieu des années 1960, n'existent pas XML, Internet et le World Wide Web.

Pour ceux qui ne connaissent pas très bien les services Web, j'envisagerai brièvement les définitions et les composants principaux des services Web.

Quels sont les services Web

Le service Web est système logicielConçu pour prendre en charge les interactions intermagraphes entre les ressources informatiques de réseau et utiliser des messages de savon (protocole d'accès d'objet simple) défini par le consortium de consortium Warl Wide Web.

Protocole d'accès d'objet simple (SOAP) est un simple protocole extensible pour lequel la messagerie partagée et dactylographiée est échangée dans un environnement réseau distribué décentralisé. Les messages de savon sont enregistrés dans une langue de balisage extensible (XML) format de langue - format de texte simple et flexible qui prenait le démarrage du langage de balisage généralisé standard (SGML), qui a été développé par l'Organisation internationale d'organisation de normalisation (ISO 8879: 1986).

Services Web Description Langue (WSDL) est basée sur Langue XMLqui décrit l'interface des services Web.

Que se passe-t-il lors de l'échange de messages de savon erronés? Que se passerait-il si le message de savon erroné a été traité sans avertissement et a même été utilisé pour générer des informations conçues pour prendre une décision?

En pratique, il est impossible de dire, correctement ou aucune donnée dans le message SOAP. Cependant, vous pouvez vérifier correctement le message SOAP, afficher sa définition de l'interface ou WSDL.

Dans la vie réelle, des problèmes de débogage dans les messages SOAP sont très difficiles. S'il y a une erreur dans le message SOAP, le code de réponse HTTP 500 est reçu à partir du serveur de service Web. Les serveurs de service Web ne fournissent pas d'informations détaillées sur la partie du message SOAP. Vous pouvez rencontrer même la pire situation lorsque les réponses de savon correctes sont acceptées à partir du serveur de services Web sans aucun message d'erreur, ni vous ni vos serveurs de service Web ne peuvent comprendre les problèmes de vos requêtes et de vos réponses. Par exemple, vous vouliez demander aux devis actuels de la société B, mais envoyé un message de savon au serveur de service Web avec des balises correctes écrites. Le serveur de service Web peut ignorer les mauvaises balises et fournir la valeur par défaut dans le message SOAP de réponse, par exemple, la citation des stocks de la société. S'il reste inaperçu, les conséquences peuvent être désastreuses.

Les problèmes de ce type peuvent être empêchés d'avance avec outil web Outil de validation des services pour WSDL et SOAP. Il vous permet de vérifier l'exactitude des messages de savon à l'aide de la langue de la définition de service Web (WSDL), avant même de déployer des applications à l'aide d'un service Web. Le programme analyse la syntaxe et l'exactitude de vos messages SOAP avec WSDL et indique des problèmes, rapportant en détail des erreurs et des lignes. En conséquence, vous ne recevrez plus de messages ennuyeux HTTP 500. Les messages SOAP sont-ils cryptés? Pas de problème. Le programme les décide et vérifie votre exactitude des messages SOAP déchiffrés.

Ce programme a été créé pour aider les employés à la prise en charge des services Web IBM, de manière décisive liée aux problèmes de service Web sur le serveur d'applications IBM® WebSphere, rapporté par des clients du monde entier. Le programme est conçu pour vérifier l'exactitude des messages SOAP. Si le message SOAP a une signature numérique, le programme le vérifiera. Utilisation de l'outil de validation des services Web pour WSDL et SOAP, vous pouvez même envoyer des messages de savon aux serveurs de services Web et recevoir des messages de savon de réponse. Le programme a été créé afin d'éliminer les problèmes d'exploitation industrielle grâce à son utilisation au début du développement, ainsi que de réduire le temps nécessaire pour résoudre les problèmes découlant de l'opération.

Nous allons créer un service Web très simple. D'abord, nous allons créer un simple Java ™ Développer. Après avoir vérifié l'application Java, nous utilisons IBM Rational Application Developer pour WebSphere Software générera un service Web. Ensuite, nous apportons des modifications au service Web généré. Enfin, nous utilisons un outil de validation des services Web pour WSDL et SOAP pour créer, vérifier, transmettre et recevoir des messages de savon.

Un service Web simple peut être créé à l'aide du programme de développeur d'applications Rational IBM pour WebSphere Software. Les services Web peuvent être créés de deux manières:

  1. Développement "Top Down" (Top-Down) Développement dans lequel les classes Java implémentant des services Web sont générées à partir de WSDL.
  2. Développement "Bottom-up" (Bottom-up), dans lequel le service Web est généré à partir du composant Java Bean ou de la composante de haricots Java d'entreprise.

Dans l'exemple suivant, nous mettons en œuvre un service Web à l'aide de la méthode de développement à partir de bas en haut. D'abord, nous allons créer une simple application Java. Ensuite, nous générerons le service Web de Java Bean Composant de l'application Java à l'aide du programme de développeur d'applications Rational IBM pour WebSphere Software.

Création d'une application Java

Nous allons d'abord créer une application Java, une salutation exceptionnelle. Si le nom n'est pas spécifié, l'application renvoie le texte "Bonjour, mon pote!". Si le nom est spécifié, l'application renvoie le texte "Bonjour", suivi de ce nom. Vous trouverez ci-dessous le code d'application Java du DemoweSservice situé dans le paquet de démonstration. La méthode Hello () renvoie une chaîne en fonction du nom.

Page 1. DemoweService.java.
/ * * @Author: Jinwoo Hwang * Copyright 2010 IBM Corporation * / Démo de forfait; Classe publique DemoweService (nom de cordes) (si (nom \u003d\u003d null) retourner "Bonjour, mon pote!"; Sinon retour "Bonjour," + nom + "!";))

Essais d'application Java

Il est très important de tester l'application Java avant de créer un service Web à partir de celui-ci. Pour démarrer l'application, vous pouvez écrire une classe avec la méthode principale (). Vous pouvez également utiliser la fonctionnalité du client de test universel fourni par le produit GMM Rational Application Developer V7 pour des tests rapides sans écrire de code de test. Il suffit de sélectionner le client de test universel dans le menu contextuel de la classe Java pour lancer le client de test.

  1. Dans le client de test universel se développer Objets\u003e DemoweService..
  2. Sélectionnez la méthode salut..
  3. Entrez une chaîne ou votre nom sur le terrain Valeur et cliquez sur Invoquer.

Vous pouvez également effectuer un test en spécifiant le paramètre NULL et voyez ce qui se passe. Si le paramètre NULL est transmis à la méthode Hello (), la chaîne "Bonjour, mon pote!" Est retourné, comme prévu.


Création d'un service Web

Tandis que tout fonctionne bien. Nous allons procéder à la génération d'un service Web de la classe Java en utilisant la méthode de développement de services Web de bas en haut.

  1. Sélectionnez l'application DemoweSservice Java et créez un nouveau service Web à partir du développeur d'applications Rational IBM.

  1. Depuis que nous avons créé une classe Java, sélectionnez Service Web de Bean Java Boot Up Java Dans la liste Type de service Web. Choisir Démarrer le client. et cliquez sur TERMINER.. Si nous avions une classe EJB, nous pourrions également écrire un composant EJB pour générer un service Web.

Si tout s'est bien passé, vous verrez dans les ressources Java à côté du DemoweService.java générés par DemoweServiceélégate.java.


Lors de la visualisation de Demowebicedélégate.java, vous pouvez trouver le service Web Java @ javax.jws.wewserservice annotation, qui spécifie TargeNamespace, Servicespaneame et PortName dans la classe DemowebiceDélégate. Une instance de DemoweSservice est créée et la méthode Hello () de DemoweService est créée par une autre méthode Hello (). Si vous le souhaitez, en savoir plus sur les annotations Java Web Services Reportez-vous au document de la demande de spécification Java (JSR) 181. Métadonnées de service Web pour la plate-forme Java.

Page 2. DemowebiceDélégate.java.
/ * * @Author: Jinwoo Hwang * Copyright 2010 IBM Corporation * / Démo de forfait; @ Javax.jws.webservice (TargeNamesPace \u003d "http: // démonstration /", servicename \u003d "Demowebeservice", portname \u003d "DemowebServiceService") Classe publique DemoweServiceélégate (Demo.DemowebService _DemoweService \u003d nouveau démo.demowebservice (); String Public Hello ( Nom de la chaîne) (retour _demoweservice.hello (nom);))

Création de WSDL.

Dans le projet programme clientèle Vous pouvez également trouver que les fichiers DemoweServiceservice.WSDL et DemoweServicesVice_schema1.xsd ont été générés. DemoweServiceservice.WSDL contient des informations dans la langue de la définition de service Web décrivant la langue décrivant services de réseau Pour l'application Java créée précédemment. DemoweServiceservice_schema1.xsd contient un schéma XML décrivant la structure de type de données utilisée dans les messages SOAP.


Lors de la visualisation du fichier DemoweServiceservice.wsdl, vous pouvez voir qu'il dispose d'un ensemble d'éléments de définition (élément de définitions). Les éléments de définition ont 6 éléments:

  • types (types);
  • message (message);
  • portType (type de port);
  • liaison (liaison);
  • service (service);
  • port.

Les types. Définit les types de données utilisées lors de l'échange de messages. Dans DemoweServiceservice.WSDL, nous importons le DemoweServiceservice_schema1.xsd au lieu de déterminer les types de données dans le fichier WSDL.

Un message. Définit les messages, l'échange qui se produit. Nous avons 2 messages: "Bonjour" et "HellOresponse". Le message Hello a une partie appelée "Paramètres". Cette partie a l'élément "TNS: Bonjour". Le message HellOreSponse a une partie appelée "Paramètres", qui est similaire à Hello. Cette partie a l'élément "TNS: HellOresponse". Les éléments Hello et HellOresponse sont définis dans le fichier DemoweServiceservice_schema1.xsd. Nous les considérerons bientôt.

Type de port - Points d'opération terminaux pris en charge. Chaque opération fournit des messages d'entrée et de sortie. Notre opération "Hello" consiste en un message d'entrée "TNS: Bonjour" et la sortie "TNS: HellOresponse". Ces opérations correspondent à l'échange de la demande de demande. WSDL fournit 4 primitives d'échange différents pour le point final:

  • un sens (unidirectionnel);
  • demande de réponse;
  • sollicité-réponse (requis-réponse);
  • notification.

Avec un échange unidirectionnel, le point de terminal reçoit uniquement un message. Lors de l'échange de la "question-réponse", le noeud final accepte le message et envoie le message approprié. Lors de l'utilisation de l'échange "Requir-réponse", le noeud final envoie le message et accepte le message approprié. Lorsque l'échange du terminal "Notification" n'envoie qu'un message.

Obligatoire Définit les détails du protocole et de la spécification de format de message pour les opérations et les messages définis par le type de port. Pour l'attribut de style, nous utilisons la valeur du document. L'attribut Style fournit 2 styles de message différents: RPC et document. Le message de style RPC contient des paramètres et des valeurs renvoyées. Les messages de style de document contiennent des documents. L'attribut de transport indique l'URI du transport du savon. La valeur spécifiée http://schemas.xmlsoap.org/soap/http signifie que la liaison HTTP sera utilisée dans la spécification SOAP. URI pour l'en-tête HTTP SOAPAction pour le savon de liaison HTTP est spécifié dans l'attribut Soapaction. Étant donné que la liaison HTTP SOAP est utilisée, la valeur d'attribut de soapaction est obligatoire. Pour l'attribut Soapaction, nous utilisons une chaîne vide "". Le savon: élément du corps détermine la manière dont les parties du message à l'intérieur de l'élément de message de savon corporel sont composées. L'attribut d'utilisation fournit 2 options différentes: littéral (littéral) et codé (codé). Nous utilisons littéralement. Cela signifie que nous avons choisi la définition d'un schéma spécifique à l'aide de l'attribut ou de l'élément de type. Lorsque vous utilisez la version codée, le type d'abstrait est utilisé avec des règles de codage.

Un service. Détermine l'ensemble des ports utilisés.

Port. Définit le terminal DOPE de la communication en spécifiant l'adresse réseau pour la liaison.

adresse réseau pour la liaison. Dans notre cas, l'adresse du point d'extrémité SOAP est http: // localhost: 9081 / helloworldwsproject / demoweservicesvice.

Page 3. DemoweServiceservice.wsdl

Créer un schéma

Nous importatons DemoweServiceservice_schema1.xsd de DemoweServiceservice.wsdl. Considérez le fichier DemoweServiceservice_schema1.xsd. Il est écrit dans le schéma XML de la langue de définition pour décrire la structure et les restrictions du contenu des documents XML. Nous avons 2 éléments: bonjour et helloresponse. Chaque élément est de type. Le type Hello a un élément "arg0", qui est une chaîne. L'élément "Arg0" est facultatif, car la valeur d'attribut des minocœurs dans son annonce est égale à 0. Si l'attribut Minoccurs est défini sur 1 ou plus, l'élément doit être spécifié. La même chose s'applique à l'élément "retour" du type HellOreSponse.

Page 4. DemoweServiceservice_schema1.xsd.

Mise en route avec outil de validation des services Web pour le programme WSDL et SOAP

Nous avons donc examiné WSDL et le programme. Démarrons le serveur de service Web afin que vous puissiez activer le service Web à partir de l'outil de validation des services Web pour WSDL et SOAP.

Pour démarrer l'outil de validation des services Web pour WSDL et SOAP, le JAVA 6 (ou ci-dessus) et l'API de codage numérique et l'API de décodage XML correspondant aux spécifications de consortium World Wide Web Wide Web Consortium "XML de cryptage et de traitement" (http: / / www sont requis. W3.org/tr/xmlenc-core/).

IBM Java 6 fournit la mise en œuvre JSR 106: API de cryptage numérique XML. Si vous avez installé IBM Java 6 System, cela signifie que tout est prêt pour le travail et ne vous installe plus rien.

Si dans votre temps d'exécution Java 6, par exemple, Sun Microsystems ™ Java 6, aucune API de cryptage numérique XML, vous devez installer des bibliothèques implémentant JSR 106 ou un package Apache ™ XML Security version 1.4.3, qui peut être téléchargé à http: / / / / /santuario.apache.org/. Il suffit de télécharger une distribution binaire, de le décompresser dans le répertoire et de spécifier le programme instrumental dans lequel ce répertoire est situé à l'aide des paramètres de ligne de commande -VMARGS et -DAXS.

Au moment de la rédaction de cet article, l'outil de validation des services Web pour WSDL et SOAP pris en charge JSR 106 et Apache XML Security version 1.4.3 pour le cryptage numérique XML et le déchiffrement XML. Si vous souhaitez vérifier les signatures numériques dans des messages SOAP, vous avez besoin de bibliothèques implémentant JSR 105: API de signature numérique XML. Heureusement, les machines virtuelles Java 6 de Sun Microsystems et IBM fournissent des implémentations de JSR 105. C'est pourquoi Java 6 a été choisi comme exigences minimales Par temps d'exécution de Java. Si votre environnement Java 6 ne fournit pas de bibliothèques implémentant JSR 105, vous devez les trouver.

Outil de validation des services Web pour le programme WSDL et SOAP peut être téléchargé gratuitement. L'installation est très simple. Décompressez le package dans le répertoire et exécutez WSVT.exe. Si le vôtre machine virtuelle La Java par défaut n'est pas un environnement Java 6 qui prend en charge les signatures numériques XML et le cryptage numérique et le décryptage, vous devez spécifier l'emplacement de Java 6 avec le paramètre -VM, par exemple:

wSVT -VM C: \\ IBMJAVA6 \\ BIN \\ JAVA.EXE

Encore une fois, si vous avez IBM Java 6, vous n'avez besoin de rien d'autre. Tout ce dont vous avez besoin déjà activé dans IBM Java 6. Lorsque vous utilisez Java 6 à partir de Sun Microsystems, vous devez spécifier l'emplacement du programme Apache XML Security pour déchiffrer les messages SOAP cryptés.

Par exemple, la commande suivante lancera un programme avec Sun Java 6 et Apache XML Security Library version 1.4.3, située dans le répertoire C: \\ XML-Security-1_4_3 \\ Libs:

wSVT -VM C: \\ SUNJAVA6 \\ BIN \\ JAVA.EXE -VMARGS -DAXS \u003d C: \\ XML-Security-1_4_3 \\ Libs

Vous trouverez ci-dessous une liste des fichiers Apache XML Security Library qui sont réellement utilisés par l'outil de validation des services Web pour WSDL et SOAP, bien que Apache XML Security version 1.4.3 est livré avec 9 fichiers JAR:
Commons-Logging.jar;
sériializer.jar;
xalan.jar;
Xmlsec-1.4.3..jar.

Dans Manifest.MF Les services de validation des services Web pour les programmes WSDL et SOAP sont les suivants:
Bundle-ActivationPolicy: Fainéant.
Bundle-ClassPath: .,
Externe: $ haches $ $ / Commons-Logging.jar,
Externe: $ haches $ / sériializer.jar,
Externe: $ haches $ / xalan.jar,
Externe: $ haches $ / xmlsec-1.4.3.jar

C'est pourquoi il était nécessaire de spécifier -vmargs -daxs \u003d C: \\ XML-Security-1_4_3 \\ Libs afin que l'environnement Sun Java 6 soit déchiffré des messages de savon cryptés.

J'ai passé beaucoup de temps à éliminer les classes et les incompatibilités pour vous connecter à des classes XML qui se trouvent dans l'environnement de l'heure d'exécution Java Sun Java, la sécurité Apache XML et certains plugins Eclipse. Configuration de l'environnement d'exécution d'exécution IBM Java a passé sans difficulté, car cet environnement est livré avec la mise en œuvre de JSR 106 et ne nécessite pas de sécurité Apache XML.

Création de projet

Maintenant, après la mise en place et la course à pied programme instrumental, Vous pouvez créer un nouveau projet. Le projet peut contenir un fichier WSDL, plusieurs fichiers de schéma associés au fichier WSDL et les messages de savon dans les fichiers XML. S'il y a plusieurs fichiers WSDL dans le projet, un seul d'entre eux est utilisé, tandis que d'autres sont ignorés lors de la vérification de l'exactitude du message SOAP de fichier XML. Pour utiliser un autre fichier WSDL, vous devez créer un projet séparé. Chaque message SOAP doit être contenu dans un fichier avec extension.xml, sinon elle ne sera pas considérée comme un message de savon.

  1. Cliquez avec le bouton droit de la souris et sélectionnez Nouveau\u003e projet..

  1. Choisir Projet. dans GÉNÉRAL.

  1. Entrez "Projet de test" dans le champ Nom du projet. et cliquez sur TERMINER..

Importer WSDL et Schémas

Nous avons créé le projet "Projet de test". Maintenant, vous pouvez importer WSDL et XSD.

  1. Sélectionnez un projet, puis dans le menu contextuel, sélectionnez Importer.

  1. Choisir Système de fichiers. dans GÉNÉRAL.

  1. Sélectionnez un répertoire dans lequel WSDL et XSD sont stockés.
  2. Sélectionnez 2 fichiers (Demowebeserviceservice.wsdl et Demowebeserviceservice_schema1.xsd) et cliquez sur TERMINER..

Vue d'ensemble des WSDL et Schémas

Nous avons maintenant un projet avec WSDL et XSD. Vous pouvez double-cliquer sur le bouton gauche de la souris WSDL pour afficher WSDL en mode de conception et source ( la source). En mode de conception, vous pouvez visualiser le service Web avec des données d'entrée et de sortie.


En mode source, vous pouvez afficher et modifier WSDL dans un éditeur de texte.


Si les fichiers XSD ne peuvent pas être ouverts dans l'éditeur XSD, vous pouvez les ouvrir dans l'éditeur XML en sélectionnant Ouvrir avec\u003e Editeur XML Dans le menu contextuel de ce fichier XSD.


Nous avons ouvert DemoweServiceservice_schema1.xsd dans l'éditeur XML.


Création d'un message de savon

Nous avons donc un WSDL et un schéma prêt à vérifier l'exactitude des messages de savon. Nous allons procéder à tester l'outil de validation des services Web pour le programme WSDL et SOAP avec un message de savon. Vous devez activer le message du savon au projet. Le message SOAP doit être contenu dans le fichier avec une extension .xml de manière à pouvoir être vérifiée correctement.

  1. Choisir Nouveau\u003e XML. Créer des messages de savon dans le projet.

  1. Choisir Projet de test. Pour le dossier parent du nouveau message SOAP. Si le fichier n'est pas encore sélectionné, entrez "démosoapmessage.xml" dans le champ. Nom de fichier. et cliquez sur TERMINER..

Le programme appelle automatiquement un éditeur XML avec un nouveau fichier XML. Il n'a qu'une chaîne d'une version et d'un codage XML. Il est bon que nous ayons au moins quelque chose avant la création du message de savon à partir de zéro. Savez-vous comment faire un message de savon? Ne t'en fais pas. Dans la section suivante, nous examinerons l'action de la créer en étapes.


Pour créer un message SOAP, vous pouvez activer le service "Hello" à l'aide des "paramètres" de paramètres avec l'indication de mon nom - "Jinwoo". Bien sûr, vous pouvez utiliser votre propre nom. Utilisé l'espace de noms http: // démonstration /. Soyez prudent - il est écrit comme http: // démonstration /, pas http: // démonstration, il est essentiel.

Liste 5. helloworldsoapmessage.xml.
Jinwoo.

Voyez-vous ce problème de message SOAP? Si oui, ne vous inquiétez pas. Nous allons traiter cela plus tard.


Messagerie de savon

Êtes-vous prêt à envoyer un message au serveur de service Web?

  1. Sélectionnez le message SOAP et sélectionnez

  1. Dans la demande de savon de transmission et recevez la demande de savon et recevez la fenêtre de réponse du savon que vous pouvez remplir Adresse de service, Soapaction et Type de contenu.. Dans cette application, nous n'avons pas besoin de spécifier la savon, car nous avons utilisé une chaîne vide "" pour l'attribut Soapaction dans la section du fichier DemoweServiceservice.wsdl.
  2. Entrez http: // localhost: 9081 / helloworldwsproject / DemoweServiceservice sur le terrain Adresse de serviceSi le serveur s'exécute sur l'ordinateur local du port localhost: 9081. Sinon, vous devez entrer l'adresse réelle à laquelle le service Web est disponible.
  3. Choisir texte / HTML. Pour le champ Type de contenu..
  4. appuie sur le bouton D'ACCORD. Envoyer des messages de savon au serveur.

Recevoir des messages de savon

Si le serveur est configuré et en cours d'exécution, vous devez obtenir une réponse du savon. Si la réponse ne vient pas, vérifiez l'exactitude de l'adresse et du type de contenu.


Vérification de l'exactitude du message SOAP

Excellent! Nous avons accepté une réponse du savon. Cela persiste également dans le projet. Mais attendez. Voyez-vous quelque chose de mal? Nous avons "Bonjour, mon pote!" Au lieu de "Bonjour, Jinwoo!". Quelque chose a mal tourné? Vous n'avez pas de concept?

Malheureusement, le serveur de services Web ne nous a pas permis de savoir ce qui n'allait pas. Aucun avertissement. La situation lorsque des réponses de savon imprévisibles sont envoyées et que le serveur de services Web n'a pas le concept qu'il ne se produit pas, peut être très dangereux. Même les destinataires des réponses au savon peuvent ne pas remarquer des problèmes dans le message SOAP considéré.

Outil de validation des services Web pour l'outil WSDL et SOAP vous permet de déterminer ce qui se passe pas le cas.

Page 6. Réponse
Salut mon pote!
  1. Sélectionnez un message de savon de réponse et cliquez sur Valider..

Outil de validation des services Web pour WSDL et SOAP a trouvé une erreur dans le message SOAP.

Message de savon non valide: CVC-Complex-Type.2.4.A: Le contenu non valide a été trouvé à partir d'élément "Paramètres". L'un des "(arg0) est expédié.

Modification des messages de savon

  1. Le programme se plaint de la valeur "Paramètres". Changez-le en Arg0 et économisez.
Liste 7. Message de savon modifié
Jinwoo.
  1. Vérifiez l'exactitude du message de savon de réponse modifié. Plus aucun message d'erreur apparaît.

  1. Nous sommes maintenant prêts à envoyer une réponse modifiée au serveur. Sélectionnez le message SOAP, puis sélectionnez Transmettre la demande de savon et recevoir une réponse du savon.

  1. Dans la fenêtre de la demande de savon de transmission et recevez la fenêtre de réponse du savon, entrez http: // localhost: 9081 / helloworldwsproject / demowebserviceservice sur le terrain Adresse de serviceSi le serveur s'exécute sur le port localhost: 9081.
  2. Choisir texte / HTML. Pour le champ Type de contenu. et cliquez sur D'ACCORD..

Cette fois, comme prévu, la bonne réponse vient.


Liste 8. Réponse du savon
Bonjour, Jinwoo!

Détection de l'espace de noms impropre

Que se passe-t-il si vous envoyez un message avec une espace de noms incorrecte?

  1. Modifiez l'espace de noms sur http: // demo2 / enregistrer le message.

Liste 9. Modifier l'espace de noms
Jinwoo.
  1. Vous pouvez ensuite envoyer une demande au serveur.

Vous verrez une situation exceptionnelle IoException: Code de réponse HTTP renvoyé du serveur: 500 pour Uri: http: // localhost: 9081 / helloworldwsproject / demoweservicesvice.


Le serveur de service Web a transmis des informations de réponse sur situation exceptionnelle IoException, mais ces informations ne suffisent pas à détecter une erreur. Vérifiez l'exactitude du message à l'aide du programme Outil si vous souhaitez obtenir des données plus détaillées pour résoudre le problème.


Le programme Rapports: "Message de savon non valide: CVC-Complex-Type.2.4.A: Le contenu non valide a été trouvé à partir de l'élément 'NS0: Bonjour". Un de "(" http: // démo / ": bonjour," http: // démonstration / ": helloresponse)" est attendu ".

Ce message indique que la valeur est attendue http: // démo /. C'est ceci, et non un code de réponse HTTP 500, nous devons savoir.


Vérification de l'exactitude des messages de savon crypté

Et si vos messages de savon sont cryptés? Pas de problème si vous avez des clés et des mots de passe. Il suffit de sélectionner le message du savon et Valider. Tout comme cela se fait pour tout autre message de savon ordinaire. Si votre message SOAP est crypté, une demande apparaît à l'écran similaire à celle illustrée à la figure 35.


Au moment de cette écriture, 3 types de magasins de clés sont pris en charge:

  1. Java Key Store (JKS).
  2. Java Cryptography Extension Key Store (JEKS).
  3. Syntaxe de syntaxe d'échange d'informations personnelles (normes de cryptographie clés publiques n ° 12).

Vous devez fournir des informations sur votre clé de clé: nom de fichier, type de fichier et mot de passe. Si les informations sont correctes, vous devez sélectionner la clé et le mot de passe. Vous pouvez également trouver des informations sur votre clé de stockage et de votre liste de clés et de certificats dans Key Store, par exemple, le type de stockage de clé, le nom du fournisseur, la version fournisseur, les informations fournisseurs, le type de clé, le type de création, le type de certificat, l'algorithme et le format.


Si toutes les informations sont correctes, le programme générera un message de savon déchiffré et vérifiera son exactitude.


Les algorithmes de cryptage suivants sont actuellement pris en charge:

  • Standard de cryptage avancé (AES) dans le mode de chaîne de bloc de chiffrement (CBC) avec vecteur d'initialisation (128/192/256 bits).
  • Cryptage de clé de la norme de cryptage avancé (AES) (128/192/256 bits).
  • Triple Data Cryptage ALGORITHM Modes de fonctionnement (triple-des) cryptage clé.
  • Triple Data Cryptage ALGORITHM Modes de fonctionnement (Triple-des) Cryptage de clé dans le mode chaînage de bloc de chiffrement (CBC).
  • Spécifications de la cryptographie RSA version 1.5.
  • RSA Optimal Cryptage asymétrique (OAEP) est un procédé avec une fonction de génération de masque.

Vérification de l'exactitude des messages de savon avec une signature numérique

Et si votre message SOAP a une signature numérique? Il suffit de sélectionner le message SOAP, puis sélectionnez Message de savon Vérification de la signature numérique.


Si un signature numérique Correct, vous verrez l'écran suivant:


Sinon, le programme signalera une erreur dans la signature. Les spécifications suivantes et les algorithmes de signature numérique sont actuellement pris en charge:

  • Algorithme de hachage sécurisé 1 (SHA-1)
  • Code d'authentification de message de hachage (HMAC)
  • Algorithme de signature numérique (DSA)
  • Normes de cryptographie clés en public (PKCS n ° 1)
  • Algorithme de cryptage RSA avec algorithme de hachage sécurisé (SHA-1)
  • Canonical XML version 1.0 et 1.1
  • Transformations XSL (XSLT) version 1.0
  • Langue de chemin XML (XPath) Version 1.0
  • Base64.

Accès au service de restauration National Mete US à l'aide de messages SOAP

Créé et testé par US Simple Web Service fonctionne bien. Peut être utilisé ce programme Dans l'environnement "réel"? Vous pouvez essayer de travailler avec le service Web national américain fourni par les États-Unis. Administration nationale océanique et atmosphérique (NOAA).

  1. Créer un projet.

  1. Créez un code de message XML SOAP.


Les États-Unis National Mete Working fournit de nombreux services Web différents. Vous pouvez essayer de travailler avec le service NDFDGenByDay, qui fournit des prévisions météorologiques pour un point avec une latitude et une longitude donnée.

Pour accéder à NDFDGenByDay, vous devez fournir les informations suivantes:

Tableau 1. NdfdgenByDay.
Nom du service (nom de service)Ndfdgenbyday
Point final (terminal)http://www.weather.gov/forecasts/xml/soap_server/ndfdxmlserver.php.
SOAPERACTION (SOAP-ACTION)http://www.weather.gov/forecastts/xml/dwmlgen/wsdl/ndfdxml.wsdl#ndfdgenByDay
encodingstyle (style de codage)http://schemas.xmlsoap.org/soap/encoding/
Espace de noms (espace de noms)http://www.weather.gov/forecasts/xml/dwmlgen/wsdl/ndfdxml.wsdl
latitude (latitude)Nombre décimal
longitude (longitude)Nombre décimal
startdate (date initiale)Date
numdays (nombre de jours)Entier
format (format)Ligne

Dans cet exemple, nous souhaitons créer une demande de savon pour recevoir une prévision hebdomadaire pour la localité avec les coordonnées (Lat38.9, LON-77.01) à partir de 2010-07-23 au format 24 heures sur 24:

Liste 10. Demande de savon
38.99 -77.01 2010-07-23 7 24 heures sur 24

Nous n'avons pas indiqué l'espace de noms, car le service fonctionnait sans elle. Si des problèmes surviennent avec l'espace de noms, définissez-le.


Sélectionnez le message I. Transmettre la demande de savon et recevoir une réponse du savon Dans l'outil de validation des services Web pour WSDL et SOAP.

Tableau 2. Demande d'information
NomValeur
Point final (terminal) http://www.weather.gov/forecasts/xml/soap_server/ndfdxmlserver.php.
SOAPERACTION (SOAP-ACTION) http://www.weather.gov/forecastts/xml/dwmlgen/wsdl/ndfdxml.wsdl#ndfdgenByDay
Type de contenu (type de contenu)texte / XML; Charset \u003d utf-8

Maintenant, les données de projection sont devenues beaucoup plus faciles à lire.


Si ce conseil ne semblera pas trop pratique pour vous, vous pouvez utiliser votre propre méthode de formatage HTML. La plupart des services Web offrent un format XML. Vous n'avez donc pas à recourir à ce technicien en constamment.

Conclusion

Nous avons créé, transformé, accepté et vérifié l'exactitude des messages SOAP à l'aide de l'outil de validation des services Web pour WSDL et SOAP. Ce programme vous permet d'identifier avec précision les problèmes que la plupart des serveurs de services Web ne sont même pas capables de détecter que cela peut entraîner de graves conséquences dans la vie réelle. L'utilisation de ce programme au stade de développement permet de réduire le temps de dépannage pendant le fonctionnement.

Bonjour!

Dans plusieurs articles, je parlerai des possibilités de tester avec SoaPui, car 1C Services Web fonctionnent. Je donnerai également des exemples de retour des documents 1C dans format pdf et des fichiers XML complexes. Certaines choses sont similaires à cela, cependant, je vais envisager des exemples plus complexes de travail avec les services Web. Mais d'abord pour commencer, je vais examiner le processus d'exécution de services Web et travailler avec SoaPui pour faciliter la compréhension de leur fonctionnement de zéro.

1. Service Web simple

Pour commencer, prenez une configuration de cadre sans services Web et passez les étapes à suivre pour les créer.

Ajouter un nouveau service Web nommé Test1 et créer une opération Hello en elle avec un type de chaîne retourné. Les noms de service Web et les opérations sont meilleurs pour toujours définir en latin.

Vous devez également spécifier l'espace de noms URI et le nom du fichier de publication:

Lorsque vous appuyez sur la loupe dans le champ "Champ de la procédure", le module de service Web sera ouvert et vous pouvez implémenter la fonction Hello.

Bonjour () Remettre de la fonction "rangée de 1c service Web"; Enfoncé

2. Publication du service Web.

Maintenant que la fonction résultante est disponible sur HTTP, vous devez publier notre service sur le serveur Web. Apache 2.2 convient à cela. J'ai lu l'article sur la façon de configurer le travail avec IIS et cela m'a semblé beaucoup plus difficile. Après avoir installé et exécuté Apache 2.2, vous devez accéder au menu Administration - Publier sur un serveur Web. Le champ "Catalogue" doit être rempli et contenir le paramètre Apache. Rappelez-vous le «nom» et «adresse» du service Web, ils nous seront utiles à l'étape suivante.

3. Tests avec SOAPUI

Pour tester, créez un utilisateur WSUSER séparé, avec un mot de passe simple et donnez-lui des droits complets.

Après cela, installez et exécutez SOAPUI. Ce programme est très pratique pour tester les services Web, il peut recevoir leur description et faire des demandes post-requêtes aux services.

Allez dans le fichier - Nouveau menu du projet SOAP, demande le nom du projet Hellotest et dans le champ initial WSDL, nous écrivons ce lien:

http: //localhost/test_ws/ws/test1.1cws? WSDL

En cela, la partie "Test_ws" a été définie sur la dernière étape du champ "Nom" et Test1.1CWS dans le champ "Adresse".

Cliquez sur OK et à ce stade devra être connecté en entrant l'utilisateur de test du WSUser. Un projet et deux éléments de liaison seront créés.

SOAP12Binding est caractérisé en travaillant sur nouvelle version SOAP 1.2 Standard. Ouvre l'élément de demande1 dans le test1soap12Binding et voyez ceci:

SOAPUI montre que XML sera transmis à notre fonction. Avant de commencer le test, il y a une autre nuance, le SOAPUI par défaut nécessitera une autorisation pour chaque élément de demande séparé. Par conséquent, afin de ne pas le spécifier à chaque fois que vous devez cliquer sur le bouton droit de la souris sur TestSOAP12Binding, sélectionnez Afficher la vue d'interface et dans la fenêtre qui s'ouvre sur l'onglet "Point d'extrémité de service" du nom du service Web et du mot de passe:

Si cela n'est pas fait, alors pour chaque demande, vous devrez définir une autorisation, dans le panneau inférieur par le bouton Auth.

Maintenant, vous pouvez enfin exécuter la demande à la fonction Hello et voir la réponse:

Génial, tout a fonctionné!

4. Transférez des paramètres simples sur la fonction.

Maintenant faire nouvelle fonctionnalité Avec des paramètres, par exemple, vérifiez les travaux avec les dates, nous effectuerons la fonction GetsAedOcnumbersbyDate, qui recevra une date de document (facture de dépenses) et renvoyer des numéros de document pour cette date de date. Ajouter un paramètre de date au fonctionnement avec type DateTime:

le code est:

GetsAedocnumbersbyDate (date) fonction // datanent \u003d début (date); DateTonton (date); Évalidocuments \u003d Documents. Départ. Clair (point de données, couchette); chiffres \u003d ""; Tandis que les Sedocuments. Next () Cycle de numéro \u003d Numéros + "Non." + Cours de précision. Maker + ";"; Endyclycle; Numéro de retour; Enfoncé

Maintenant, dans Soapui, cliquez avec le bouton droit de la souris que vous devez cliquer sur l'élément TESTSOAP12Binding et sélectionner la définition de mise à jour. Après cela, le projet apparaîtra à la fonction GetAuEeDocNumByDate et la demande immédiate à celle-ci. Pour remplir la date à laquelle vous devez utiliser le format "AAA-MM-MM-DDTHHHHHH: MM: SS" (vous pouvez voir sur W3schools et recommande vivement en utilisant ce site pour comprendre le travail avec XML)

Ensuite, cela évoluera une telle demande et une réponse:

5. Packages XDTO

Si vous avez besoin de transmettre des paramètres plus complexes à la fonction (par exemple, XML avec plusieurs champs) ou pour recevoir un XML complexe en réponse, nous ne pouvons pas passer sans packages XDTO.

Travailler avec XDTO est considéré dans le cycle des articles. En fait, le paquet détermine la structure et le type de champs utilisés par les fichiers XML.

Je vais envisager un exemple de transfert et de réception d'un fichier XML, le type de celui défini dans le paquet

Ainsi que dans les articles suivants, je vais envisager des exemples:

  • transfert au fichier XML 1C non décrit dans l'emballage au format BASE64
  • sortir 1c. document PDF Au format BASE64 et son décodage
  • obtention du fichier XML 1C avec une structure intégrée d'éléments et déterminer leur quantité

6. Transmission à 1C dans le paramètre de fichier XML, le type de celui qui est défini dans l'emballage.

La tâche sera la suivante: trouver un document de la facture de dépenses pour le numéro spécifié dans le XML entrant et la date et renvoyer le document trouvé. Vous devez également revenir sous la forme d'un XML avec un nombre, une date, une contrepartie et son code et partie tabulaire des biens.

Créez des paquets Packet1 avec espace de noms Packet1_ns. Pour un fichier XML entrant, nous définissons le type d'objet indocsalequery avec le champ Numéro du type de chaîne et le champ Date de type DateTime. Pour le fichier de sortie, nous définirons le type d'abord pour une ligne de la partie de la marchandise: venteItem avec champs de noms de type chaîne, somme de prix, type de quantité décimale. Et le document salédoc lui-même aura un type intégré: nombre, date, champs particularernes et champ de venteItems, qui aura le type de venteItem et le nombre maximum -1. C'est un tel champ indique qu'un réseau de plusieurs éléments peut y être présent. Cela ressemble donc à ceci dans le configurateur:

D'abord montrer le code de fonction, puis je vais expliquer ce qui se passe

Le code:

Revealedoc (incomingxml) fonction d'un mètre \u003d incomingxml.number; Datades \u003d incomingxml.date; demande \u003d nouvelle demande; Demande.text \u003d "SELECT | EXPENDABLES. NAMERENCLature. Nom tel que nom, | Expendables. Prix, comme prix, | Expendables. Refroidissement en tant que quantité, | Expendables. Link | Document | Document | Document | Produits de dépenses. Lien. Maker \u003d & Number | et dépenses. Lien. Data \u003d & Datasy "; Demande. Paramètre d'installation ("numéro", jetable); Demande. Installation du paramètre ("Datades", Datades); Échantillonnage \u003d requête. Remplir (). Sélectionnez (); Si l'échantillon. Racing () \u003d 0 alors // renvoie l'erreur du flux de marée \u003d FactoryXDto. Type ("Packet1_ns", "Saladoc"); Documentation de paquets \u003d FactoryXDTo. Créer (sidelines); Flux emballé. Nombre \u003d "Documents non trouvés!"; Remboursement; Sinon, nous créons les types de tihroculation \u003d FactoryXDTo. Type ("Packet1_ns", "Saladoc"); Tipbabbing \u003d FactoryXDo. Type ("Packet1_ns", "SaleItem"); Documentation de paquets \u003d FactoryXDTo. Créer (sidelines); // Sélectionnez dans la partie Table Part Sch \u003d 0; Tandis que l'échantillon. Le cycle suivant () si le SCH \u003d 0 puis // remplit les détails de la Dock Document \u003d Sample. Lien; Documentation de paquets .number \u003d Dock. Documentation de paquets.Date \u003d Dock; Documentation de paquets .Parnername \u003d ligne (Dock. Kontragent); terminé; // Remplir partie de table Emballage \u003d FactoryXDo. Créer (tablette); Remplir (négociation, échantillon); // Ajoutez-le au document de document de paquets .sale.saleitems. Audlux (négociation); sch \u003d sch + 1; Endyclycle; Remboursement; terminé; Enfoncé

Voici deux nuances principales. Le premier: car le type de paramètre incomingant incomingxml a été spécifié et il a été décrit ce type dans l'emballage, il est immédiatement possible de contacter les champs de ce XML entrant. Deuxièmement: travailler avec l'usine XDO. De là, un type a été obtenu pour les paramètres de sortie résultants et créé la valeur de ce type, qui a été remplie avec les champs nécessaires. Il convient également de noter que, dans le type salédoc, vous devez entrer un champ d'erreur distinct, mais pour les objets de test d'erreur seront enregistrés dans le champ Numéro.

Voici à quoi ressemble le résultat de cette demande à SoaPui:

Comme vous pouvez le constater, tout fonctionne, mais il y a toujours quelque chose à améliorer - par exemple, j'aimerais savoir combien d'éléments de venteItems dans notre document.

À propos de cela et d'exemples plus complexes, je vous dirai dans le prochain article.

Dans les archives ci-jointes - Déchargement base de l'information Et le projet SOPUI.

SOAP (Protocole d'accès d'objet simple) C'est un protocole de messagerie standardisé entre le client et le serveur. Il est généralement utilisé conjointement avec HTTP (s), mais peut également travailler avec d'autres protocoles de niveau d'application (par exemple, SMTP et FTP).
Le test de savon du point de vue des techniques de test n'est pas fondamentalement différent de travailler avec d'autres API, mais elle nécessite une préparation préliminaire (en termes de théorie des protocoles) et des outils de test spéciaux. Dans cet article, je voudrais formuler une petite liste de contrôle des connaissances et des compétences nécessaires, qui seront également utiles en tant que testeur de savon (souvent non représenté, "pour ce qui suffit" après la définition de la tâche) et du gestionnaire. forcé d'évaluer la connaissance des testeurs et de développer des plans d'apprentissage.

Base théorique

Le fait que le savon est un protocole revêt une grande importance pour les tests: vous devez explorer le protocole lui-même, les normes «primaires» et les protocoles sur lesquels il repose, ainsi que (selon les besoins) des extensions existantes.

XML
XML est une langue de balisage similaire à HTML. Tout message envoyé / reçu via SOAP est un document XML dans lequel les données sont parfaitement structurées et facilement lisibles, par exemple:



Julia
Natasha
Rappel
N'oubliez pas d'écrire un article!


De plus en détail sur XML, vous pouvez apprendre sur W3schools ou Codenet (en russe). Assurez-vous de faire attention à la description des espaces de noms (méthode de résolution de conflit lors de la description des éléments dans XML) - dans le savon, leur utilisation est nécessaire.

Xsd.
Lorsque vous travaillez est toujours pratique pour avoir une description normalisée de documents XML possibles et de les vérifier sur l'exactitude du remplissage. Pour ce faire, il existe une définition de schéma XML (ou une XSD abrégée). Les deux principales caractéristiques de XSD pour un testeur sont une description des types de données et d'imposer des restrictions sur les valeurs possibles. Par exemple, un élément de l'exemple précédent peut être effectué en option pour remplir et limiter sa taille de 255 caractères à l'aide de XSD:

...







...

Savon d'expansion.
Dans votre travail, vous pouvez également rencontrer diverses "extensions" SOAP - WS- * Normes. L'un des plus courants est WS-Security vous permet de travailler avec le cryptage et signatures électroniques. Souvent, la stratégie WS est utilisée avec celle-ci, avec laquelle vous pouvez gérer les droits d'utiliser votre service.

Exemple d'utilisation de WS-Security:


Alice.
6S3P2EWNP3LQF + 9VC3EMNOT57OQ \u003d
YF6J8V / CAQI + 1NRSGLRBUZHI
2008-04-28T10: 02: 11Z

Toutes ces extensions sont des conceptions assez complexes utilisées loin de chaque service de savon; Leur étude détaillée à l'étape initiale d'exploration des tests de savon est peu susceptible d'être pertinente.

Instruments

Comme vous avez déjà compris, le savon est une chose sérieuse, de travailler avec lui, vous devez connaître la théorie et de nombreuses normes. En pratique, une telle complexité entraînerait des coûts de main-d'œuvre très tangibles (par exemple, il serait nécessaire de surveiller le schéma dans le cahier à chaque fois et d'envoyer les demandes de la boucle). Par conséquent, des outils facilitant les travaux avec du savon ont été créés.

Editeurs XML / XSD
Un bon testeur commence à tester au stade de la documentation de la rédaction, il est donc pratique d'utiliser des éditeurs spéciaux pour vérifier les schémas. Deux plus célèbres - oxygène (plate-forme inter-plate-forme) et Altova (Windows uniquement); Les deux sont payés. Ce sont des programmes très puissants qui utilisent activement des analystes lors de la description des services.

Trois fonctionnalités ont été utiles dans ma pratique: la visualisation XSD, la génération XSD basée sur XSD et la validation XML de XSD.

1. Visualisation XSD. Nous avons besoin d'une présentation visuelle du schéma qui vous permet d'identifier rapidement les éléments et les attributs obligatoires, ainsi que les limitations existantes. Par exemple, l'élément de texte est nécessaire pour demander le ChecktexTrequest, et facultatif - tous les trois attributs (en même temps, l'attribut Options définit la valeur par défaut - zéro).

La visualisation est nécessaire lorsque les types et les restrictions dans le schéma sont nombreux. Si vous n'avez besoin que d'elle, et vous ne voulez pas payer pour des éditeurs spéciaux, vous pouvez envisager des alternatives gratuites (par exemple, JDeveloper).

2. Génération XML basée sur XSD Utile lorsque vous voulez voir l'exemple correct du message. Je l'utilise afin d'expérimenter rapidement le remplissage possible du message et de vérifier les nuances des restrictions.

3. Après avoir utilisé des fonctionnalités du paragraphe 2, il est utile de tenir validation XML par XSD - C'est-à-dire, vérifiez le message à corriger. Ensemble, les caractéristiques 2 et 3 permettent d'attraper des défauts de ruse au XSD, même lorsque le service lui-même est en développement.

Outil de test - SOAPUI

Les tests de savon impliquent presque toujours l'utilisation de soapui. Vous pouvez lire sur l'utilisation de cet outil de différentes sources (), mais il sera plus efficace de se familiariser avec la documentation officielle. Je souligne 8 niveaux conditionnels de soapui:

Niveau 1 - Je peux envoyer des demandes
Apprenez à créer un projet basé sur la WSDL. SOAPUI peut générer toutes les demandes nécessaires à vous; Vous n'aurez que de vérifier l'exactitude de leur remplissage et d'appuyer sur le bouton "Envoyer". Après avoir élaboré les compétences de la création de demandes correctes, vous devez maîtriser l'art de former des demandes incorrectes qui causent des erreurs.

Niveau 2 - Je peux faire des tests de test et des cas de test
Commencez à faire des mini-carottes. Les kits de test et les cas de test vous permettent de créer des scénarios de test API, de préparer des données pour les requêtes et de vérifier automatiquement la réponse obtenue à l'attendu. Au début, ils peuvent être utilisés simplement comme une collection de demandes. Par exemple, si vous avez démarré un défaut et que vous souhaitez le vérifier rapidement après la correction, vous pouvez sélectionner un kit de test distinct spécifiquement pour les demandes-défauts.

Niveau 3 - Je peux écrire des assertions
Après le cas de test, vous serez utile pour que vous puissiez apprendre à les faire vérifier automatiquement. Après cela, vous n'aurez plus besoin de rechercher des informations sur les "yeux" sur la réponse: Si vous avez une vérification automatique, les cas seront marqués avec vert (si le chèque est passé) ou rouge (si non passé). SOAPUI fournit un ensemble important de vérifications possibles (affirmations), mais le plus pratique et le plus simple est contenant et non. Avec leur aide, vous pouvez vérifier le fait de la disponibilité d'un texte spécifique dans la réponse reçue. Ces chèques prennent également en charge la recherche avec des expressions régulières.

Niveau 4 - J'utilise XPath et / ou XQuery dans les assertions
Pour ceux qui sont un peu familiers avec l'interface utilisateur avec le sélénium, la langue XPath est une chose familière. À peu près, XPath vous permet de rechercher des éléments dans un document XML. XQuery - technologie similaire pouvant utiliser XPath à l'intérieur de lui-même; Cette langue est beaucoup plus puissante, elle ressemble à SQL. Ces deux langues peuvent être utilisées dans des assertions. Les chèques avec leur aide sont plus ciblés et stables, vos cas apprécieront une grande confiance.

Niveau 5 - Je peux écrire des tests complexes avec des étapes spéciales

Dans les cas de test, une seule demande peut être contenue, mais également plusieurs (par exemple, lorsque vous souhaitez imiter le scénario standard du travail de l'utilisateur "Créer l'essence" → "Exporter l'entité"). Il peut y avoir d'autres étapes spéciales entre les demandes, par exemple:

  • Propriétés et transfert de propriété (aide à réutiliser les données et à les transmettre entre les demandes);
  • Demande JDBC (utilisée pour recevoir des données de la base de données);
  • Goto conditionnel (vous permet de faire des branchements ou des cycles dans le cas de test);
  • Run Testcase (aide à effectuer une sorte de requêtes typiques dans des cas de test séparés et les provoquer le cas échéant).

NIVEAU 6 - J'utilise des scripts sur groovy

SOAPUI vous permet d'écrire des scripts sur Groovy dans divers endroits. Le cas le plus simple est la génération de données à la demande elle-même à l'aide des inserts $ (\u003d). J'utilise constamment de tels inserts:

  • $ (\u003d nouvelle date (). Format ("AAA-MM-DD'T'HH: MM: SS")) - pour l'insertion date actuelle et le temps dans le format requis;
  • $ (\u003d java.util.uuid.randomuuid ())) - Insérer le GUID aléatoire correctement formé.

Les scripts à part entière peuvent être utilisés comme étapes dans les cas et les chèques. À un moment donné, vous constaterez que plusieurs étapes spéciales du cinquième niveau peuvent être remplacées par un script.

NIVEAU 7 - J'utilise des mockervices
WSDL basé sur SOAPUI peut générer des objets simulés. L'objet mock est la simulation la plus simple du service. Avec l'aide de "MOK", vous pouvez commencer à écrire et à déboguer les cas de test avant même que le service ne soit réellement disponible pour les tests. Vous pouvez également les utiliser comme "bouchons" pour des services temporairement inaccessibles.

Niveau 8 - God Soapui
Vous connaissez la différence entre les versions payées et libres de SOAPUI et utilisez l'API SOAPUI dans le code. Vous utilisez des plug-ins et exécutez l'exécution des cas via la ligne de commande et / ou CI. Vos cas de test sont simples et facilement soutenus. En général, vous avez "mangé un chien" sur cet outil. Je parlerais volontiers avec ceux qui ont maîtrisé Soapui à un tel niveau. Si vous êtes telle - écrivez dans les commentaires!

Test de langages de programmation

Je vais donner un exemple de la façon dont la demande à l'API de YandexSpeller ressemble, faite à l'aide de Groovy-Wslite:

importer wslite.soap. *
DEF Client \u003d nouveau SOAPCLIENT ("http://speller.yandex.net/services/spellservice?wsdl")
DEF Response \u003d Client.Send (Soapaction: "http://speller.yandex.net/services/spellservice/checktext") (
Corps (
ChecktexTrequest ("Lang": "ru", "xmlns": "http://speller.yandex.net/services/spellservice") (
Texte ("Oshka")
}
}
}
Affirmer "erreur" \u003d\u003d réponse.checktextreresponse.spellresult.error.s.text ()
Affirmer "1" \u003d\u003d [Email protégé]()

Pour autant que je sache, des cadres de haut niveau (par le type de repos assuré) pour tester le savon n'existent pas, mais l'outil intéressant a récemment été apparu - Karaté. Avec cela, vous pouvez décrire des cas pour tester le savon et se reposer sous la forme de scagulums / scénarios de gerkin. Pour de nombreux testers, l'appel du karaté sera la solution parfaite, car de tels scénarios pour la complexité des cas d'écriture et de soutien seront quelque part au milieu entre utiliser Soapui et écrire leur propre cadre pour les tests de savon.

Conclusion

Il est peu probable que vous souhaitiez jamais tester le savon simplement pour vous-même (comme cela pourrait arriver avec le reste-ohm). Ceci est un protocole sérieux utilisé dans de sérieuses solutions d'entreprise. Mais son poids lourd est simultanément un testeur-cadeau: toutes les technologies utilisées sont normalisées, il existe des outils de haute qualité pour le travail. Du testeur ne nécessite que le désir d'étudier et de les utiliser.

Rassemblons la même liste de chèques des compétences nécessaires pour le testeur. Donc, si vous commencez simplement à tester les services de savon, vous devez savoir et pouvoir utiliser:

  • WSDL.
  • SAVON.
  • Editeurs XML / XSD (au niveau de la visualisation XSD).
  • SOAPUI au niveau 1.

Comme vous pouvez le constater, il s'agit d'étudier les normes, à Soapui, il suffit de pouvoir effectuer des demandes. Au fur et à mesure que je pleure dans le savon test, vous aurez des tâches qui nécessiteront des compétences et des connaissances plus graves, mais n'essayez pas d'étudier tout et immédiatement. Il est beaucoup plus important que la séquence dans l'augmentation du niveau de complexité des tâches. Suite à cette recommandation, à un moment donné, vous comprendrez qu'ils sont devenus un bon spécialiste dans ce domaine!

Services Web en 1C

Cet article examinera les problèmes d'intégration de 1C avec des services Web déjà existants et l'utilisation de 1C elle-même en tant que service Web.

Dans le même temps, sous les services Web sera compris comme étant un système d'exécution sur Internet et garantira une interaction avec eux non seulement par le savon (ce qui est précisément le service Web), mais également d'une autre manière, y compris HTTP (S) ordinaire - -Records.


Les risques d'utilisation des services Web 1c

La plate-forme 1C81 est apparue sur la mise en œuvre des services Web.

Mais leur utilisation est lourde des risques:

  1. 1C8 ne fonctionne pas bien via HTTPS, il n'y a pas d'outils de diagnostic, il est donc impossible de comprendre si le service ne veut pas fonctionner par HTTPS, il est parfois impossible. Quitter - Mise en œuvre des services Web par le biais de la levée de tunnel CURL ou HTTPS.
  2. 1c8 adhère à ses règles de validation du schéma de la WSDL. Parfois, pour des raisons inexplicables, le schéma WSDL ne veut pas être chargé dans la liaison WS. Vous ne pouvez apprendre que la cause sur un forum partenaire d'un spécialiste. Il n'y a pas d'outils de diagnostic WSDL, même la cause ou la chaîne n'est pas spécifiée sur laquelle la charge de diagramme est interrompue.

Règles pour la construction de services pour la vente

Le client est émis un document en vente (chèque) uniquement si la transaction du service a été couronnée de succès. Sinon, la situation est possible lorsque le client reçoit un chèque et sera confiant qu'il a reçu un service, et ce n'est en fait pas.

Utilisation de services de savon externes

SOAP Web Services utilise des schémas WSDL et des objets XDTo pour représenter des données.

Télécharger WSDL

Pour utiliser le service externe, vous devez télécharger le schéma WSDL.

Vérification de la validité du schéma WSDL

Parfois, le schéma WSDL n'est pas chargé en 1C. Vous pouvez vérifier la validité (exactitude) du circuit avec n'importe quel validateur WSDL, par exemple http://www.validwsdl.com/.

Vous devez télécharger un schéma sur n'importe quel site HTTP (vous pouvez via FTP) et spécifier l'adresse du fichier dans lequel le schéma est chargé:

Caractéristiques de Télécharger WSDL en 1C

La fonction de charge WSDL en 1C est que les régimes valides peuvent ne pas être chargés. Il n'y a pas de validateur intégré, vous devez donc rechercher une erreur par analyse destructrice, réduisant ainsi séquentiellement le nombre d'éléments du schéma. Vous pouvez par exemple supprimer une description du service Web.

Traitement pour tester un service Web externe de travail

Pour tester le service Web externe de travail, utilisez le traitement "testprolnogservice.epf" de l'emballage à cet article.

Les tests peuvent être utilisés sur l'exemple du service Morpher, les noms inclinés (l'adresse du service http://www.morpher.ru/webservices/morpher.asmx?wsdl):

De cette manière, vous pouvez tester n'importe quel service contenant de simples points d'entrée contenant des paramètres de type simples: numéro, date, chaîne.

Dans le traitement, vous pouvez également spécifier le login et le mot de passe requis pour autoriser l'accès au service Web.

Services standard Débogage signifie

Vous pouvez utiliser le programme SOPUI pour déboguer, qui peut envoyer une demande de service Web arbitraire et obtenir une réponse de celui-ci.

Savon et https

Malheureusement, le savon en 1 est suffisamment capricieusement en fonction du protocole HTTPS, la pratique montre qu'il est impossible d'obtenir des connexions HTTPS, bien que la possibilité et est étendue dans la plate-forme. Il affecte le manque d'outils de diagnostic et de débogage pour déterminer les raisons, en raison de laquelle la connexion n'est pas établie. Par conséquent, il est pratique d'utiliser du savon à travers la courbe.

Le mécanisme d'utilisation HTTPS intégré implique que tous les certificats doivent être publiés dans le fichier partagé PEM dans le répertoire du programme 1C.

Utilisez 1C en tant que service

Conditions de développement du service basé sur 1C

Opération "bonjour"

La règle de bonne tonalité est la création d'une opération dans le service qui informe que le service est disponible. Cela facilite la vie des intégrateurs, ils seront plus faciles à vérifier si la connexion a été établie avec le service.

Par exemple, vous pouvez utiliser l'opération Hello sans paramètres, ce qui renvoie simplement une valeur booléenne de la vérité.

Publication du service Web

La procédure est bien décrite dans la documentation: fichier: /// c: /program%20files/1cv81/adddoc/ru/v8addoc81.htm#_toc176167634:

La tâche de publication des services Web est réduite pour héberger des fichiers de configuration * .1CWS Web Services dans le répertoire de serveur Web approprié avec des paramètres appropriés pour le serveur Web. Afin d'exécuter la publication de services Web, vous devez exécuter la commande de menu "Administration | Publication de services Web. "

À la suite de l'exécution de cette commande, la fenêtre de publication sera ouverte.

La fenêtre de publication de Web Services contient le chemin d'accès au serveur Web et à deux liste:

  • "Services Web" - une liste de services Web de configuration;
  • "Publication" - une liste de services Web publiés sur le serveur Web spécifié.

Utilisation du bouton composé ... Vous devez spécifier le serveur Web que vous souhaitez publier des services Web.

La fenêtre de sélection du chemin sur le serveur Web vous permet de spécifier le chemin de deux manières:

  • dans l'onglet "Files" - cette méthode est utilisée dans le cas où la publication est effectuée sur le même ordinateur sur lequel le serveur Web est installé. Pour une manière, le répertoire local est spécifié, ce qui correspond à la page Internet avec laquelle le serveur Web publié sera appelé;
  • dans l'onglet Site FTP, cette méthode est utilisée lorsque vous souhaitez publier un service Web sur un ordinateur distant. Pour effectuer la publication, vous devez spécifier les paramètres de la connexion FTP avec ordinateur distant et un répertoire dans lequel le service Web sera publié.

La publication du service Web sélectionné est effectuée à l'aide du bouton "Publier"

Pour annuler la publication du service Web, utilisez le bouton Supprimer.

Vous pouvez publier dans le répertoire local ou sur FTP. Vous pouvez publier sur le serveur distant sur le chemin UNC si le serveur distant entre dans le réseau local.

Après la publication d'un service Web disponible sur "http: //localhost/test.1cws" ou "http://xxx.ru/test.1cws", où xxx.ru - adresse serveur distant Et localhost est l'adresse standard du serveur local.

Autorisation au service Web 1C

Pour accéder au service, vous devez passer de l'authentification.

Les problèmes d'autorisation sont bien révisés ici: http://www.forum.mista.ru/topic.php?id\u003d341168 et dans la documentation de fichier: //// /program%20files/1cv81/adddoc/en/v8adddoc81.htm

Habituellement, le service Web fonctionne sous un utilisateur particulier (plus souvent - spécialement créé). Vous pouvez utiliser l'utilisateur 1c "Joindre" à l'authentification Windows à l'utilisateur Windows iSR_ (pour l'utilisateur pour désactiver l'autorisation 1C). Sinon, vous pouvez effacer la liste des utilisateurs 1c, puis l'autorisation n'est pas requise.

Si plusieurs utilisateurs sont requis, vous pouvez créer plusieurs connexions pour un serveur Web, pour lier chacune d'elles. utilisateur Windows. Et en conséquence, pour vous inscrire en 1C d'accès aux utilisateurs de Windows.

Dans les propriétés, l'utilisateur et le mot de passe de l'objet WS sont utilisés non identifiés 1C, mais le login utilisateur est un serveur Web.

Test du service Web 1C

Pour tester 1C en tant que service Web, utilisez le traitement de traitement TestPrompherep, comme décrit dans la section "Test externe Web Service".

Fichier 1CWS et est une description de la WSDL du service Web 1C.

Utilisation des services de vente au détail

Habituellement, dans les services de vente au détail, servent à fournir divers services aux paiements de la population - le remboursement des prêts, les transferts d'argent, l'achat logiciel etc.

Dans le même temps, pour le service fourni en 1C, un chèque est formé dans lequel les paramètres de transaction sont enregistrés. Après cela, ce chèque est imprimé par le client avec des informations détaillées sur le service fourni. Une vérification préliminaire est possible, de sorte que le client confirme les données introduites de ses mots par sa signature.

Le service peut être intégré différemment dans un programme de vente au détail écrit en 1C (UT, Retail et Autre):

  1. Le traitement ou le code dans la langue 1C peut être écrit, qui effectue tout le travail avec le service.
  2. Un programme qui fonctionne avec le service peut être utilisé et en 1C transmet uniquement des informations sur les chèques de ponction.

Organisation des données de service en 1C

Pour stocker des informations sur la transaction dans le chèque, il est nécessaire de créer une partie supplémentaire de la partie tabulaire "vente sophistiquée" avec des détails:

  • Nomenclature - Reliure pour vérifier la nomenclature.
  • Le paramètre est le lien vers le répertoire "sophistiqué vente: paramètres".
  • La valeur est la valeur du paramètre, type composite. La vue de la chaîne doit être assez longue (1024 caractères) à placer le texte du chèque.

Manuel "Ventes sophistiquées: paramètres" contient une liste des paramètres de transaction.

Pièce de tableau Il est plus rentable d'utiliser qu'un ensemble de détails, car Il peut y en avoir beaucoup d'entre eux à la transaction et dans d'autres contrôles qui ne sont pas liés au service, ces détails ne seront pas utilisés et prendront un dépassement supérieur. De plus, une telle décision est universellement pour tout service et ne nécessite pas la restructuration des données après l'introduction d'un nouveau service.

Le vendeur est fait un onglet séparé (ou un formulaire imprimé pour ne pas modifier la configuration) dans laquelle il peut voir le signe des détails de la transaction pour le chèque.

Utiliser des traitements dans la langue 1c

Considérons l'exemple du service conditionnel de paye pour la configuration "Retail".

  1. Nous commençons dans l'élément prédéfini 1C du répertoire de la nomenclature "Paym". En mode 1C: Entreprises Après avoir mis à jour la configuration, il convient d'attribuer le type de produit "Service".
  2. Dans la procédure "Ajoutez une nomenclature à l'onglet. Partie "Module" Enregistrement des ventes "Nous appelons le traitement du fonctionnement avec le service écrit dans la langue 1c. En cas de paiement réussi, nous écrivons et mènent un chèque:
Si (Nomenclature \u003d Books de référence. Substitution.Paym) et (énumération de dénombrement. Vidaraticschkm. Invidation) Puis traiter la rémunération \u003d fonctions. Double circulation ("Paym"); Formamplate \u003d traitement. Prévenage (); Résultat \u003d formamplage. OpenmOnLyally (); Si le résultat \u003d est incertain, return; Terminé; Ce compte. Recruter (inscription); Terminé;
  1. Le traitement doit imprimer des commandes (si nécessaire), remplissez une partie de la table des ventes complexes et préparez le texte du chèque de vérification des accessoires prédéfinis de "PayMtext".
  2. Dans la procédure "Conduite et imprimer un chèque", le module de contrôle remplaçant le nom de la marchandise au stockage de la demande de vérification. Le texte est remplacé uniquement à la vente, le nom du service est imprimé pour revenir, comme d'habitude.
Inspécifisait la visualisation de la liste. Vidoyeratovschekkm. Facture et échantillonnage. Le règlement de Solka \u003d livres de référence. Substitution.paym alors // Osipov Paymmaster stringcell-accident vente \u003d vente complexe (livres de référence. Vente-paramètres de vente. Si la suggestion de taille à cordes est indéfiniment le produit. Renance \u003d SOCRLP (vente de titulaires de cordes. Terminé;

Une question distincte est de savoir comment assurer l'achèvement de la transaction. Ceux. Si la transaction est passée dans le service, comment le rendre non perdu en 1c. Le chemin le plus optimal est réconcilié par les registres. Mais c'est un sujet de considération séparée.

Utilisation de programmes intégrables de 1c

Xdto.

Souvent XDTO est utilisé dans les services Web. Nous donnons les astuces les plus importantes et les recettes sur l'utilisation de XDTO en 1c.

Xdto dans la plate-forme 1c

Les paquets XDTO décrits dans la branche de configuration "XDOto Objects" sont disponibles pour créer des types et des objets de l'usine XDO de l'usine d'usine mondiale. Il ne devient pas immédiatement apparent.

Certains types dans le schéma n'ont pas de nom pour les obtenir, vous devez passer par les types de hiérarchie.

L'exemple décrit la liste Syste contenant des structures XDTO. Pour créer la structure elle-même, il était nécessaire d'obtenir son type tel ici:

Type \u003d usine.type ("urn: my.r.r.: MasterData: entreprise", "business"). Propriétés. Versez ("Système"). Type;

Problèmes fréquents avec XDTO

Différents formats de schéma XSD

Dans certains formats, les balises sont appelées XS :, dans certains XSD:, mais 1C comprend parfaitement les deux formats. Un jour, il y avait une situation que XSD était normale sans erreur importée en 1C, mais n'a pas créé un seul paquet. La raison était en l'absence d'un attribut cibleNamespace. La balise, respectivement, ne connaissait pas 1C, dans quel paquet pour placer le schéma, mais n'a pas donné d'erreurs.

Service de soutien

Étant donné que le service est une combinaison de deux systèmes - 1C et des erreurs externes peuvent être dans les deux systèmes, ce qui réduit la fiabilité globale du travail.

Afin de mieux comprendre les raisons des défaillances dans le fonctionnement des services, il est recommandé d'utiliser un ensemble de mesures.

Demandes de journalisation

Liens

  • Xdto.
    • Bonne description XDTO http://pro1c.org.ua/index.php?showtopic\u003d214
  • Services Web intéressants gratuits:
    • Aeroflot - Informations sur le calendrier des aéronefs
    • Morfer - la déclinaison des noms http://www.morpher.ru/webservices/morpher.aspx
  • Untered:
    • Installation et utilisation de services Web
      • v8: Comment changer le fichier de configuration des aplaches?
      • v8: Continuer le sujet avec Web Services - Je ne peux pas connecter le service Web
      • v8: Sur l'utilisation de services Web - je ne peux pas créer de proxy ...
      • Carnet de connaissances: V8: Utilisation de services Web externes en 1C: Entreprise 8;

De nos jours, un coût d'application rarement moderne sans API. Ceci est juste pour un site simple et pour des systèmes distribués à charge élevée. Test API - est l'une des tâches principales du processus d'assurance de la qualité. Il n'est pas surprenant que la demande de testeurs pouvant tester l'API augmente au jour le jour. Dans ce cours, vous recevrez une compréhension des méthodes, des outils et des approches dans les tests de l'API, acquériront les connaissances nécessaires, qui seront sans aucun doute reflétés dans votre valeur en tant que spécialiste des tests.

Ce cours sera utile aux étudiants familiarisés avec les bases du test du logiciel qui souhaitent augmenter encore et augmenter leurs compétences.

Programme de cours:

Leçon 1. Contribution. Protocole de savon

  • Brièvement sur le conférencier;
  • But du cours;
  • Qu'est-ce que l'API, WS et pourquoi sont-ils nécessaires?
  • Le rôle des tests de l'API dans le processus d'assurance de la qualité;
  • Vue d'ensemble des outils de test WS;
  • Techniques utilisées dans des tests WS;
  • L'histoire de l'émergence du savon;
  • Terminologie et concepts principaux (XML, XSD, Point d'extrémité, WSDL).

Leçon 2: protocole de savon. Reste d'architecture.

  • Terminologie et concepts principaux (UDDI, XSLT, XPATH, XQUERY, HTTP METHODES, Statuts HTTP);
  • Structure et composants principaux du savon;
  • Champ d'application;
  • Caractéristiques du travail;
  • Avantages et inconvénients;
  • Caractéristiques architecture de repos;
  • Terminologie et concepts principaux (Wadl, reposant, Json, Jsonpath);
  • Principes de repos;
  • Code d'état et statuts majeurs;
  • Verbes crud;
  • Avantages et inconvénients.

Leçon 3. Connaissance de Soapui. Travailler avec le projet de repos

  • Installation Java;
  • Installation SOPUI;
  • Vue d'ensemble des principaux éléments de l'interface;
  • Connecter un projet de formation;
  • Examen des méthodes de projet;
  • Envoi d'une demande et d'une analyse de la réponse reçue;
  • Étude des services Web disponibles du projet;
  • Élaborer un plan de test;
  • Écrit des cas de test;
  • Éléments "TestSuite", "TESTCASE", "TESTSTEPS".

Leçon 4. Travailler avec le projet de repos (XML)

  • Bloquer les "assertions";
  • Lancer des tests à différents niveaux;
  • Élément "propriétés", les principales caractéristiques;
  • Travailler avec des propriétés;
  • Élément "transfert de propriété";
  • Travailler avec des assertions.

Leçon 5. Travailler avec le projet de repos (JSON)

  • Conditions et branches;
  • Travailler avec des assertions;
  • Testrunner, fonctionnalités de travail;
  • Exécuter TS, tc de la ligne de commande;
  • Travailler avec le coureur de test;
  • Travailler avec des scripts groovy.

Leçon 6. Travailler avec des scripts groovy

  • Travailler avec des données statiques et dynamiques;
  • Nous générons des données de test;
  • Nous recevons des données de "propriétés";
  • Données d'enregistrement et de transfert;
  • Conditions et branches;
  • Affirmation de script.

Leçon 7. Caractéristiques supplémentaires

  • Connexion des bibliothèques externes et des classes personnalisées;
  • SERVICES MOINS;
  • Pourquoi les maxes services ont-ils besoin?
  • Échantillon de travail avec un service simulé;
  • Mais qu'en est-il de CI?
  • Installez Jenkins;
  • Démarrer un projet sur Jenkins.


Avez-vous aimé l'article? Partagez-le