0% encontró este documento útil (0 votos)
18 vistas89 páginas

Segunda Practica SOAP 1 2015 Version 3

SOAP es un protocolo ligero para la comunicación entre aplicaciones en un entorno distribuido, utilizando mensajes codificados en XML. Permite la invocación de métodos en servidores y el intercambio de documentos, facilitando la interoperabilidad entre sistemas heterogéneos. La estructura de un mensaje SOAP incluye un Envelope, Header y Body, y puede ser transportado a través de diversos protocolos, siendo HTTP el más común.

Cargado por

Mario Contreras
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas89 páginas

Segunda Practica SOAP 1 2015 Version 3

SOAP es un protocolo ligero para la comunicación entre aplicaciones en un entorno distribuido, utilizando mensajes codificados en XML. Permite la invocación de métodos en servidores y el intercambio de documentos, facilitando la interoperabilidad entre sistemas heterogéneos. La estructura de un mensaje SOAP incluye un Envelope, Header y Body, y puede ser transportado a través de diversos protocolos, siendo HTTP el más común.

Cargado por

Mario Contreras
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

QUE ES SOAP

SOAP define un mecanismo simple y liviano (en contraposición a sofisticado) para la


comunicación, en un entorno distribuido o descentralizado, entre componentes de
software o aplicaciones. La comunicación se realiza mediante mensajes codificados en
XML y transportados por un protocolo de transporte. En definitiva SOAP define un
mecanismo para el intercambio de información, estructurada y tipeada, entre pares de
aplicaciones en un entorno distribuido, teniendo como objetivos de diseño la simplicidad y
la extensibilidad.

SOAP no define por sí mismo la semántica de las aplicaciones, como ser un modelo de
programación o algún tipo de semántica específica de una implementación, sino que
provee un mecanismo simple para expresar la semántica de las aplicaciones, mediante un
modelo modular de empaquetado de mensajes y la definición de como codificar los datos
de las aplicaciones en dichos módulos.

Como se hace uso del SOAP

• Como un mecanismo para invocar métodos en servidores, servicios, o


componentes, para lo cual se define en la especificación una metodología para
encapsular e intercambiar invocaciones RPC( Remote Procedure Call) , en los
mensajes, usando la extensibilidad y flexibilidad que proporciona XML.

• Como un protocolo para intercambio de mensajes (sincrónicos o asincronicos).

• Como un formato para intercambio de documentos XML.


Que es un Mensaje SOAP

La especificación de SOAP define el formato de los mensajes para comunicar


aplicaciones, normalmente dichos mensajes son una forma de comunicación de una única
vía entre un emisor y un receptor (mensajes asincrónicos), sin embargo pueden ser
combinados de manera de implementar patrones de request/response (mensajes
sincrónicos).

La especificación SOAP no establece un protocolo de transporte particular pero si


especifica como se realiza el transporte en caso de usar HTTP

El implementar patrones de request/response es sumamente natural si se utiliza HTTP


como protocolo de transporte dado que en este caso los mensajes SOAP siguen el
modelo requerimiento/respuesta de los mensajes HTTP, enviando el requerimiento en un
request HTTP y la respuesta SOAP en un HTTP response.

.
La especificación de SOAP establece que los mensajes sean codificados en XML. El uso
de XML tiene las siguientes ventajas:

• XML es un protocolo para representar datos independientemente de plataformas y


lenguajes

• Está disponible en todas las plataformas.

• Es adecuado para manipular datos estructurados y tipeados

• Es fácil de analizar (parsing) y entender (tanto para máquinas como por personas)
por ser texto.

Resumiendo, el protocolo SOAP es una alternativa sumamente útil para comunicar


aplicaciones heterogéneas (interoperabilidad), fundamentalmente por el uso de XML que
es un estándard basado en texto e independiente de plataformas y lenguajes y por el uso
de HTTP como transporte, el cual normalmente atraviesa los firewalls dado que estos no
bloquean el puerto HTTP. Además al no ser un protocolo sofisticado y al no definir
modelos de programación permite que las aplicaciones tengan un bajo acoplamiento, lo
cual es ideal en el entorno de internet.
Estructura de un Mensaje SOAP

