Contactos

Pruebas de servicios web. Pruebas de API SOAP. Diferentes formatos XSD -

Usando el programa Servicios web. Herramienta de validación para WSDL y SOAP.

Aparentemente, con la llegada de nuevas tecnologías y estándares, como XML y HTTP, los servicios web proporcionaron su lugar en el Panteón de la Innovación de Internet. Pero, ¿cómo surgió esta innovación?

El concepto principal de servicios web se puede rastrear en los Estados Unidos hasta mediados de la década de 1960. En la industria del transporte, por ejemplo, en las compañías de ferrocarriles y envíos, se presentó un nuevo concepto para intercambiar datos electrónicos entre computadoras, se desarrolló más a la tecnología EDI (intercambio electrónico de datos: intercambio de datos electrónicos). Por primera vez, escuché sobre EDI del profesor de una escuela de negocios en 1980.

En 1996, el Instituto Nacional de Normas y Tecnologías de los Estados Unidos anunció la norma para EDI en las Publicaciones Federales de Normas de Procesamiento de Información (FIPS PUB 161-2). Según la especificación publicada, EDI es el estándar de compartir mensajes estrictamente formateados entre las computadoras. El procesamiento de mensajes recibidos se realiza solo con una computadora, y estos mensajes generalmente no están destinados a ser interpretados por una persona. Esto es exactamente de qué servicios web están involucrados, excepto que a mediados de la década de 1960 no existió XML, Internet y la World Wide Web.

Para aquellos que no están muy familiarizados con los servicios web, consideraré brevemente las definiciones y los principales componentes de los servicios web.

¿Qué son los servicios web?

El servicio web es sistema de softwareDiseñado para apoyar las interacciones entre interrelaciones entre los recursos de la computación de la red y el uso de mensajes SOAP (protocolo de acceso de objetos simple) definido por el consorcio de consorcio WORL WEW WEW WORL.

El protocolo de acceso de objetos simple (SAW) es un protocolo expandible simple para el cual se intercambia la mensajería compartida y escrita en un entorno de red distribuido descentralizado. Los mensajes SOAP se registran en un formato de lenguaje de lenguaje de marcado extensible (XML): formato de texto simple y flexible que comienza desde el lenguaje de marcado generalizado estándar (SGML), que fue desarrollado por la Organización Internacional para la Organización de Normalización (ISO 8879: 1986).

Servicios web Descripción El idioma (WSDL) se basa en Lenguaje xmlLo que describe la interfaz de los servicios web.

¿Qué sucede al intercambiar mensajes de jabón erróneos? ¿Qué pasaría si el mensaje de jabón erróneo se procesara sin previo aviso e incluso se usó para generar información diseñada para tomar una decisión?

En la práctica, es imposible decir, correctamente o no hay datos en el mensaje SOAP. Sin embargo, puede verificar el mensaje SOAP para verlo correctamente, ver su definición de interfaz o WSDL.

En la vida real, los problemas de depuración en los mensajes de jabón son muy difíciles. Si hay algún error en el mensaje SOAP, el código de respuesta HTTP 500 se recibe desde el servidor de servicios web. Los servidores de servicio web no proporcionan información detallada sobre qué parte del mensaje SOAP es un problema. Puede encontrar incluso la peor situación cuando se aceptan las respuestas de SOAP correctas desde el servidor de servicios web sin ningún mensaje de error, y ni usted ni los servidores de su servicio web pueden entender los problemas en sus consultas de jabón y respuestas. Por ejemplo, desea solicitar las cotizaciones de acciones actuales de la Compañía B, pero envió un mensaje SOAP al servidor de servicios web con etiquetas de escritura incorrectamente. El servidor de servicios web puede ignorar las etiquetas incorrectas y proporcionar el valor predeterminado en el mensaje SOAP de respuesta, por ejemplo, el cotización de stock de la compañía. Si permanece desapercibido, las consecuencias pueden ser desastrosas.

Los problemas de este tipo se pueden prevenir de antemano con herramienta web Servicios Herramienta de validación para WSDL y SOAP. Le permite verificar la corrección de los mensajes de SOAP utilizando el idioma del idioma de la definición del servicio web (WSDL), incluso antes de implementar aplicaciones utilizando el servicio web. El programa analiza la sintaxis y la corrección de sus mensajes de jabón con WSDL e indica problemas, informando en detalle sobre errores y líneas. Como resultado, ya no recibirá mensajes molestos HTTP 500. ¿Sus mensajes de jabón están encriptados? No hay problemas. El programa los decide y verifica la exactitud de los mensajes de jabón descifrado.

Este programa se creó para ayudar a los empleados de los servicios de servicios web de IBM, relacionados de manera decisiva con problemas de servicio web en el servidor de aplicaciones de IBM® WebSphere, que son reportados por los clientes de todo el mundo. El programa está diseñado para verificar la corrección de los mensajes de jabón. Si el mensaje SOAP tiene una firma digital, el programa lo comprobará. Usando la herramienta de validación de servicios web para WSDL y SOAP, incluso puede enviar mensajes SOAP a los servidores de servicios web y recibir mensajes de SOAP de respuesta. El programa se creó para eliminar los problemas en la operación industrial a través de su uso en las primeras etapas del desarrollo, así como para reducir el tiempo para resolver problemas derivados durante la operación.

Crearemos un servicio web muy simple. Primero, crearemos un simple expandido Java ™. Después de revisar la aplicación Java, usamos el desarrollador de aplicaciones IBM Rational® para WebSphere® Software generará un servicio web. Luego realizamos algunos cambios en el servicio web generado. Finalmente, usamos la herramienta de validación de servicios web para WSDL y SOAP para crear, verificar, transmitir y recibir mensajes de jabón.

Se puede crear un simple servicio web utilizando el desarrollador de aplicaciones de IBM RAUCIONAL para WebSphere Software Program. Los servicios web se pueden crear de dos maneras:

  1. Desarrollo "Top Down" (de arriba abajo) Desarrollo en el que se generan las clases de Java que implementan los servicios web de WSDL.
  2. Desarrollo "de abajo hacia arriba" (abajo-hacia arriba), en el que se genera el servicio web desde el componente Java Bean o el componente corporativo de Java Bean.

En el siguiente ejemplo, implementamos el servicio web utilizando el método de desarrollo desde abajo hacia arriba. Primero, crearemos una aplicación de Java simple. Luego generaremos el servicio web de Java Bean Component desde la aplicación Java utilizando el desarrollador de aplicaciones de IBM Rational para el programa WebSphere Software.

Creando una aplicación Java

Primero, crearemos una solicitud de Java, un saludo excepcional. Si no se especifica el nombre, la aplicación devolverá el texto "Hello, Buddy!". Si se especifica el nombre, la aplicación devolverá el texto "Hola", seguido de este nombre. A continuación se muestra el código de aplicación Java del Demowebservice ubicado en el paquete de demostración. El método Hello () devuelve una cadena dependiente de nombre.

Listado 1. Demowebservice.Java.
/ * * @Author: Jinwoo Hwang * Copyright 2010 IBM Corporation * / Paquete Demo; Clase pública Demowebservice (nombre de cadena) (si (nombre \u003d\u003d null) vuelve "¡Hola, amigo!"; Else vuelve "Hola," + nombre + "!"))

Pruebas de solicitud de Java

Es muy importante probar la solicitud de Java antes de crear un servicio web. Para iniciar la aplicación, puede escribir una clase con el método principal (). También puede utilizar la funcionalidad del cliente de prueba universal proporcionado por el producto IBM Rational Application Developer V7 para pruebas rápidas sin escribir un código de prueba. Es suficiente para seleccionar Universal Test Client desde el menú contextual de la clase Java para iniciar el cliente de prueba.

  1. En el cliente de prueba universal se expande Objetos\u003e Demowebservice..
  2. Seleccione el método hola..
  3. Ingrese una cadena o su nombre en el campo Valor y haz clic Invocar.

También puede realizar una prueba especificando el parámetro NULL y vea qué sucede. Si el parámetro null se transmite al método Hello (), la cadena "Hola, amigo!" Se devuelve, como se esperaba.


Creando un servicio web

Mientras todo funciona bien. Continuaremos a generar un servicio web de la clase Java utilizando el método de desarrollo de servicios web desde abajo hasta arriba.

  1. Seleccione la aplicación Demowebservice Java y cree un nuevo servicio web del desarrollador de aplicaciones de IBM Rational.

  1. Ya que hemos creado una clase Java, seleccione De abajo hacia arriba el servicio web de Java Bean En la lista Tipo de servicio web. Escoger Iniciar cliente. y haz clic TERMINAR. Si tuviéramos una clase EJB, también podríamos escribir un componente EJB para generar un servicio web.

Si todo salió bien, verás en los recursos de Java junto al Demowebservice.java generado por DemowebserviceLegate.java.


Al ver a DemowebserviceElegate.java, puede encontrar el Servicio web de Java @ javax.jws.webservice anotation, que especifica TargetNamespace, ServiceServeame y PortName en la clase DemowebserviceElegate. Se crea una instancia del Demowebservice y el método Hello () de Demowebservice es creado por otro método Hello (). Si lo desea, obtenga más información sobre las anotaciones de servicios web de Java, consulte el documento de solicitud de especificación Java (JSR) 181. Metadatos de servicio web para la plataforma Java.

Listado 2. DemowebserviceElegate.java.
/ * * @Author: Jinwoo Hwang * Copyright 2010 IBM Corporation * / Paquete Demo; @ Javax.jws.webservice (targetnamespace \u003d "http: // demo /", servicedename \u003d "demowebserviceservice", portname \u003d "demowebserviceport") Clase pública DemowebserviceElegate (Demo.DEMOWEBSERVICE _DEMOWEBSERVICE \u003d NUEVO DEMO.DEMOWEBSERVICE (); cadena pública hola Nombre de la cadena) (devuelva _demowebservice.hello (nombre);))

Creando wsdl.

En proyecto programa cliente También puede encontrar que se han generado los archivos Demowebserviceservice.wsdl y Demowebserviceservice_schema1.xsd. Demowebserviceservice.WSDL contiene información en la definición del servicio web de definición de idioma que describe servicios de red Para la solicitud de Java creada anteriormente. Demowebserviceservice_schema1.xsd contiene un esquema XML que describe la estructura del tipo de datos utilizada en los mensajes de jabón.


Al ver el archivo Demowebserviceservice.WSDL, puede ver que tiene un conjunto de elementos de definición (elemento de definiciones). Los elementos de definición tienen 6 elementos:

  • tipos (tipos);
  • mensaje (mensaje);
  • portType (tipo de puerto);
  • encuadernación (enlace);
  • servicio (servicio);
  • puerto.

Tipos. Define los tipos de datos utilizados al intercambiar mensajes. En DemowebserviceRice.WSDL, importamos el Demowebserviceservice_schema1.xsd en lugar de determinar los tipos de datos en el archivo WSDL.

Mensaje Define los mensajes, el intercambio que se produce. Tenemos 2 publicaciones: "Hola" y "HELLORESPONSE". El mensaje HELLO tiene una pieza llamada "parámetros". Esta parte tiene el elemento "TNS: HELLO". El mensaje HELLORESPONSE tiene una parte llamada "Parámetros", que es similar a Hello. Esta parte tiene el elemento "TNS: HELLORESPONSE". Los elementos HELLO y HELLORESPONSE se definen en el archivo Demowebserviceservice_schema1.xsd. Pronto los consideraremos.

Tipo de puerto - Puntos de operación de terminales soportados. Cada operación proporciona mensajes de entrada y salida. Nuestra operación "Hello" consiste en el mensaje de entrada "TNS: HELLO" y la salida "TNS: HELLORESPONSE". Estas operaciones corresponden al intercambio de la respuesta. WSDL proporciona 4 primitivas de cambio diferentes para el punto final:

  • unidireccional (unidireccional);
  • solicitar respuesta;
  • solicit-Response (Requerir-Responder);
  • notificación.

Con el intercambio unidireccional, el punto terminal solo recibe un mensaje. Al intercambiar la "consulta-respuesta", el punto final acepta el mensaje y envía el mensaje apropiado. Cuando se utiliza el intercambio "Requerir respuesta", el punto final envía el mensaje y acepta el mensaje apropiado. Al intercambiar el punto de terminal de "notificación" solo envía un mensaje.

Unión Define los detalles del protocolo y la especificación de formato de mensaje para operaciones y mensajes definidos por el tipo de puerto. Para el atributo de estilo, usamos el valor del documento. El atributo de estilo proporciona 2 estilos de mensajes diferentes: RPC y documento. El mensaje de estilo RPC contiene parámetros y valores devueltos. Los mensajes de estilo de documento contienen documentos. El atributo de transporte indica el URI para el transporte de jabón. El valor especificado http://schemas.xmlsoap.org/SOAP/HTTP significa que la enlace HTTP se utilizará en la especificación de SOAP. URI Para el encabezado HTTP de SOAPAY para el jabón de enlace HTTP se especifica en el atributo SoapAction. Dado que se usa la enlace HTTP SOAP, el valor de atributo SOAPAY es obligatorio. Para el atributo SoapAction, usamos una cadena vacía "". El SOAP: Elemento del cuerpo determina cómo se componen las partes del mensaje dentro del elemento de mensaje de jabón del cuerpo. El atributo de uso proporciona 2 opciones diferentes: literal (literal) y codificado (codificado). Usamos literal. Esto significa que hemos elegido la definición de un esquema específico utilizando el atributo o elemento de tipo. Cuando se utiliza la versión codificada, el tipo abstracto se usa con reglas de codificación.

Servicio. Determina el conjunto de puertos utilizados.

Puerto. Define el DOPO DE TERMINAL DE LA COMUNICACIÓN especificando la dirección de red para la encuadernación.

dirección de red para la encuadernación. En nuestro caso, la dirección de punto final de SOAP es http: // localhost: 9081 / HelloworldwsProject / DemowebserviceRice.

Listado 3. Demowebserviceservice.WSDL

Creando un esquema

Importamos Demowebserviceservice_schema1.xsd de Demowebserviceservice.WSDL. Considere el archivo Demowebserviceservice_schema1.xsd. Está escrito en el esquema XML del lenguaje de definición para describir la estructura y restricciones de los contenidos de los documentos XML. Tenemos 2 elementos: Hola y Helltoresponse. Cada elemento es tipo. El tipo HELLO tiene un elemento "arg0", que es una cadena. El elemento "ARG0" es opcional, ya que el valor del atributo de los minuctos en su AD es igual a 0. Si el atributo MinCHURS se establece en 1 o más, se debe especificar el elemento. Lo mismo se aplica al elemento "Retorno" en el tipo HELLORESPONSE.

Listado 4. Demowebserviceservice_schema1.xsd.

Comenzar con la herramienta de validación de servicios web para el programa WSDL y SOAP

Entonces, miramos a WSDL y el esquema. Inicie el servidor de servicio web para que pueda activar el servicio web de la herramienta de validación de servicios web para WSDL y SOAP.

Para iniciar la herramienta de validación de servicios web para WSDL y SOAP, el Java 6 (o superior) y la API de codificación digital y la API de decodificación XML correspondiente a la World Wide Web Web Consorcio Consorcio Especificaciones "Sintaxis y procesamiento de cifrado XML" (http: / / www se requieren w3.org/tr/xmlenc-core/).

IBM Java 6 proporciona la implementación de JSR 106: API de cifrado digital XML. Si ha instalado el sistema IBM Java 6, significa que todo está listo para el trabajo e instale nada más.

Si está en su tiempo de ejecución de Java 6, por ejemplo, Sun Microsystems ™ Java 6, no hay API de cifrado digital XML, debe instalar bibliotecas que implementen el paquete JSR 106, o APACHE ™ XML Security versión 1.4.3, que se puede descargar en HTTP: / /santuario.apache.org/. Es suficiente solo para descargar una distribución binaria, descomprima en el directorio y especifique el programa instrumental donde este directorio se encuentra utilizando los parámetros de línea de comandos -vmargs y -Daxs.

En el momento de escribir este artículo, la herramienta de validación de servicios web para WSDL y SOAP admite JSR 106 y Apache XML Security versión 1.4.3 para el cifrado digital y descifrado XML. Si desea verificar las firmas digitales en los mensajes SOAP, necesita bibliotecas que implementen API de firma digital JSR 105: XML. Afortunadamente, las máquinas virtuales Java 6 de Sun Microsystems e IBM proporcionan implementaciones de JSR 105. Es por eso que Java 6 fue elegida como requerimientos mínimos Por tiempo de ejecución de Java. Si su entorno Java 6 no proporciona bibliotecas que implementan JSR 105, debe encontrarlas.

Servicios web La herramienta de validación para el programa WSDL y SOAP se puede descargar de forma gratuita. Instalarlo es muy simple. Descomprima el paquete al directorio y ejecute wsvt.exe. Si el tuyo máquina virtual El Java predeterminado no es un entorno Java 6 que admite firmas digitales XML y cifrado digital y descifrado, debe especificar la ubicación de Java 6 con el parámetro -vm, por ejemplo:

wSVT -VM C: \\ IBMJAVA6 \\ bin \\ java.exe

Nuevamente, si tiene IBM Java 6, no necesita nada más. Todo lo que necesita ya habilitado en IBM Java 6. Cuando utilice Java 6 de Sun Microsystems, debe especificar la ubicación del programa Apache XML Security para descifrar los mensajes de jabón cifrado.

Por ejemplo, el siguiente comando iniciará un programa con Sun Java 6 y Apache XML Security Biblioteca versión 1.4.3, ubicada en el directorio C: \\ xml-Security-1_4_3 \\ LIBS:

wsvt -vm c: \\ sunjava6 \\ bin \\ java.exe -vmargs -daxs \u003d c: \\ xml-seguridad-1_4_3 \\ libs

A continuación se muestra una lista de los archivos de la Biblioteca de Seguridad de Apache XML que realmente utilizan por la herramienta de validación de servicios web para WSDL y SOAP, aunque Apache XML Security versión 1.4.3 viene con 9 archivos JAR:
COMMONS-LOGGINGING.JAR;
serializador .jar;
xalan.jar;
Xmlsec-1.4.3.jar.