En los mensaje SOAP, tanto los mensajes REQUEST como RESPONSE consisten en
mensajes HTTP, pero es de hacer notar que en caso de usar cualquier otro protocolo de
transporte no cambia el contenido del mensaje, el cual está codificado en XML

Los mensajes SOAP están codificados en XML y consisten de una sección denominada
ENVELOPE (obligatoria), la cual está compuesta de una sección denominada HEADER
(opcional) y de una sección denominada BODY (obligatoria).
SOAP Envelope

Esta construcción sintáctica de nombre ENVELOPE contiene el resto del documento XML
y debe estar presente siempre y ser primer sección del mensaje. Define los distintos
NAMESPACES que son usados en el resto del mensaje

Los NAMESPACES se utilizan para garantizar la unicidad de los elementos y evitar


ambiguedades.

<SOAP-ENV:Envelope

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"

SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

</SOAP-ENV:Envelope>

SOAP Header

Esta construcción sintáctica de nombre HEADER es opcional y es un mecanismo


genérico para extender las características de los mensajes SOAP de una manera
descentralizada y sin un acuerdo previo entre las partes que se comunican. En caso de
estar presente debe ser el primer hijo de la construcción ENVELOPE.

A modo de ejemplo algunas extensiones que pueden ser implementadas mediante esta
construcción son transportar información auxiliar para la autenticación, manejo de
transacciones, etc.

<SOAP-ENV:Header>

<User Information>

</SOAP-ENV:Header>

<SOAP-ENV:Header>

<Transaction Information>

</SOAP-ENV:Header>
SOAP Body

Es una construcción sintáctica de nombre BODY que actúa como contenedor para la
información que se envía al receptor del mensaje. Esta construcción debe estar presente
siempre en los mensajes SOAP y debe estar a continución del HEADER, si está presente,
o ser el primer hijo de ENVELPE si el HEADER no está presente.

Los usos típicos de esta construcción son proveer un mecanismo simple de intercambiar
información con el receptor del mensaje SOAP. En esta parte del mensaje es donde se
encuentran las invocaciones RPC o bien el resultado de la invocación.

Multiples Mensajes

Cada una de las construcciones sintácticas HEADER y BODY pueden ser organizadas
en bloques, es decir unidades sintácticas usadas para delimitar información que
lógicamente constituye una unidad computacional para un emisor o receptor.
Software SOAPUI

SoapUI es una herramienta de gran alcance diseñada para ayudar en la prueba y el


desarrollo de aplicaciones. Permite efectuar el testeo de la web, con docenas de
características, incluyendo una interfaz simple, fácil e intuitiva. Permite la utilización de
métodos de captura y repetición, siendo una herramienta de gran ayuda en la realización
de pruebas de carga de gran alcance, informes detallados, gráficos, etc...

SoapUI trae embebido el navegador Internet Explorer de Microsoft, permitiendo la


monitorización y el control de las acciones que en él se producen.

Esto permite:

 Realizar capturas de los parámetros del cgi, las páginas y los framesets solicitados.
 Modificar capturas y poder volverlas a ejecutar en cualquier momento sin necesidad de
volver a ejecutarlas.
 Grabar las capturas como scripts y poderlas compartir dentro del entorno de trabajo.
 Capturar la estadística del funcionamiento mientras se ejecuta una prueba.
 Realiar pruebas de regresión de áreas enteras de sitios web complejos en un solo clic.

Se va a descargar un trial por dos semanas

http://smartbear.com/product/soapui/soapui-ng/free-trial/

Vaya a su correo
Abrir en Mis Documentos

Vaya a la siguiente URL

http://support.smartbear.com/downloads/readyapi/
MOMENTO INSTALACIÓN MySQL Server

Hacer uso del Taller Como instalar MySQL Server 5.5 para instalar el MySQL Server si
en la maquina no ha sido instalado este servidor.

Haciendo uso de MySQL command Line

Es una interfaz de línea de comandos para los usuarios finales gestionar los objetos de
datos de usuario. “Mysql” tiene las siguientes características principales:

 “Mysql” es la interfaz de línea de comandos. No se trata de una interfaz gráfica de


usuario (GUI).
 “Mysql” soporta todos los estándares SQL Data Definition Language (DDL) para el
servidor de comandos para ejecutar.
 “Mysql” apoya todos los estándares SQL Lenguaje de manipulación de datos
(DML) instrucciones al servidor a ejecutar.
 “Mysql” apoya muchas de no SQL comandos “mysql” se ejecutará por sí mismo.
 “Mysql” proporciona acceso al sistema de ayuda del lado del servidor.
 “Mysql” permite que los archivos de comandos que se ejecuta en un modo por
lotes.
 “Mysql” permite salida de la consulta para tener el formato de las tablas HTML.
 “Mysql” permite salida de la consulta para tener el formato de elementos XML.
Se ejecuta de la siguiente manera:

Pasaporte root
Se inicia sesión.

DROP DATABASE IF EXISTS `facturar`;


CREATE DATABASE `facturar`;
USE `facturar`;

CREATE TABLE cliente


(
idcliente BIGINT( 10 ) NOT NULL DEFAULT 1 ,
nomcliente VARCHAR( 30 ) NOT NULL ,
telcliente BIGINT( 10 ) NOT NULL ,
domcliente VARCHAR( 30 ) NOT NULL ,
PRIMARY KEY ( idcliente ) ) ENGINE = InnoDB ;

CREATE TABLE factura


(
idfactura BIGINT( 6 ) NOT NULL,
idcliente BIGINT( 10) NOT NULL,
cantidad BIGINT( 6 ),
PRIMARY KEY(idfactura),
INDEX (idcliente),
FOREIGN KEY (idcliente) REFERENCES cliente(idcliente))
ENGINE = InnoDB ;

select * from cliente;


SHOW VARIABLES WHERE Variable_name IN ('hostname','port');
describe factura;
select * from factura;
Copiar y pegar este codigo
Inserte un registro en cliente:
MOMENTO DESCARGA DE MYSQL CONECTOR

Ir a la direccion http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.26

Guardar el conector en mis documentos


MOMENTO REGISTRO DEL SERVIDOR MySQL
Ejecute NetBeans

Botón Derecho del Ratón sobre Databases. Seleccione New Connection

Seleccione MySQL(Connector/J driver). Pulse boton next


Diligenciar los campos:

Host: localhost

Puerto:3307

Base de Datos: facturar

User: root

Password: root

Pulsar el Botón Finish


Aparece la conexión MySQL
MOMENTO CONEXIÓN A LAS BASE DE DATOS MySQL

Seleccionar la opción

Botón Derecho del Ratón. Seleccione la opción Connect (si está habilitada)

Password: root. Pulsar el Botón OK


Botón Derecho del Ratón. Seleccione la opción properties(propiedades)

Aparecen las propiedades, definidas en el pool de conexión. Pulsar botón close (cerrar)
MOMENTO CREACION DE APLICACIÓN SERVIDOR (FACTURAWEB)

1. New Project

2. Java Web>>Web Application>>Boton Next

3. Nombre del Proyecto: FacturaWeb. Se pulsa el Boton Next


4.
Se pulsa el Boton Finish. Se ha seleccionado por defecto un contenedor o servidor
GlassFish
ADICIONAR ECLIPSELINK (JPA2.1)

Sobre el paquete libreries pulsar el botón derecho del mouse >>Add Library

Un clic sobre EclipseLink (JPA2.1) y se pulsa el botón Add Library

Aparecen los paquetes asociados a la librería


CREACION DE PAQUETE DE CLASES

Se debe crear un paquete con el mismo nombre del proyecto.