En Manifest.MF, las herramientas de validación de servicios web para programas WSDL y SOAP son los siguientes:
Paquete-activationpolicy: Perezoso.
Bundle-Classpath: .,
Externo: $ Hacha $ / Commons-logging.jar,
Externo: $ hacha $ / serializer.jar,
Externo: $ hacha $ / xalan.jar,
Externo: $ hacha $ / xmlsec-1.4.3.jar

Es por eso que fue necesario especificar -VMARGS -DAXS \u003d C: \\ XML-SECURITY-1_4_3 \\ LIBS para que el ambiente de Sun Java 6 esté descifrado mensajes de jabón cifrado descifrado.

Pasé mucho tiempo para eliminar las clases e incompatibilidades para conectarse a las clases XML que se encuentran en el entorno de tiempo de ejecución de Sun Java, Security Apache XML y algunos complementos Eclipse. Configuración del entorno de tiempo de ejecución de IBM Java ha pasado sin dificultad, ya que este entorno viene con la implementación de JSR 106 y no requiere seguridad de Apache XML.

Creación de proyectos

Ahora, después de la puesta en marcha y corriendo programa instrumental, Puedes crear un nuevo proyecto. El proyecto puede contener un archivo WSDL, varios archivos de esquema asociados con el archivo WSDL y los mensajes SOAP en archivos XML. Si hay varios archivos WSDL en el proyecto, solo se usa uno de ellos, mientras que otros se ignoran al verificar la exactitud del mensaje SOAP de archivos XML. Para usar otro archivo WSDL, debe crear un proyecto separado. Cada mensaje SOAP debe estar contenido en un archivo con extension.xml, de lo contrario, no se considerará como un mensaje de jabón.

  1. Haz clic derecho y seleccione Nuevo\u003e proyecto..

  1. Escoger Proyecto. en GENERAL.

  1. Ingrese "Proyecto de prueba" en el campo Nombre del proyecto. y haz clic TERMINAR.

Importar WSDL y esquemas.

Creamos el proyecto "Proyecto de prueba". Ahora puedes importar WSDL y XSD.

  1. Seleccione un proyecto, y luego en el menú contextual, seleccione Importar.

  1. Escoger Sistema de archivos en GENERAL.

  1. Seleccione un directorio en el que se almacenan WSDL y XSD.
  2. Seleccione 2 archivos (DemowebserviceService.WSDL y Demowebserviceservice_schema1.xsd) y haga clic en TERMINAR.

Resumen de WSDL y esquemas

Ahora tenemos un proyecto con WSDL y XSD. Puede hacer doble clic en el WSDL de clic izquierdo para ver WSDL en modo de diseño y fuente ( fuente). En el modo de diseño, puede visualizar el servicio web con datos de entrada y salida.


En el modo de origen, puede ver y editar WSDL en un editor de texto.


Si los archivos XSD no se pueden abrir en el Editor XSD, puede abrirlos en el Editor XML seleccionando Abierto con\u003e Editor XML En el menú contextual de este archivo XSD.


Abrimos Demowebserviceservice_schema1.xsd en el editor XML.


Creando un mensaje de jabón

Entonces, tenemos un WSDL y un esquema listo para verificar la corrección de los mensajes de jabón. Continuaremos a probar la herramienta de validación de servicios web para el programa WSDL y SOAP con un mensaje SOAP. Debe habilitar el mensaje SOAP en el proyecto. El mensaje SOAP debe estar contenido en el archivo con extensión .xml para que pueda verificarse correctamente.

  1. Escoger Nuevo\u003e XML. Para crear mensajes de jabón en el proyecto.

  1. Escoger Proyecto de prueba. Para la carpeta principal del nuevo mensaje SOAP. Si el archivo aún no está seleccionado, ingrese "demosoapmessage.xml" en el campo Nombre del archivo. y haz clic TERMINAR.

El programa llama automáticamente un editor XML con un nuevo archivo XML. No tiene nada más que una cadena con una versión y una codificación XML. Es bueno que tengamos al menos algo antes de la creación del mensaje de jabón desde cero. ¿Sabes cómo hacer un mensaje de jabón? No te preocupes. En la siguiente sección, consideraremos la acción para crearlo en pasos.


Para crear un mensaje SOAP, puede activar el servicio "HELLO" usando el parámetro "Parámetros" con la indicación de mi nombre - "Jinwoo". Por supuesto, puedes usar tu propio nombre. Utilizado el espacio de nombres http: // Demo /. Tenga cuidado: se escribe como http: // Demo /, no http: // Demo, es esencial.

Listado 5. HelloworldsoapMessage.xml.
Jinwoo.

¿Ves este problema de mensaje de jabón? Si es así, no te preocupes. Nos ocuparemos de esto más tarde.


Mensajería de jabón

¿Está listo para enviar un mensaje al servidor de servicios web?

  1. Seleccione Mensaje SOAP y seleccione

  1. En la solicitud de SOAP de transmisión y reciba la solicitud de jabón y reciba la ventana de respuesta de SOAP, puede completar Dirección de Servicio, Jabonera y Tipo de contenido.. En esta solicitud, no necesitamos especificar SOAPATION, ya que usamos una cadena vacía "" para el atributo SOAPAY en la sección del archivo Demowebserviceservice.wSDL.
  2. Ingrese http: // localhost: 9081 / HelloworldwsProject / DemowebserviceService en el campo Dirección de ServicioSi el servidor se ejecuta en la computadora local en el puerto localhost: 9081. De lo contrario, debe ingresar la dirección real a la que está disponible el servicio web.
  3. Escoger texto / HTML. Para el campo Tipo de contenido..
  4. presiona el botón está bien. Para enviar mensajes de jabón al servidor.

Recibir mensajes de jabón

Si el servidor está configurado y en ejecución, debe obtener una respuesta de SOAP. Si la respuesta no llega, verifique la corrección de la dirección y el tipo de contenido.


Comprobando la exactitud del mensaje SOAP.

¡Excelente! Aceptamos una respuesta de jabón. También persiste en el proyecto. Pero espera. ¿Ves algo mal? Tenemos "Hola, amigo!" En lugar de "Hola, Jinwoo!". ¿Algo salió mal? ¿No tienes un concepto?

Desafortunadamente, el servidor de servicios web no nos permitió saber qué estaba mal. No hay advertencias. La situación en la que se envían respuestas de jabón impredecibles y el servidor de servicios web no tiene el concepto que no suceda, puede ser muy peligroso. Incluso los destinatarios de las respuestas de SOAP no pueden notar problemas en el mensaje SOAP en consideración.

Servicios web La herramienta de validación para WSDL y SOAP, le permite determinar lo que está sucediendo, no es así.

Listado 6. Respuesta
¡Hola amigo!
  1. Seleccione un mensaje de SOAP de respuesta y haga clic en Validar..

Herramienta de validación de servicios web para WSDL y SOAP ha encontrado un error en el mensaje SOAP.

Mensaje de SOAP no válido: CVC-Complejo-Type.2.4.a: El contenido no válido se encontró que comenzó con el elemento "parámetros". Uno de "(arg0) se acelera.

Edición de mensajes de jabón

  1. El programa se queja del valor "Parámetros". Cámbialo a ARG0 y ahorre.
Listado 7. Mensaje de jabón cambiado
Jinwoo.
  1. Compruebe la exactitud del mensaje de jabón de respuesta modificada. No aparecen más mensajes de error.

  1. Ahora estamos listos para enviar una respuesta modificada al servidor. Seleccione Mensaje SOAP y luego seleccione Transmitir la solicitud de jabón y recibir la respuesta de SOAP.

  1. En la solicitud de SOAP de transmisión y reciba la ventana de respuesta SOAP, ingrese http: // localhost: 9081 / HelloworldwsProject / DemowebserviceService en el campo Dirección de ServicioSi el servidor se ejecuta en el puerto localhost: 9081.
  2. Escoger texto / HTML. Para el campo Tipo de contenido. y haz clic está bien..

Esta vez, como se esperaba, la respuesta correcta viene.


Listado 8. Respuesta de jabón
Hola, Jinwoo!

Detección del espacio de nombres impropio

¿Qué sucede si envías un mensaje con un espacio de nombres incorrecto?

  1. Cambie el espacio de nombres en http: // Demo2 / Guardar el mensaje.

Listado 9. Cambie el espacio de nombres
Jinwoo.
  1. A continuación, puede enviar una solicitud al servidor.

Verá una situación excepcional.


El servidor de servicio web pasó en información de respuesta sobre situación excepcional IoException, pero esta información no es suficiente para detectar un error. Verifique la corrección del mensaje utilizando el programa de herramientas si desea obtener datos más detallados para resolver el problema.


El programa informa: "Mensaje de jabón no válido: CVC-Complejo-Type.2.4.a: el contenido no válido se encontró que comenzó con el elemento 'NS0: Hola". Uno de "(" http: // Demo / ": Hola," http: // demo / ": helloresponse)" se espera ".