Sobre Source Packages>>New>>Java Package

Nombre Paquete: FacturaWeb. Pulsar Finish


ESTABLECER LA CONEXIÓN DESDE RECURSOS Y CONEXIONES JDBC

Nodo Web Pages>>Mouse Derecho >>New>>Other>>Glasfish>>JDBC Connection Pool

Pulsar Boton Next


Nombre de la Conexión: facturar

Extracción desde la conexión existente:

Se pulsa botón Next


Se verifica la informacion. Botón Finish
Nodo Web Pages>>Mouse Derecho>>New>>Other>>Glasfish>>JDBC Resource

Botón Next
Conexión Pool:: facturar

Nombre JNDI: jdbc/facturaweb

Botón Finish
Seleccionar y abrir sun-resources.xml del Nodo Server Resources

Se especifica que existe un jndi (jndi-name="jdbc/facturaweb") llamado jdbc/facturaweb a


partir de una conexión(pool-name="facturar") llamada facturar
ACTUALIZAR web.xml

Abrir el archivo web.xml de la carpeta WEB-INF

Sino existe entonces sobre WEB-INF>>New>>

Si la opcion no ha sido adicionada entonces


sobre WEB-INF pulsar boton derecho del mouse>>New>>Other>>Web>>

Pulsar el boton Finish


De clic sobre web.xml

Colocar la siguiente referencia de ambiente:

<resource-env-ref>

<description>Object factory JPA</description>

<resource-env-ref-name>UserTransaction</resource-env-ref-name>

<resource-env-ref-type>javax.transaction.UserTransaction</resource-env-ref-type>

</resource-env-ref>
Sobre el proyecto FacturaWeb>>Mouse derecho>>Deploy
CREACIÓN DE LA ENTIDAD CLIENTE

La entidad debe representar la tabla cliente:

Mouse derecho sobre Paquete FacturaWeb>>New>>Entity Classes from Database

Seleccione la tabla cliente y despues


El asistente se ocupo de crear la clase entidad Cliente capaz de realizar el mapeo objeto-
relacional en la base de datos Facturar

Se verifica la carpeta Configuration Files aparece el archivo persistencia.xml


Desmarcar

Pulsar

 persistence-unit, atributo name: define una unidad de persistencia, es obligatorio darle un


nombre, para poder crear un EntityManager. El EntityManager es el encargado de
manejar la persistencia de los datos.
 provider: aquí indicamos si se desea usar Hibernate o no como implementación de JPA.
En esta practica se selecciona el proveedor eclipse
 jta-data-source; fuente de datos. Debe existir una etiqueta jta-data-source por cada clase
que queramos persistir, es decir, una por cada entidad que formará nuestra unidad de
persistencia.
CREACION DEL CONTROLADOR DE CLIENTE
Sobre el paquete FacturaWeb>>New>>Other>>Persistence>>JPA Controller From Entity
Classes. Boton Next
SEGUNDO DEPLOY O CREAR UNA ESTRUCTURA BASE
Sobre el proyecto FacturaWeb>>Mouse derecho>>Deploy
CREACION DEL LISTENER DEL SERVIDOR

Sobre el paquete FacturaWeb>>Mouse Derecho>>Other>>Web>>Web Application


Listener, Boton Next

Nombre de Clase: FacturaListenerWeb. Paquete: FacturaWeb.Chequear todas las


interfaces a implementar
Boton Finish

Hacer click sobre web.xml


Reemplazar este archivo (Facturaweb) por el siguiente codigo:

package FacturaWeb;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class FacturaListenerWeb implements ServletContextListener,
ServletContextAttributeListener, HttpSessionListener, HttpSessionAttributeListener,
ServletRequestListener, ServletRequestAttributeListener {

@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("Contexto Inicializado");

@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("Contexto Eliminado");
}

@Override
public void attributeAdded(ServletContextAttributeEvent event) {
System.out.println("Atributo Adicionado");
}

@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
System.out.println("Atributo Eliminado");
}

@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
System.out.println("Atributo Reemplazada");
}

@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("Sesion Creada");
}

@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("Sesion Eliminada");
}

@Override
public void attributeAdded(HttpSessionBindingEvent event) {
System.out.println("Atributo Adicionada");
}

@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
System.out.println("Atributo Borrado");
}

@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
System.out.println("Atributo Reemplazado");
}

@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("Request Eliminado");
}

@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("Request Inicializado");
}

@Override
public void attributeAdded(ServletRequestAttributeEvent srae) {
System.out.println("Atributo Adicionado en Request");
}

@Override
public void attributeRemoved(ServletRequestAttributeEvent srae) {
System.out.println("Atributo Eliminado en Request");
}

@Override
public void attributeReplaced(ServletRequestAttributeEvent srae) {
System.out.println("Atributo Reemplazado en Request");
}

}
CREACION WEB SERVICES

Ahora, se procede a crear el Web Service

Sobre el Nombre de la aplicación (FacturaWeb) pulse el boton derecho del mouse


>>new>>web service

Nombre de Servicio Web: FacturaWS y Package:FacturaWeb. Se pulsa la tecla Finish.


Se cheque Se pulsa boton Finish.

Aparece dentro del Arbol del proyecto la hoja o estructura del Web Service. Se ha creado
entonces exitosamente el Web Services.
Se hace click sobre Web Services y luego otro click sobre Boton Design

Seleccione la operación hello y pulse el boton Remove Operation .

Pulsar el Boton Yes


Se debe tener en cuenta para las operaciones crud los atributos de la entidad Cliente

Pulsar el boton

Colocar en las respectivas casillas:

Name: consulta

Return Type: java.lang.String


Ahora, pulsar el boton Add en la pestaña Parameters para la adicion de un
parametro. En el caso de la practica es necesario crear un parametro cedula de tipo Long

Pulsar el Boton OK

Se ha creado el Servicio Web con la operación consulta.

Entonces, aparece en el arbol de la aplicación la operación consulta:String como Web


Services FacturaWS.
Pulse el Boton

Name: adicion

Boton en parameter

Pulsar Boton OK
Ahora, seleccionamos el Tab Source

Se adiciona los siguientes import:

import javax.transaction.UserTransaction;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.*;
import javax.persistence.EntityManagerFactory;
Entre public class FacturaWS y @WebMethod(operationName = "consulta") coloque:

ClienteJpaController ayuda;

UserTransaction usuario;

Cliente cliente=null;

SessionContext contexto;
Reemplace los metodos CRUD por:

@WebMethod(operationName = "consulta")
public String consulta(@WebParam(name = "cedula") long cedula) {
inicio();
cliente=ayuda.findCliente(cedula);
if(cliente==null)
return "No Existe cedula";
else
{
String cadena=" ";
cadena=cadena+"Cedula:"+cliente.getIdcliente()+",";
cadena=cadena+"Nombre:"+cliente.getNomcliente()+",";
cadena=cadena+"Domicilio:"+cliente.getDomcliente()+",";
cadena=cadena+"Telefono:"+cliente.getTelcliente()+";";
return cadena;
}

}
@WebMethod(operationName = "adicion")
public String adicion(@WebParam(name = "cedula") long cedula, @WebParam(name =
"nombre") String nombre, @WebParam(name = "telefono") long telefono,
@WebParam(name = "domicilio") String domicilio) {
inicio();
cliente=ayuda.findCliente(cedula);
if(cliente!=null)
return "Existe cedula";
else
{
try
{
cliente=new Cliente(cedula,nombre,telefono,domicilio);
ayuda.create(cliente);
}
catch(Exception e){}
return "Exito en adicion";
}
}
void inicio()
{
try {
InitialContext ic = new InitialContext();
contexto =(SessionContext) ic.lookup("java:comp/env/sessionContext");
usuario=contexto.getUserTransaction();
}
catch(NamingException | IllegalStateException e){}
EntityManagerFactory factoria;
factoria = Persistence.createEntityManagerFactory("FacturaWebPU");
ayuda = new ClienteJpaController(usuario,factoria);
}
El servicio el siguiente:
Operaciones crud(adicion, consulta) en la tabla cliente