Este mensaje indica que el valor se espera http: // Demo /. Es este, y no es un código de respuesta HTTP 500, necesitamos saber.


Comprobando la exactitud de los mensajes de jabón cifrado.

¿Qué pasa si sus mensajes de jabón están encriptados? No hay problema si tiene llaves y contraseñas. Simplemente seleccione el mensaje SOAP y Validar. Así como esto se hace para cualquier otro mensaje de jabón ordinario. Si su mensaje SOAP está encriptado, aparece una solicitud en la pantalla similar a la que se muestra en la Figura 35.


En el momento de esta escritura, se admiten 3 tipos de tiendas clave:

  1. Java Key Store (JKS).
  2. Java Cryptography Extension Key Store (Jeks).
  3. Estándar de sintaxis de intercambio de información personal (Normas de criptografía de clave pública # 12).

Debe proporcionar información sobre su tienda clave: nombre de archivo, tipo de archivo y contraseña. Si la información es correcta, debe seleccionar la clave y la contraseña. También puede encontrar información sobre el almacenamiento de teclas y la lista de claves y certificados en la tienda de claves, por ejemplo, el tipo de almacenamiento clave, el nombre del proveedor, la versión del proveedor, la información del proveedor, el tipo de clave, el tipo de creación, el tipo de certificado, el algoritmo y el formato.


Si toda la información es correcta, el programa generará un mensaje de jabón descifrado y verificará su corrección.


Los siguientes algoritmos de cifrado se admiten actualmente:

  • Estándar de cifrado avanzado (AES) en modo de encadenamiento de bloques de cifrado (CBC) con vector de inicialización (128/192/256 bits).
  • Cifrado de cifrado avanzado (AES) Cifrado de claves (128/192/256 BITS).
  • Algoritmo de cifrado de datos triple Modos de operación (Triple-des) Encriptación de llave.
  • Algoritmo de cifrado de datos triples Modos de operación (triple-des) Cifrado de clave en modo de encadenamiento de bloques de cifrado (CBC).
  • Especificaciones de criptografía RSA Versión 1.5.
  • El relleno de cifrado asimétrico óptimo RSA (OAEP) es un método con una función de generación de máscara.

Comprobando la corrección de los mensajes de jabón con una firma digital.

¿Qué pasa si su mensaje SOAP tiene una firma digital? Simplemente seleccione el mensaje SOAP y luego seleccione Mensaje de jabón de la firma digital Verificación.


Si un firma digital Correcto, verá la siguiente pantalla:


De lo contrario, el programa informará un error en la firma. Las siguientes especificaciones y algoritmos de firma digital se admiten actualmente:

  • Algoritmo de hash seguro 1 (SHA-1)
  • Código de autenticación del mensaje Hash (HMAC)
  • Algoritmo de firma digital (DSA)
  • Normas de criptografía de clave pública (PKCS # 1)
  • Algoritmo de cifrado RSA con algoritmo de hash seguro (SHA-1)
  • Versión XML canónica 1.0 y 1.1
  • Transformaciones XSL (XSLT) Versión 1.0
  • Idioma de ruta XML (XPATH) versión 1.0
  • BASE64.

Acceso al Servicio Nacional de Catering de METE de EE. UU. Mediante Mensajes SOAP

Creado y probado por US Simple Web Service está funcionando bien. Puede ser usado este programa ¿En el entorno "real"? Puede intentar trabajar con el servicio web nacional real de EE. UU. Proporcionado por la U.S. Administración Nacional Oceánica y Atmosférica (NOAA).

  1. Crear un proyecto.

  1. Cree un código de mensaje SOAP XML.


El National METE Working de los EE. UU. Ofrece muchos servicios web diferentes. Puede intentar trabajar con el Servicio NDFDGENBYDAY, que proporciona pronósticos meteorológicos para un punto con una latitud y longitud determinadas.

Para acceder a ndfdgenbyday, debe proporcionar la siguiente información:

Tabla 1. NDFDGenByDay.
Nombre del servicio (nombre de servicio)Ndfdgenbyday
Punto final (terminal)http://www.weather.gov/forecasts/xml/soap_server/ndfdxmlserver.php.
SoapAction (jabón-acción)http://www.weather.gov/forecasts/xml/dwmlgen/wsdl/ndfdxml.wsdl#ndfdgenbyday
codingstyle (estilo de codificación)http://schemas.xmlsoap.org/soap/encoding/
Espacio de nombres (espacio de nombres)http://www.weather.gov/forecasts/xml/dwmlgen/wsdl/ndfdxml.wsdl
latitud (latitud)Número decimal
longitud (longitud)Número decimal
startdate (fecha inicial)fecha
numdays (número de días)Entero
formato (formato)Línea

En este ejemplo, queremos crear una solicitud de SOAP para recibir un pronóstico semanal para la localidad con coordenadas (LAT38.9, LON-77.01), a partir de 2010-07-23 en formato de 24 horas:

Listado 10. Solicitud de jabón
38.99 -77.01 2010-07-23 7 24 por hora

No indicamos el espacio de nombres, porque el servicio funcionó sin él. Si surge algún problema con el espacio de nombres, configúrelo.


Seleccione el mensaje I. Transmitir la solicitud de jabón y recibir la respuesta de SOAP En la herramienta de validación de servicios web para WSDL y SOAP.

Tabla 2. Solicitud de información
NombreValor
Punto final (terminal) http://www.weather.gov/forecasts/xml/soap_server/ndfdxmlserver.php.
SoapAction (jabón-acción) http://www.weather.gov/forecasts/xml/dwmlgen/wsdl/ndfdxml.wsdl#ndfdgenbyday
Tipo de contenido (tipo de contenido)texto / XML; Charset \u003d UTF-8

Ahora los datos de proyección se han vuelto mucho más fáciles de leer.


Si este consejo parecerá demasiado conveniente para usted, puede usar su propio método de formato HTML. La mayoría de los servicios web ofrecen resultados en un formato XML, por lo que no tiene que recurrir a este técnico constantemente.

Conclusión

Hemos creado, transformado, aceptado y comprobado la corrección de los mensajes SOAP utilizando la herramienta de validación de servicios web para WSDL y SOAP. Este programa le permite identificar con precisión los problemas que la mayoría de los servidores de servicio web ni siquiera pueden detectar que puede llevar a graves consecuencias en la vida real. El uso de este programa en la etapa de desarrollo hace posible reducir el tiempo de solución de problemas durante la operación.

¡Hola!

En varios artículos, hablaré sobre las posibilidades de probar con Soapui, ya que el trabajo de servicios web de 1C. También daré ejemplos de retorno de los documentos de 1C en formato PDF y archivos XML complejos. Sin embargo, algunas cosas son similares a eso, consideraré ejemplos más complejos de trabajo con servicios web. Pero primero para comenzar, consideraré el proceso de ejecutar servicios web y trabajaré con Soapui para que sea más fácil entender su funcionamiento desde cero.

1. Servicio web simple

Para empezar, tome una configuración de marco sin servicios web y pase por los pasos para crearlos.

Agregue un nuevo servicio web llamado Test1 y cree una operación de hola con un tipo de cadena devuelta. Los nombres de servicio web y las operaciones son mejores para establecer siempre en latín.

También necesita especificar el espacio de nombres URI y el nombre del archivo de publicación:

Cuando presiona la lupa en el campo "Field de nombre de procedimiento", se abrirá el módulo de servicio web y puede implementar la función HELLO.

Hola () Función Retorno "Fila del servicio web 1C"; Funcionamiento final

2. Publicación del servicio web.

Ahora que la función resultante está disponible en HTTP, debe publicar nuestro servicio en el servidor web. Apache 2.2 es adecuado para esto. Leí el artículo sobre cómo configurar el trabajo con IIS y me pareció mucho más difícil. Después de instalar y ejecutar Apache 2.2, debe ir al menú de administración, publicar en un servidor web. El campo "catálogo" debe llenarse y contener la configuración de Apache. Recuerde el "nombre" y la "dirección" del servicio web, nos será útil en el siguiente paso.

3. Pruebas con Soapui

Para probar, cree un usuario de WSUSER separado, con una contraseña sencilla y dale derecho a pleno derecho.

Después de eso, instale y ejecute SOAPUI. Este programa es muy conveniente para probar los servicios web, puede recibir su descripción y realizar solicitudes posteriores a los servicios.

Vaya al archivo: el nuevo menú de proyecto SOAP, haga el nombre del proyecto HelloTest, y en el campo WSDL inicial, escribimos este enlace:

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

En él, la parte "Test_WS" se estableció en la última etapa en el campo "Nombre" y Test1.1CWs en el campo "Dirección".

Haga clic en Aceptar y en esta etapa deberá iniciar sesión ingresando al usuario de prueba del WSUSER. Se creará un proyecto y dos elementos de enlace.

Soap12binding se caracteriza por trabajar en nueva versión SOAP 1.2 estándar. Abramos el elemento de solicitud1 en el test1SoAP12Binding y vea esto:

Soapui muestra qué XML se transmitirá a nuestra función. Antes de comenzar la prueba, hay otro matiz, el predeterminado Soapui requerirá autorización para cada elemento de solicitud por separado. Por lo tanto, para no especificarlo cada vez que necesita hacer clic en el botón derecho del mouse en TestSoAP12bindeing, seleccione Mostrar vista de la interfaz y en la ventana que se abre en la pestaña "SERVICIO ENDPOINT" del nombre del servicio web y la contraseña:

Si esto no se hace, entonces, para cada solicitud, deberá establecer la autorización, en el panel inferior por el botón AUTH.

Ahora, finalmente, puede realizar la solicitud de la función HELLO y ver la respuesta:

Genial, todo funcionó!

4. Transfiera parámetros simples a la función.

Ahora haz nueva caracteristica Con los parámetros, por ejemplo, verifique el trabajo con las fechas, haremos la función GETSAEDOTNUMBERSBYDATE, que recibirá una fecha de documento (factura de gasto) y retornos números de documentos para esta cadena de fecha. Agregue un parámetro de fecha a la operación con el tipo DateTime:

el código es:

Gettingeedocnumbersbydate (fecha) función // datannent \u003d inicio (fecha); Dateonton (fecha); Evalidocuments \u003d documentos. Salida. Claro (punto de datos, detección de detección); números \u003d ""; Mientras que los sedocumentos. Número () Ciclo de números \u003d números + "No." + Curso de precisión. Maker + ";"; Endcycle; Número de devolución; Funcionamiento final

Ahora, en Soapui, haga clic con el botón derecho, debe hacer clic en el elemento TestSoAP12Binding y seleccione Actualizar la definición. Después de eso, el proyecto aparecerá la función GetTaueDocnumByDate y la solicitud lista para ello. Para llenar la fecha, debe usar el formato "YYAY-MM-DDTHHH: MM: SS" (puede ver en W3Schools y recomiendo encarecidamente usar este sitio para comprender el trabajo con XML)

Luego resultará dicha solicitud y responder:

5. XDTO Paquetes

Si necesita transmitir parámetros más complejos a la función (por ejemplo, XML con múltiples campos), o para recibir XML complejo en respuesta, entonces no podemos hacer sin paquetes XDTO.

Trabajar con XDTO se considera en el ciclo de artículos. De hecho, el paquete determina la estructura y el tipo de campos utilizados por los archivos XML.

Consideraré un ejemplo de transferencia y recibir un archivo XML, el tipo de lo que se define en el paquete

Además de los siguientes artículos, consideraré ejemplos:

  • transferencia al archivo XML 1C que no se describe en el paquete en formato BASE64
  • saliendo 1c. documento PDF En formato base64 y su decodificación
  • obtención del archivo XML de 1C con una estructura incrustada de elementos y determinando su cantidad.

6. Transmisión a 1C en el parámetro de archivo XML, el tipo de cual se define en el paquete.

La tarea será esta: encontrar un documento de la factura de gasto para el número especificado en la XML entrante y la fecha y devolver el documento encontrado. También debe regresar en forma de XML con un número, fecha, contraparte y su código y parte tabular bienes.

Cree paquete Packet1 con espacio de nombres Packet1_ns. Para un archivo XML entrante, definimos el tipo de objeto INDOCSALEQUERY con el campo Número del tipo de cadena y el campo DateTime Type Fecha. Para el archivo de salida, definiremos el tipo primero para una línea de la tabla Parte de las mercancías: SaleItem con Campos de nombre Tipo de cadena, suma de precios, tipo de cantidad decimal. Y el propio documento SALEDOC tendrá un tipo integral: Número, fecha, campos ParcNername y el campo SaleItems, que tendrá el tipo de venta de VALAITEM y el número máximo -1. Es un campo de este tipo indica que puede estar presente una matriz de varios elementos. Así que se ve así en el Configurador:

Primero muestre el código de función, y luego explicaré lo que sucede.

El código:

Función getsaledoc (incomingxml) de un medidor \u003d incomingxml.number; Datades \u003d incomingxml.date; Solicitud \u003d nueva solicitud; SOLICITUD.TEXT \u003d "Seleccione | Expendables. Namerenclature. Nombre como nombre, | Expendables. Precio, COMO PRECIO, | PAPENDABLES. SERVICIO AS CANTIDAD, | SOMPENDABLES. SOMPENDAJES. DESPENDIBLE DE | DESPENDIO DE | DOCUMENTO Productos de gasto. Enlace. Maker \u003d & Number | y gastos. Enlace. Datos \u003d & DataSy "; Solicitud. Parámetro de instalación ("Número", desechable); Solicitud. Instalación de parámetros ("DATOS", DATOS); Muestreo \u003d consulta. Rellenar (). Seleccione (); Si la muestra. Racing () \u003d 0 entonces // devuelve el error del flujo de marea \u003d FactoryXDTO. Tipo ("Paquete1_NS", "SEALTOC"); Documentación de paquetes \u003d FactoryXDTO. Crear (laterales); Flujo empaquetado .Number \u003d "¡Documentos no encontrados!"; Reembolso; De lo contrario, creamos los tipos de TidiRoculación \u003d FactoryXDTO. Tipo ("Paquete1_NS", "SEALTOC"); TIPBABBING \u003d FACTORYXDTO. Tipo ("Paquete1_ns", "SaleItem"); Documentación de paquetes \u003d FactoryXDTO. Crear (laterales); // Seleccione de la tabla Pieza SCH \u003d 0; Mientras que la muestra. El ciclo siguiente () si el SCH \u003d 0 entonces // Llene los detalles del documento DOCK \u003d muestra. Enlace; Documentación de paquetes .Number \u003d Dock. Paquete Documentation.Date \u003d Dock; Documentación de paquetes .partnename \u003d line (Dock. Kontragent); terminó; // Llenar parte de la tabla Embalaje \u003d FactoryXDTO. Crea (Tabla de mesa); Llenando (negociación, muestra); // Agréguelo al documento de documento de paquete .sale.saleitems. COMMENTUDA (Negociación); SCH \u003d SCH + 1; Endcycle; Reembolso; terminó; Funcionamiento final

Aquí hay dos matices principales. El primero: Dado que se especificó el tipo de parámetro entrante entrante y se describió en este tipo en el paquete, es posible que se ponga en contacto con los campos de este XML entrante. Segundo: trabajar con la fábrica XDTO. A partir de él, se obtuvo un tipo para los parámetros de salida resultantes y creó el valor de este tipo, que se llenó con los campos necesarios. También vale la pena señalar que en el tipo SALEDOC, debe ingresar un campo de error separado, pero para los objetos de prueba de error se registrarán en el campo Número.

Aquí es lo que se ve el resultado de esta solicitud en Soapui:

Como puede ver, todo funciona, pero aún así hay algo que mejorar, por ejemplo, me gustaría saber cuántos elementos VentaItems en nuestro documento.

Acerca de esto y sobre ejemplos más complejos, le diré en el siguiente artículo.

En el archivo adjunto - descarga base de información Y el proyecto Soapui.

SOAP (Protocolo de acceso de objetos simple) Es un protocolo de mensajería estandarizado entre el cliente y el servidor. Por lo general, se usa junto con HTTP (s), pero también puede funcionar con otros protocolos a nivel de aplicación (por ejemplo, SMTP y FTP).
Las pruebas de jabón desde el punto de vista de las técnicas de prueba no son fundamentalmente diferentes de trabajar con otras API, pero requiere una preparación preliminar (en términos de teoría de protocolo) y herramientas de prueba especiales. En este artículo, me gustaría formular una pequeña lista de verificación de los conocimientos y habilidades necesarios, lo que será igualmente útil como un probador de jabón (a menudo, no representa ", por lo que es suficiente" después de establecer la tarea), y el gerente Forzado a evaluar el conocimiento de los probadores y desarrollar planes para el aprendizaje.

Base teórica

El hecho de que el jabón es un protocolo es de gran importancia para las pruebas: debe explorar el protocolo en sí, normas y protocolos "primarios" en los que se basa, así como las extensiones existentes (según sea necesario).

XML
XML es un lenguaje de marcado similar a HTML. Cualquier mensaje enviado / recibido a través de SOAP es un documento XML en el que los datos están convenientemente estructurados y fácilmente legibles, por ejemplo:



Julia
Natasha
Recordatorio
¡No te olvides de escribir un artículo!


Con más detalle sobre XML, puede aprender en W3Schools o CodeNet (en ruso). Asegúrese de prestar atención a la descripción de los espacios de nombres (método de resolución de conflictos al describir los elementos en XML), en SOAP, su uso es necesario.

XSD.
Cuando trabaje siempre es conveniente tener una descripción estandarizada de los posibles documentos XML y verificarlos en la corrección de llenado. Para hacer esto, hay una definición de esquema XML (o XSD abreviado). Las dos características principales de XSD para un probador son una descripción de los tipos de datos e imponen las restricciones sobre los posibles valores. Por ejemplo, un elemento del ejemplo anterior se puede hacer opcional para llenar y limitar su tamaño 255 caracteres utilizando XSD:

...







...

Jabón de expansión.
En su trabajo, también puede cumplir con varias "extensiones" SOAP - SOAP - * Normas de WS- *. Una de las más comunes es WS-Security le permite trabajar con el cifrado y firmas electrónicas. A menudo, la política WS se usa con él, con la que puede administrar los derechos para usar su servicio.

Ejemplo de uso de WS-Security:


Alicia.
6S3P2EWNP3LQF + 9VC3EMNOT57OQ \u003d
Yf6j8v / caqi + 1nrsglrbuzhi
2008-04-28T10: 02: 11Z

Todas estas extensiones son diseños bastante complejos utilizados lejos de cada servicio de jabón; Es poco probable que su estudio detallado en la etapa inicial de exploración de pruebas de jabón sea pertinente.

Instrumentos

Como ya entendiste, el jabón es algo serio, para trabajar con él, debe conocer la teoría y los numerosos estándares. En la práctica, tal complejidad conduciría a costos laborales muy tangibles (por ejemplo, sería necesario observar el esquema en el cuaderno cada vez y enviar las solicitudes del rizo). Por lo tanto, se crearon herramientas que facilitan el trabajo con jabón.

Editores XML / XSD
Un buen probador inicia las pruebas en la etapa de la documentación de escritura, por lo que es conveniente usar editores especiales para verificar los esquemas. Dos más famosos: oxígeno (plataforma cruzada) y altava (solo Windows); Ambos son pagados. Estos son programas muy poderosos que están usando activamente los analistas al describir los servicios.

Tres características fueron útiles en mi práctica: la visualización XSD, la generación XSD basada en XSD y la validación XML por XSD.

1. Visualización XSD. Necesitamos una presentación visual del esquema que le permite identificar rápidamente los elementos y atributos obligatorios, así como las limitaciones existentes. Por ejemplo, se requiere el elemento de texto para solicitar el checkTEXTRequest, y opcional, los tres atributos (al mismo tiempo, el atributo Opciones establece el valor predeterminado: cero).

La visualización es necesaria cuando los tipos y restricciones en el esquema son muchos. Si solo necesita ella, y usted no desea pagar por los editores especiales, puede considerar las alternativas gratuitas (por ejemplo, JDeveloper).

2. Generación XML basada en XSD Útil cuando quieres ver el ejemplo correcto del mensaje. Lo uso para experimentar rápidamente con el posible relleno en el mensaje y verificar los matices de las restricciones.

3. Después de usar características del párrafo 2, es útil para sostener validación XML por XSD - Es decir, revisa el mensaje a la corrección. Juntos, las características 2 y 3 permiten capturar defectos astutos en XSD incluso cuando el servicio en sí está en desarrollo.

Herramienta de prueba - Soapui

Las pruebas de jabón casi siempre implica el uso de Soapui. Puede leer sobre el uso de esta herramienta en diferentes fuentes (), pero será más efectivo para familiarizarse con la documentación oficial. Resalto 8 niveles condicionales de Soapui:

Nivel 1 - Puedo enviar solicitudes
Aprenda a crear un proyecto basado en WSDL. Soapui puede generar todas las solicitudes necesarias para usted; Solo tendrá que verificar la exactitud de su relleno y presione el botón "Enviar". Después de resolver las habilidades de crear solicitudes correctas, debe dominar el arte de formar solicitudes incorrectas que causan errores.

Nivel 2 - Puedo hacer suites de prueba y casos de prueba.
Empieza a hacer mini-carotes. Los kits de prueba y los casos de prueba le permiten crear escenarios de prueba de API, preparar datos para las consultas y verificar automáticamente la respuesta resultante a la esperada. Al principio, se pueden usar simplemente como una colección de solicitudes. Por ejemplo, si inició un defecto y desea verificarlo rápidamente después de la fijación, puede seleccionar un kit de prueba separado específicamente para detectar defectos.

Nivel 3 - Puedo escribir afirmaciones
Después del caso de prueba, será útil para que aprendas cómo hacerlos revisar automáticamente. Después de eso, ya no tendrá que buscar información de "ojos" sobre la respuesta: si tiene una verificación automática, los casos se marcarán con verde (si se pasa la verificación) o en rojo (si no se pasa). SOAPUI proporciona un conjunto grande de posibles cheques (afirmaciones), pero el más conveniente y simple contiene y no contiene. Con su ayuda, puede verificar el hecho de la disponibilidad de un texto específico en la respuesta recibida. Estos cheques también admiten la búsqueda con expresiones regulares.

Nivel 4 - Yo uso XPath y / o Xquery en las afirmaciones
Para aquellos que están un poco familiares con la interfaz de usuario con selenio, el lenguaje XPATH es una cosa familiar. Hablando aproximadamente, XPath le permite buscar elementos en un documento XML. XQuery: tecnología similar que puede usar XPath dentro de sí misma; Este lenguaje es mucho más poderoso, se parece a SQL. Ambos idiomas se pueden utilizar en aseveraciones. Los cheques con su ayuda son más específicos y estables, por lo que sus casos disfrutarán de una gran confianza.

Nivel 5 - Puedo escribir pruebas complejas con pasos especiales.

En los casos de prueba, no solo una solicitud puede estar contenida, sino también varios (por ejemplo, cuando desea emular el escenario estándar del trabajo del usuario "Crear la esencia" → "Exportar la entidad"). Puede haber otros pasos especiales entre las solicitudes, por ejemplo:

  • Propiedades y transferencia de propiedad (ayuda a reutilizar datos y transmitirlas entre las solicitudes);
  • Solicitud de JDBC (utilizada para recibir datos de la base de datos);
  • Goto condicional (le permite hacer ramificación o ciclos en el caso de prueba);
  • Ejecute Testcase (ayuda a hacer algún tipo de consultas típicas en casos de prueba separados y causarlos cuando sea necesario).

Nivel 6 - Utilizo scripts en Groovy

Soapui le permite escribir scripts en Groovy en varios lugares. El caso más simple es la generación de datos en la propia solicitud utilizando los insertos $ (\u003d). Yo uso constantemente tales inserciones:

  • $ (\u003d nueva fecha (). Formato ("YYYY-MM-DD'T'HH: MM: SS")) - para la inserción fecha actual y hora en el formato requerido;
  • $ (\u003d java.util.uuid.randomuuid ()) - Para insertar el GUID aleatorio formado correctamente.

Los scripts completos se pueden usar como pasos en casos y cheques. En algún momento, encontrará que varios pasos especiales del quinto nivel se pueden reemplazar con un script.

Nivel 7 - Yo uso MockServices
WSDL basado en Soapui puede generar objetos simulados. El objeto simulado es la simulación más simple del servicio. Con la ayuda de "Mok", puede comenzar a escribir y depurar los casos de prueba incluso antes de que el servicio esté realmente disponible para la prueba. También puede usarlos como "enchufes" para servicios temporalmente inaccesibles.

Nivel 8 - Dios Soapui
Usted sabe la diferencia entre las versiones pagadas y gratuitas de Soapui y use la API SOAPUI en el código. Usted usa complementos y ejecuta la ejecución de los casos a través de la línea de comandos y / o CI. Sus casos de prueba son simples y fáciles de compatibilidad. En general, "comió a un perro" en esta herramienta. Con mucho gusto habría hablado con aquellos que han dominado Soapui a tal nivel. Si usted es tal, ¡escriba en los comentarios!

Pruebas utilizando lenguajes de programación

Daré un ejemplo de cómo se ve la solicitud a la API de YandexPeller, hecha con Groovy-Wslite:

importar wslite.soap. *
Def Client \u003d New SoapClient ("http://speller.yandex.net/services/spellservice?wsdl")
Def Response \u003d Client.Send (SOAPACION: "http://speller.yandex.net/services/spellservice/checktext") (
Cuerpo (
CheckTexTequest ("Lang": "RU", "XMLNS": "http://speller.yandex.net/services/spellservice") (
Texto ("Oshka")
}
}
}
Assert "Error" \u003d\u003d Response.CheckTEXTRESPONSE.SPELLRESULT.ERROR.S.TEXT ()
Asistir "1" \u003d\u003d [Correo electrónico protegido]()

Por lo que sé, no existe marcos de alto nivel (por el tipo de descanso) para pruebas, pero la herramienta interesante ha aparecido recientemente, Karate. Con él, puede describir los casos para probar el jabón y el descanso en forma de escenarios de Sccumber / Gherkin. Para muchos probadores, la apelación del karate será la solución perfecta, porque tales escenarios para la complejidad de la escritura y los casos de apoyo se quedarán en algún lugar del medio entre el uso de Soapui y escribiendo su propio marco para las pruebas de jabón.

Conclusión

Es poco probable que usted quiera probar el jabón simplemente por sí mismo (como podría suceder con el resto-OHM). Este es un protocolo serio que se utiliza en soluciones corporativas graves. Pero su peso pesado es simultáneamente un probador de regalos: todas las tecnologías utilizadas están estandarizadas, hay herramientas de alta calidad para el trabajo. Desde el probador solo requiere el deseo de estudiarlos y usarlos.

Reunemos la misma lista de verificación de las habilidades necesarias para el probador. Por lo tanto, si simplemente comienza a probar los servicios de SOAP, necesita saber y poder usar:

  • WSDL.
  • JABÓN.
  • Editores XML / XSD (en el nivel de visualización XSD).
  • Soapui en el nivel 1.

Como puede ver, el énfasis principal es estudiar los estándares, en Soapui, es suficiente para poder realizar solicitudes. Mientras me sumerge en la prueba de jabón, tendrá tareas que requerirán habilidades y conocimientos más graves, pero no intenten estudiar todo e inmediatamente. Es mucho más importante que la secuencia en el aumento del nivel de complejidad de las tareas. ¡Siguiendo esta recomendación, en un momento entenderás que se han convertido en un buen especialista en esta área!

Servicios web en 1C

Este artículo considerará los temas de integración de 1C con los servicios web ya existentes y el uso de 1C en sí mismo como servicio web.

Al mismo tiempo, según los servicios web se entenderá que se está ejecutando en Internet en Internet y asegurando la interacción con ellos no solo por SOAP (que es precisamente el servicio web), sino también de otras formas, incluidos los http ordinarios. -registros.


Los riesgos de utilizar servicios web 1c.

La plataforma 1C81 apareció la implementación de los servicios web.

Pero su uso está lleno de riesgos:

  1. 1C8 no funciona bien a través de HTTPS, no hay herramientas de diagnóstico, por lo que es imposible entender si el servicio no quiere trabajar a través de HTTPS, a veces es imposible. Salida: implementación de servicios web a través de la elevación de túneles de rizo o HTTPS.
  2. 1C8 se adhiere a sus reglas de validación del esquema WSDL. A veces, por razones inexplicablemente, el esquema WSDL no quiere cargarse en el enlace WS. Solo puede aprender la causa en un foro de socios de un especialista. No hay herramientas de diagnóstico de WSDL, incluso la causa o la cadena no se especifica en la que se interrumpe la carga del diagrama.

Reglas para la construcción de servicios para la venta.

El cliente se emite un documento a la venta (cheque) solo si la transacción para el servicio ha sido exitosa. De lo contrario, la situación es posible cuando el cliente recibe un cheque y será de confianza que recibió un servicio, y de hecho no lo es.

Utilizando servicios de jabón externos

Servicios de SOAP WEB Use Schemas WSDL y objetos XDTO para representar datos.

Descargar WSDL

Para utilizar el servicio externo, debe descargarlo el esquema WSDL.

Cheque de validez del esquema WSDL

A veces, el esquema WSDL no se carga en 1C. Puede verificar la validez (corrección) del circuito con cualquier validador WSDL, por ejemplo, http://www.validwsdl.com/.

Debe descargar un esquema a cualquier sitio HTTP (puede a través de FTP) y especificar la dirección del archivo en el que se carga el esquema:

Características de la descarga WSDL en 1C

La función de carga WSDL en 1C es que los esquemas válidos pueden no estar cargados. No hay un validador incorporado, por lo que debe buscar un error por análisis destructivo, reduciendo secuencialmente el número de elementos en el esquema. Puede, por ejemplo, eliminar una descripción del servicio web.

Procesamiento para probar un servicio web externo de trabajo.

Para probar el servicio web externo de trabajo, use el procesamiento "testprolnogservice.epf" del paquete a este artículo.

Las pruebas se pueden usar en el ejemplo del servicio de Morpher, nombres inclinados (la dirección del servicio http://www.morpher.ru/webservices/morpher.asmx?wsdl):

De esta manera, puede probar cualquier servicio que tenga puntos de entrada simples que contengan parámetros de tipo simple: número, fecha, cadena.

En el procesamiento, también puede especificar el inicio de sesión y la contraseña que deben autorizar el acceso al servicio web.

Servicios estándar de depuración significa

Puede usar el programa SOAPUI a la depuración, que puede enviar una solicitud de servicio web arbitraria y obtener una respuesta de ella.

Jabón y HTTPS

Desafortunadamente, el jabón en 1S se comporta suficientemente con suficiente capacidad cuando se trabaja a través del protocolo HTTPS, la práctica muestra que es imposible lograr conexiones HTTPS, aunque la posibilidad y se extiende en la plataforma. Afecta la falta de herramientas de diagnóstico y depuración para determinar las razones, debido a lo que no se establece la conexión. Por lo tanto, es conveniente usar jabón a través de curl.

El mecanismo de uso de HTTPS incorporado implica que todos los certificados deben publicarse en el archivo compartido PEM en el directorio de programa 1C.

Use 1C como servicio

Términos de desarrollo del servicio basado en 1C.

Operación "Hola"

La regla de buen tono es la creación de una operación en el servicio que informa que el servicio está disponible. Esto facilita la vida de los integradores, serán más fáciles de verificar si la conexión se ha establecido con el servicio.

Por ejemplo, puede usar la operación HELLO sin parámetros, lo que simplemente devuelve un valor booleano de la verdad.

Publicación de servicio web.

El procedimiento está bien descrito en la documentación: archivo: /// C: /program%20files/1cv81/adddoc/ru/v8adddoc81.htm#_toc176167634:

La tarea de publicar los servicios web se reduce a los archivos de configuración de alojamiento * .1cws Services web en el directorio del servidor web correspondiente con la configuración apropiada para el servidor web. Para ejecutar la publicación de servicios web, debe ejecutar el comando de menú "Administración | Publicación de servicios web ".

Como resultado de la ejecución de este comando, la ventana de publicación estará abierta.

La ventana de publicación de servicios web contiene la ruta al servidor web y dos listas:

  • "Servicios web": una lista de servicios web de configuración;
  • "Publicación": una lista de servicios web publicados en el servidor web especificado.

Usando el botón Compuesto ..., debe especificar el servidor web que desea publicar servicios web.

La ventana de selección de ruta al servidor web le permite especificar la ruta de dos maneras:

  • en la pestaña "Archivos": este método se usa en el caso cuando la publicación se realiza en la misma computadora en la que se instala el servidor web. Como una forma, se especifica el directorio local, que corresponde a la página de Internet con la que se llamará el servidor web publicado;
  • en la pestaña del sitio FTP, este método se usa cuando desea publicar un servicio web en una computadora remota. Para realizar la publicación, debe especificar los parámetros de la conexión FTP con computadora remota y un directorio en el que se publicará el servicio web.

La publicación del servicio web seleccionado se lleva a cabo utilizando el botón "Publicar"

Para cancelar la publicación del servicio web, use el botón Eliminar.

Puede publicar en el directorio local o en FTP. Puede publicar en el servidor remoto en la ruta de la UNC si el servidor remoto ingresa a la red local.

Después de publicar un servicio web está disponible en "http: //localhost/test.1cws" o "http://xxx.ru/test.1cws", donde xxx.ru - dirección servidor remoto Y localhost es la dirección estándar del servidor local.

Autorización al servicio web 1c

Para acceder al servicio, debe pasar la autenticación.

Los problemas de autorización están bien revisados \u200b\u200baquí: http://www.forum.mista.ru/topic.php?id\u003d341168 y en la documentación del archivo: //// /program%20files/1cv81/adddoc/en/v8adddoc81.htm

Por lo general, el servicio web funciona bajo un usuario en particular (más a menudo, especialmente creado). Puede usar el usuario 1C "adjuntar" a la autenticación de Windows al usuario de Windows IUSR_ (para que el usuario desactive la autorización 1C). Alternativamente, puede borrar la lista de usuarios 1c, luego no se requiere autorización.

Si se requieren varios usuarios, puede crear varios inicios de sesión para un servidor web, para unir a cada uno de ellos. usuario de Windows. Y en consecuencia, para registrarse en el acceso 1C a los usuarios de Windows.

En las propiedades, el usuario y la contraseña del objeto WS se utilizan, no se inicia sesión 1C, pero el inicio de sesión del usuario es un servidor web.

Prueba de servicio web 1c

Para probar 1C como servicio web, use el procesamiento de procesamiento de TestPROMPHEEP. PRESETRO, como se describe en la sección "Prueba de servicio web externo".

1CWS File y es una descripción WSDL del servicio web 1C.

Uso de servicios minoristas.

Por lo general, en los servicios minoristas se utilizan para proporcionar diversos servicios a la población, recibir pagos, reembolsos de préstamos, transferencias de dinero, compra software etc.

Al mismo tiempo, para el servicio proporcionado en 1C, se forma un cheque en el que se guardan los parámetros de transacción. Después de eso, este cheque está impreso por el cliente con información detallada sobre el servicio prestado. Es posible un cheque preliminar, de modo que el cliente confirme los datos introducidos de sus palabras por su firma.

El servicio se puede integrar de manera diferente en un programa minorista escrito en 1C (UT, venta al por menor y otro):

  1. Se puede escribir el procesamiento o código en 1C, se puede escribir, lo que realiza todo el trabajo con el servicio.
  2. Se puede utilizar un programa que funciona con el servicio, y en 1C transmite solo información para pinchar los controles.

Organización de datos de servicio en 1c.

Para almacenar información sobre la transacción en el cheque, es necesario crear una parte de tabular adicional "ventas sofisticadas" con detalles:

  • Nomenclatura: vinculación para verificar la nomenclatura.
  • El parámetro es el enlace al directorio "Sofisticado de Venta: Parámetros".
  • El valor es el valor del parámetro, tipo compuesto. La vista de cadena debe tener bastante tiempo (1024 caracteres) para colocar el texto de la verificación.

Manual "Sopresos sofisticados: parámetros" contiene una lista de parámetros de transacción.

Parte de la tabla es más rentable para usar que un conjunto de detalles, porque Puede haber muchos de ellos en la transacción, y en otros controles que no están relacionados con el servicio, estos detalles no se utilizarán, y tomará un exceso de lugar. Además, tal decisión es universalmente para cualquier servicio y no requiere la reestructuración de los datos después de la introducción de un nuevo servicio.

El vendedor se realiza una pestaña separada (o forma impresa para no cambiar la configuración) en la que puede ver el signo de los detalles de la transacción para el cheque.

Utilizando tratamientos en idioma 1c

Considere el ejemplo del servicio condicional de Paym para la configuración "al por menor".

  1. Comenzamos en un elemento predefinido 1C del directorio de la nomenclatura "Paym". En el modo 1C: las empresas después de la actualización de la configuración, debe asignarse al tipo de producto "Servicio".
  2. En el procedimiento "Agregue una nomenclatura a la pestaña. Parte "Módulo" Registro de ventas "Módulo, llamamos al procesamiento de trabajar con el servicio escrito en idioma 1c. En caso de pago exitoso, escribimos y realizamos un cheque:
Si (Nomenclature \u003d Libros de referencia. Sustitución.Paym) y (enumeración de la enumeración. Vidaraticschkkm. Invidencia) Luego procesamiento de funciones. Doble circulación ("Paym"); Formamplate \u003d Procesando. Repitalidad (); Resultado \u003d Formlamplage. OpenModally (); Si el resultado \u003d es incierto, entonces vuelve; Terminó; Esta cuenta. Para reclutar (registrarse); Terminó;
  1. El procesamiento debe imprimir pedidos (si es necesario), complete una parte de la tabla de ventas complejas y prepare el texto de la verificación del cheque en los accesorios predefinidos de "PaymText".
  2. En el procedimiento "Conducta e imprima un cheque", el módulo de verificación reemplazando el nombre de las mercancías al almacenado en la solicitud para el cheque. El texto se reemplaza solo para la venta, solo se imprime el nombre del servicio para regresar, como de costumbre.
Inspecció la visualización de la lista. VIDOYERADOVSCHEKKM. Factura y muestreo. El asentamiento de los libros de referencia Solka \u003d. Sustitución.Paym entonces // OSIPOV PAYMMASTER STRINGCELL-STREK SALES \u003d VENTAS complejas. Inite (libros de referencia. Parámetros de venta. Si la sugerencia del tamaño de una cadena es indefinidamente el producto. Renance \u003d SOCLP (ventas de STRING-Holder. Terminó;

Una pregunta separada es cómo garantizar la finalización de la transacción. Esos. Si la transacción ha pasado en el servicio, cómo hacer que no haya perdido en 1C. El camino más óptimo se reconcilia por los registros. Pero este es un tema de consideración separada.

Uso de programas integrables desde 1C.

XDTO.

A menudo, XDTO se utiliza en los servicios web. Damos los consejos y recetas más importantes sobre el uso de XDTO en 1C.

XDTO en la plataforma 1C

Los paquetes XDTO descritos en la sucursal de configuración "XDTO Objetos" están disponibles para crear tipos y objetos en la fábrica XDTO Global Factory. No se hace evidente de inmediato.

Algunos tipos en el esquema no tienen un nombre para obtenerlos, debe pasar por los tipos de jerarquía.

El ejemplo describió la lista de sistemas que contenía estructuras XDTO. Para crear la estructura en sí, fue necesario obtener su tipo tal aquí:

TIPO \u003d FACTORY.TEPE ("URN: MY.R.R.R.: MASTERDATA: NEGOCIOS", "Negocios"). Propiedades. Vierta ("Sistema"). Tipo;

Problemas frecuentes con XDTO

Diferentes formatos de esquema XSD

En algunos formatos, las etiquetas se llaman XS:, en algún XSD:, pero 1C entiende completamente ambos formatos. Un día hubo una situación en la que XSD era normal sin errores importados en 1C, pero no creó un solo paquete. La razón fue en ausencia de un atributo. targetNamesPace. La etiqueta, respectivamente, no sabía 1C, en qué paquete colocar el esquema, pero no dio errores.

Servicio de soporte

Dado que el servicio es una combinación de dos sistemas: 1C y externos, los errores pueden ser en ambos sistemas, lo que reduce la confiabilidad general del trabajo.

Para más fácil comprender las razones de las fallas en la operación de los servicios, se recomienda utilizar un conjunto de medidas.

Solicitudes de registro

Enlaces

  • XDTO.
    • Buena Descripción XDTO http://pro1c.org.ua/index.php?showtopic\u003d214
  • Servicios web interesantes gratis:
    • Aeroflot - Información sobre el calendario de aeronaves.
    • Morferencia: la declinación de los nombres http://www.morpher.ru/webservices/morpher.aspx
  • Instruido:
    • Instalación y uso de servicios web.
      • v8: ¿Cómo cambiar el archivo de configuración de Apaches?
      • v8: Continuando con el tema con servicios web: no puedo conectar el servicio web
      • v8: Sobre el uso de servicios web, no puedo crear un proxy ...
      • Libro de conocimientos: V8: Uso de servicios web externos en 1C: Enterprise 8;

Hoy en día, un costo de aplicación raramente moderno sin API. Esto es justo tanto para un sitio simple como para sistemas distribuidos de alto carga. Pruebas API: es una de las tareas principales en el proceso de garantía de calidad. No es sorprendente que la demanda de probadores que puedan probar las API aumenta de día a día. En este curso, recibirá una comprensión de los métodos, herramientas y enfoques en las pruebas API, adquirirá el conocimiento necesario, que, sin duda, se reflejará en su valor como especialista en pruebas.

Este curso será útil para los estudiantes familiarizados con los conceptos básicos de la prueba del software que desean crecer más y aumentar sus habilidades.

Programa del curso:

Lección 1. Aporte. Protocolo de jabón

  • Brevemente sobre el profesor;
  • Objetivo del curso;
  • ¿Qué es la API, WS y por qué se necesitan?
  • El papel de las pruebas API en el proceso de garantía de calidad;
  • Descripción general de las herramientas de prueba de WS;
  • Técnicas utilizadas en pruebas WS;
  • La historia de la aparición del jabón;
  • Terminología y conceptos principales (XML, XSD, Endpoint, WSDL).

LECCIÓN 2: Protocolo SOAP. Descanso de la arquitectura.

  • Terminología y conceptos principales (UDDI, XSLT, XPATH, XQUERY, métodos HTTP, estados HTTP);
  • Estructura y componentes principales del jabón;
  • Ámbito de aplicación;
  • Características del trabajo;
  • Ventajas y desventajas;
  • Características de la arquitectura de descanso;
  • Terminología y conceptos principales (Wadl, Resto, JSON, Jsonpath);
  • Principios de descanso;
  • Código de estado y estados principales;
  • Verbos de crud;
  • Ventajas y desventajas.

Lección 3. Conocimiento con Soapui. Trabajar con el proyecto de descanso

  • Instalación de Java;
  • Instalando Soapui;
  • Descripción general de los elementos principales de la interfaz;
  • Conectar un proyecto de entrenamiento;
  • Revisión de los métodos del proyecto;
  • Enviando una solicitud y análisis de la respuesta recibida;
  • Estudio de los servicios web de proyectos disponibles;
  • Elaborando un plan de prueba;
  • Casos de prueba de escritura;
  • Elementos "testsuite", "testcase", "teststeps".

Lección 4. Trabajar con Proyecto de descanso (XML)

  • Bloquear "afirmaciones";
  • Lanzar pruebas en diferentes niveles;
  • Elemento "Propiedades", las características principales;
  • Trabajar con propiedades;
  • Elemento "Transferencia de propiedad";
  • Trabajando con afirmaciones.

Lección 5. Trabajar con proyecto de descanso (JSON)

  • Condiciones y ramas;
  • Trabajando con afirmaciones;
  • TestRunner, características de trabajo;
  • Ejecutar TS, TC de la línea de comandos;
  • Trabajar con el corredor de prueba;
  • Trabajar con scripts groovy.

Lección 6. Trabajar con scripts groovy

  • Trabajar con datos estáticos y dinámicos;
  • Generamos datos de prueba;
  • Recibimos datos de "Propiedades";
  • Datos de grabación y transferencia;
  • Condiciones y ramas;
  • Aserción de guiones.

Lección 7. Características adicionales

  • Conectar bibliotecas externas y clases personalizadas;
  • Servicios simulados;
  • ¿Por qué necesitan los servicios simulados?
  • Muestra que trabaja con el servicio simulado;
  • Pero ¿qué pasa con CI?
  • Instalar jenkins;
  • Comenzando un proyecto en Jenkins.


¿Te gustó el artículo? Compártelo