El codigo completo es el siguiente;

package FacturaWeb;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.ejb.Stateless;
import javax.transaction.UserTransaction;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.persistence.*;
import javax.persistence.EntityManagerFactory;
@WebService(serviceName = "FacturaWS")
@Stateless()
public class FacturaWS {
ClienteJpaController ayuda;
UserTransaction usuario;
Cliente cliente=null;
SessionContext contexto;
@WebMethod(operationName = "consulta")
public String consulta(@WebParam(name = "cedula") long cedula) {
inicio();
cliente=ayuda.findCliente(cedula);
if(cliente==null)
return "No Existe cedula";
else
{
String cadena=" ";
cadena=cadena+"Cedula:"+cliente.getIdcliente()+",";
cadena=cadena+"Nombre:"+cliente.getNomcliente()+",";
cadena=cadena+"Domicilio:"+cliente.getDomcliente()+",";
cadena=cadena+"Telefono:"+cliente.getTelcliente()+";";
return cadena;
}

}
@WebMethod(operationName = "adicion")
public String adicion(@WebParam(name = "cedula") long cedula, @WebParam(name =
"nombre") String nombre, @WebParam(name = "telefono") long telefono,
@WebParam(name = "domicilio") String domicilio) {
inicio();
cliente=ayuda.findCliente(cedula);
if(cliente!=null)
return "Existe cedula";
else
{
try
{
cliente=new Cliente(cedula,nombre,telefono,domicilio);
ayuda.create(cliente);
}
catch(Exception e){}
return "Exito en adicion";
}
}
void inicio()
{
try {
InitialContext ic = new InitialContext();
contexto =(SessionContext) ic.lookup("java:comp/env/sessionContext");
usuario=contexto.getUserTransaction();
}
catch(NamingException | IllegalStateException e){}
EntityManagerFactory factoria;
factoria = Persistence.createEntityManagerFactory("FacturaWebPU");
ayuda = new ClienteJpaController(usuario,factoria);
}
}
TESTEAR SI CUMPLE EL WEB SERVICE
Restart el Glass Fish

Sobre el proyecto FacturaWeb>>Mouse derecho>>Deploy


De un click sobre el servicio FacturaWS y pulse el boton derecho. Seleccione Test Web
Service.

Adicionar a:1212, James Rodriguez,1212,Madrid


En el servicio consulta se coloca: 1818
Ejecutar Servidor

Run para ejecutar la aplicación servidor


SOAPUI
Principales funcionalidades
Las principales funcionalidades que aporta la herramienta soapUI son:
 Incorpora un monitor SOAP para capturar y analizar el tráfico.
 Inspecciona Web Services WSDL y REST (tanto WADL como WADLess) y los visualiza
jerárquicamente.
 Genera automáticamente los tests y las peticiones SOAP de las operaciones definidas en
el descriptor WSDL o WADL.
 Permite verificar la conformidad de un WSDL según los estándares WS-I*.
 Opcionalmente, puede utilizarse el scripting de Groovy para que el comportamiento de los
tests sea dinámico.
 Soporta varios métodos de autentificación: Basic, Digest, WS-Security y NTLM Web
Service.
 Soporta diferentes tecnologías de ficheros adjuntos: MTOM, SOAP con Attachments,
ficheros Inline para WSDL y MIME Attachments para REST.
 Verificación del contenido de mensajes con Xpath y Xquery.
 Versatilidad en la configuración del test de carga, pudiendo indicar el límite (en tiempo o
peticiones), el número de threads de ataque, el método HTTP de la petición (POST,
GET ...).
 Permite exponer Web Services de simulación (o mocking) con el contenido de respuesta
personalizable.

Pruebas Funcionales
SoapUI soporta pruebas funcionales de Servicios Web suministrando un caso de prueba
con un número de pasos que pueden ser ejecutados en secuencia. En la actualidad, hay
seis tipos de pasos que proporcionan muchas posibilidades de prueba. Los casos de
prueba están organizados en un grupo de pruebas y, en un mismo proyecto, se pueden
crear varios grupos de pruebas.
Las pruebas funcionales, en soapUI, se pueden usar para una variedad de propósitos:
 Unidad de prueba: valida que cada operación del Servicio Web funciona como se indica.
 Pruebas de compatibilidad: valida que el resultado devuelto por el Servicio Web es
compatible con su definición.
 Prueba de procesos: valida que una secuencia de invocaciones de Servicios Web ejecuta
un proceso de negocio requerido.
 Pruebas guiadas por datos: valida que cualquiera de los anteriores funciona como
requerimiento de datos de entrada procedentes de fuentes externas (por ejemplo, una
base de datos u otro servicio Web)

Buenas prácticas y recomendaciones de uso


 Es fácil y rápido crear, ejecutar y guardar los casos de prueba funcional requeridos. Se
pueden adaptar y expandir en cualquier momento.
 Es fácil hacer aserciones. También con expresiones regulares.
 Permite usar mocks para simular el comportamiento de los WebSerivces que aún no
estén construidos.
 Es de licencia opensource y por lo tanto gratuito.
 Puede ser integrado con herramientas de diversa utilidad.
Pulse Si
Crear un nuevo proyecto SoapUI para el proyecto a probar, configurando la url que
contiene el WSDL del proyecto.

Nombre de Proyecto: FacturaWeb

Initial WSDL: http://localhost:8080/FacturaWS/FacturaWS?WSDL

Pulsar
Pulsar
Seleccionar metodo adicion>>request. Cambiar todos los valores por:

Pulsar el boton de ejecucion


Ahora, Consulta>>Request 1>>1818
Pulsar para
adicionar un test.
Esta herramienta maneja el concepto de TestSuite, TestCase, TestStep, como lo manejan
JUnit, JMeter, etc. Un TestSuite sirve para contener un número arbitrario de casos de
prueba (TestCases) que pueden ejecutarse secuencialmente o en paralelo. Los TestSteps
sirven para ejecutar TestCases secuencialmente. Una vez creadas las peticiones, es
posible generar una TestSuite y así automatizar las pruebas funcionales, con el valor
agregado de tener pruebas de regresión.

Pulse
Pulsar cuyo objetivo es adicionar verificaciones. Este verificacion de un texto consulta
response
Se abre las Assertion
Pulsar
Leonel Messi reside en Barcelona más no en Madrid

Por cada TestCase es posible hacer validaciones automáticas de los resultados.


Entonces, por cada petición, se verifica si la respuesta es un fallo, o no lo es, o contiene
un determinado valor, o no lo contiene. Es una buena práctica, en el manejo de web
services, que los errores inesperado del sistema (Runtime Exception) viajen en un tag
“fault” distinto a una respuesta normal del servicio.
Se va realizar un test de propiedades en el metodo adicion.

Habra la aplicación Microsoft excel

Diligencie

Los nombres de los campos alfabeticamente

Guarde como clientes.xls en Mis Documentos


Sobre adicion TestCase>>Mouse Derecho>>Add Step>>Properties

Adicion Propiedad
Pulse y despues

Pulse Si
Diligencie asi y pulse Ejecucion
De doble click sobre adicion

Completa con Get Data


Hacer doble click

Hacer doble click sobre


Sobre adicion TestCase>>Mouse Derecho>>Add Step>>Property Transfer

Pulse para adicionar propiedad


Adicione las propiedades:

nombre

telefono

domicilio

Cambiar

Pulsar Ejecucion . De click sobre Undock

Pulsar Ejecucion
Pulsar Ejecucion

Pulsar Ejecucion
Sobre adicion TestCase>>Mouse Derecho>>Show Test Case Editor

. Ejecucion

También podría gustarte