manual de usuario del arquetipo webservice

Anuncio
ATLAS
MANUAL DE USUARIO DEL
ARQUETIPO WEBSERVICE
Versión 1.10
Área de Aplicaciones Especiales y Arquitectura de
Software
Framework Atlas
Arquetipo WebService
Hoja de Control
Título
Manual de usuario del Arquetipo WebService
Documento de Referencia
NORMATIVA ATLAS
Responsable
Área de Aplicaciones Especiales y Arquitectura de Software
Versión
1.10
Fecha Versión
30/04/2014
Registro de Cambios
Versión
Causa del Cambio
1.0
Versión inicial del documento
Responsable del Cambio
Área de Integración y Arquitectura de
Aplicaciones
Fecha del Cambio
25/05/2010
- Nueva configuración de Arquetipo
Web Service
1.1
- Incluida creación previa del arquetipo
de proyecto
Área de Integración y Arquitectura de
Aplicaciones
16/09/2010
- Nueva nomenclatura de paquetes
1.2
- Modificaciones para versión 1.1.0 de
Área de Integración y Arquitectura de
ATLAS
Aplicaciones
16/02/2011
- Las preguntas frecuentes se
1.3
consultarán en el portal de
Área de Aplicaciones Especiales y
arquitectura.
Arquitectura de Software
05/07/2011
Se modificad el nombre del área
- Nueva arquitectura modular de
1.4
1.5
arquetipo de servicio web
Área de Aplicaciones Especiales y
Arquitectura de Software
- Nuevo módulo test con proyectos de
Área de Aplicaciones Especiales y
SoapUI 4.0.1
Arquitectura de Software
18/10/2011
21/11/2011
- Se añaden las clases BaseService y
BaseServiceImpl, así como los
1.6
servicios y DAOs para EstadoCivil
Área de Aplicaciones Especiales y
- Se añade a la estructura del módulo
Arquitectura de Software
web la carpeta “generador”.
- Se añaden las clases de test
2 de 41
24/02/2012
Framework Atlas
Arquetipo WebService
Versión
Causa del Cambio
Responsable del Cambio
Fecha del Cambio
agrupadas por servicio
Se elimina las clases para la fachada
ya que en los servicios web no tiene
1.7
sentido. Internamente se ha modificado Área de Aplicaciones Especiales y
la versión de axis por lo tanto esta
Arquitectura de Software
29/10/2012
versión del arquetipo utilizada esta
nueva versión.
Revisión completa del documento por
1.8
nueva estructura de arquetipo en
ATLAS 1.2.3
Se actualiza el apartado 3 para quitar
1.9
referencias a la herramienta de
validación
1.10
Área de Aplicaciones Especiales y
Arquitectura de Software
Área de Aplicaciones Especiales y
Arquitectura de Software
- Se modifica jetty por tomcat7 como
Área de Aplicaciones Especiales y
servidor de aplicaciones
Arquitectura de Software
3 de 41
27/02/2013
12/03/2014
18/07/2014
Framework Atlas
Arquetipo WebService
Índice
1
2
INTRODUCCIÓN ................................................................................................................................................................ 6
1.1
AUDIENCIA OBJETIVO .............................................................................................................................................. 6
1.2
CONOCIMIENTOS PREVIOS ...................................................................................................................................... 6
INFORMACIÓN SOBRE EL ARQUETIPO ..................................................................................................................... 8
2.1
CREACIÓN DE UNA APLICACIÓN PARTIENDO DEL ARQUETIPO .......................................................................................... 8
2.2
ESTRUCTURA DEL ARQUETIPO ....................................................................................................................................... 12
2.3
ESTRUCTURA DE DIRECTORIOS Y ARCHIVOS .................................................................................................................. 12
2.3.1
ESTRUCTURA DEL MÓDULO WEB ............................................................................................................................... 13
2.3.2
ESTRUCTURA DEL MÓDULO LIB ................................................................................................................................. 16
2.3.3
ESTRUCTURA DEL MÓDULO TEST .............................................................................................................................. 18
2.4
3.
CONFIGURACIÓN DEL DESCRIPTOR DE SERVICIOS SERVICES.XML .................................................................................. 19
1.2.1.
Configuración básica ............................................................................................................................................ 20
1.2.2.
Configuración para seguridad .............................................................................................................................. 20
2.5
DESPLIEGUE Y EJECUCIÓN DE LA APLICACIÓN ............................................................................................................... 21
2.6
EJECUCION TEST ...................................................................................................................................................... 22
2.6.1
EJECUCIÓN DE TEST UNITARIOS ................................................................................................................................. 22
2.6.2
EJECUCIÓN DE LOS TESTS DE SOAPUI ........................................................................................................................ 22
PRUEBAS FUNCIONALES CON SOAPUI. ................................................................................................................... 26
3.2.
GLOSARIO DE TÉRMINOS. ............................................................................................................................................... 26
3.3.
PANEL DE NAVEGACIÓN. ............................................................................................................................................... 26
3.4.
TESTCASES. ................................................................................................................................................................... 26
3.4.1.
Acciones de los TestCases. .................................................................................................................................... 26
3.4.2.
Crear un TestCase desde una Petición. ................................................................................................................ 27
3.4.3.
Ejecutar TestCase. ................................................................................................................................................ 30
3.5.
ASERCIONES. ................................................................................................................................................................. 30
3.5.1.
Gestión de Aserciones. .......................................................................................................................................... 31
3.5.2.
Categorías de aserción. ........................................................................................................................................ 32
3.5.3.
Aserciones comunes. ............................................................................................................................................. 34
3.5.4.
Añadir Aserciones en TestCase. ............................................................................................................................ 34
3.5.5.
Aserciones con XPath Match. ............................................................................................................................... 35
3.5.6.
Ejemplos de Aserciones XPath Match: ................................................................................................................. 35
3.6.
TEST SUITE. ................................................................................................................................................................... 37
3.6.1.
Acciones del TestSuite. .......................................................................................................................................... 37
3.6.2.
Crear TestSuite. .................................................................................................................................................... 37
4 de 41
Framework Atlas
Arquetipo WebService
3.6.3.
Ejecutar TestSuite. ................................................................................................................................................ 39
4
PREGUNTAS MAS FRECUENTES ................................................................................................................................ 40
5
ENLACES RELACIONADOS .......................................................................................................................................... 40
5 de 41
Framework Atlas
Arquetipo WebService
1
INTRODUCCIÓN
Los arquetipos son las plantillas para la generación de los distintos proyectos dentro del Framework Atlas. Estos
arquetipos utilizan el plugin archetype de maven para generar la estructura de ficheros y directorios necesarios
para nuestro proyecto, gestionando las librerías que le indiquemos así como las dependencias. Todas las librerías
serán incluidas durante el empaquetado del proyecto, por lo que para generar y compilar un arquetipo debe estar
conectado al repositorio de artefactos de la Comunidad de Madrid (Artifactory). El framework Atlas consta de los
siguientes arquetipos:
-
Arquetipo para inicio de proyecto
-
Arquetipo para módulos de tipo web
-
Arquetipo para módulos de tipo jar.
-
Arquetipo para módulos de tipo webservice o servicios web
-
Arquetipo para módulos de tipo batch
-
Arquetipo para módulos de gestión documental (documentum)
El Arquetipo WebService genera un proyecto modular con un módulo maven de tipo war para el servicio web listo
para ser desplegado, y un módulo de tipo jar para el cliente de dicho servicio. Está preparado para publicar un
servicio de Spring a través de Axis2 sin generación de código intermedio. El proyecto viene preconfigurado para
acceder a base de datos a través de Hibernate y publica como webservices una serie de servicios de ejemplo.
Se incluye un ejemplo de servicio sin seguridad, otro seguro a nivel de transporte y otro securizado con webservice
security. Para más información sobre estos tipos de seguridad consultar el manual ATLAS_MUS_Servicios_Web.
1.1
AUDIENCIA OBJETIVO
Este documento está dirigido a desarrolladores de proyectos java para ICM en los que se desee crear una
aplicación que publique un Servicio Web utilizando el framework de desarrollo Atlas.
1.2
CONOCIMIENTOS PREVIOS
Para un completo entendimiento del documento, el lector deberá tener conocimientos previos sobre las siguientes
tecnologías:
-
Java
-
Eclipse
-
Maven
-
Spring Framework.
-
Axis2 y SoapUI
6 de 41
Framework Atlas
Arquetipo WebService
Además, es necesario haber leído y seguido los pasos del manual
ATLAS_MUS_Preparacion_Entorno_Desarrollo para tener el entorno de desarrollo preparado.
7 de 41
Framework Atlas
Arquetipo WebService
2
2.1
INFORMACIÓN SOBRE EL ARQUETIPO
Creación de una aplicación partiendo del arquetipo
NOTA IMPORTANTE
Antes de generar un arquetipo es IMPRESCINDIBLE haber generado un arquetipo para
albergar el proyecto (consultar “ATLAS_MUS_Preparacion_Entorno_Desarrollo” para ver
cómo crear un arquetipo de proyecto). Cualquier arquetipo posterior será incluido como un
módulo de éste.
Crear un proyecto de Servicios Web a partir de un arquetipo es similar a la creación de un proyecto Web,
modificando el nombre del arquetipo a utilizar.
Para crear un proyecto a partir de un arquetipo maven puede consultar la guía paso a paso que se indica en el
documento ATLAS_MUS_Preparacion_Entorno_Desarrollo, según se indica en el apartado “Creación de una
aplicación Web desde cero”, sustituyendo “atlas-arquetipos-generador-web” por “atlas-arquetiposgenerador-servicioweb”.
8 de 41
Framework Atlas
Arquetipo WebService
A continuación se nos mostrará una pantalla para indicar cuáles son los parámetros con los que vamos a crear
nuestro proyecto.
9 de 41
Framework Atlas
Arquetipo WebService
ATENCION – NOMENCLATURA
Es muy importante utilizar en esta
pantalla los valores que cumplan la
normativa de Atlas:
groupId:
Nombre
del
proyecto.
Normalmente es de 4 caracteres y es
un código que se le da a un proyecto.
Todos los módulos de un proyecto
tendrán
el
mismo
corresponderá
con
groupId
el
y
se
nombre
del
proyecto.
artifactId: Nombre del módulo. (En el
caso de servicios web el nombre del
módulo
será:
xxxx_ws_yyyy
donde
xxxx se corresponde con el groupId
indicado y yyyy el texto que identifique
a este modulo y lo diferencie de otros:
Ejemplo: ejpl_ws_acceso.
El carácter de separación a utilizar
debe ser el guión bajo.
Version: La primera versión será 1.0.0
package: El nombre del paquete java
será el groupId, seguido de un punto y
el nombre del bloque funcional dentro
de la aplicación (para aplicaciones
grandes se crearán varios bloques
funcionales).
Todos
los
minúsculas.
Al pulsar Finish se crea el nuevo proyecto.
10 de 41
nombres
deben
ir
en
Framework Atlas
Arquetipo WebService
ATENCION
Las clases que se incluyen de ejemplo son simplemente eso y deben ser
eliminadas del proyecto cuando no se necesiten.
Antes de comenzar a visualizar la estructura del nuevo proyecto generado, debemos realizar un ajuste en el fichero
pom.xml del nuevo proyecto creado. Para ello, debemos abrir el fichero “web\pom.xml”, “lib\pom.xml” y
“test\pom.xml”, eliminar la sección <parent> existente y descomentar la sección <parent> que aparece
comentada.
Antes de eliminar:
Después de eliminar:
11 de 41
Framework Atlas
Arquetipo WebService
Una vez configurado el proyecto general y el subproyecto (módulo de tipo aplicación servicioweb), ya podemos
seguir viendo la estructura del subproyecto para la aplicación que acabamos de generar.
2.2
Estructura del arquetipo
Este arquetipo genera un proyecto maven multimodular con un proyecto padre cuyo pom llevará la configuración
general del resto de subproyectos. El proyecto consta de tres módulos:
Lib: Módulo de tipo jar donde se implementa el cliente del servicio web. Aquí se crearán las
interfaces de servicio y los objetos de datos de intercambio. Es además, una dependencia del
proyecto Web ya que el webservice implementado tendrá necesariamente que hacer uso de los
objetos definidos en este módulo.
Web: Módulo de tipo war, configurado para utilizar Spring, Hibernate, Axis2 y seguridad, y
preparado para desplegar el servicio web en un servidor de aplicaciones. Aquí se creará la
implementación del servicio web.
Test: Módulo con proyectos de SoapUI preparados para realizar pruebas de llamada sobre el
servicio web. Contiene un proyecto SoapUI para cada uno de los ejemplos de servicio incluidos.
Este módulo no generará ningún producto empaquetado como los otros dos módulos (paquete war
el módulo web y paquete jar el módulo lib).
2.3
Estructura de directorios y archivos
12 de 41
Framework Atlas
Arquetipo WebService
Una vez generado el proyecto se generan una serie de directorios a estilo maven, donde ubicaremos los fuentes y
recursos de las partes de java, test y aplicación.
A continuación se describe la estructura de cada uno de los dos módulos del proyecto.
2.3.1
Estructura del Módulo web
El módulo web tiene la siguiente estructura de directorios y ficheros:
Fichero de configuración de Maven del proyecto
De esta ruta cuelga la estructura de paquetes con el código fuente del
proyecto. El paquete raíz va a llamarse igual que el nombre del módulo que
se está desarrollando.
Inicialmente el paquete raíz se llamará con el código de proyecto
(equivalente al groupId).
Adicionalmente, en el subpaquete „services‟ residirán las implementaciones
de los servicios web a publicar.
En los ejemplos inferiores se ha tomado como paquete raíz „ejpl‟.
Implementación del servicio web.
Las interfaces del servicio web
deben crearse en el módulo lib.
Ruta donde se generarán los recursos del proyecto, normalmente son
ficheros de configuración y ficheros de propiedades. En nuestro caso
contiene los siguientes ficheros:
Fichero de propiedades que contiene
todas las variables de configuración
cuyo valor puede ser diferente en
distintos entornos de ejecución
(local, desarrollo, producción, etc.).
Antes de desplegar un proyecto en los
entornos de ICM, este fichero será
sustituido
por
su
homólogo
correspondiente al entorno en el que
13 de 41
Framework Atlas
Arquetipo WebService
se vaya a desplegar.
Fichero de configuración de log4j;
lleva además configuración de los
módulos de trazas y monitorización.
Fichero de propiedades que contiene
mediante clave y valor todos los
valores particulares de la aplicación
que no son susceptibles de ser
modificados
o
configurados
entre
diferentes entornos de ejecución.
Fichero de configuración de Spring
para la carga en el contexto de Spring
de todos los DAOs (clases de acceso
a datos).
Fichero de configuración de Spring
que
lleva
dataSource,
la
configuración
sessionManager
transactionManager
que
del
y
integra
Hibernate con Spring. Inicialmente el
datasource
será
configurado
mediante las propiedades ubicadas en
el fichero conf/jdbc.properties (se
generan de forma automática con
maven) aunque para
el paso a
integración
configurarse
deben
localizando por jndi al datasource del
servidor de aplicaciones.
Fichero de configuración de Spring
para la carga de las propiedades
ubicadas en application.properties y
resto de archivos de propiedades
necesarios.
Fichero de configuración de Spring
para la carga de todas las clases de
14 de 41
Framework Atlas
Arquetipo WebService
Servicios.
Ruta donde se generarán el código fuente para los test de nuestro proyecto.
Este código nunca deberá estar incluido en el jar final.
Paquete
para
los
tests
unitarios. En el módulo web no
hay tests implementados por
defecto.
Ruta donde se generarán los recursos para realizar las pruebas de test,
normalmente son ficheros de configuración y ficheros de propiedades. En
nuestro caso contiene los siguientes ficheros:
Ficheros de configuración por si
se desea acceder a la aplicación
por ssl
Lleva
la
configuración
del
dataSource, sessionManager y
transactionManager que integra
Hibernate
con
Spring.
Este
fichero es un espejo del fichero
conf/applicationContextdatabase.xml excepto que en
ningún caso debe localizar el
datasource por JNDI del servidor
de aplicaciones, puesto que en
la fase de test no tenemos
acceso a dicho servidor.
Ruta donde se generarán los recursos necesarios para la parte web de la
aplicación.
Fichero de acceso principal que redirige al
listado de servicios del web service.
Página de entrada que muestra un listado
de
servicios
y
documentos WSDL.
15 de 41
un
enlace
a
sus
Framework Atlas
Arquetipo WebService
Descriptor de despliegue
de servicios de Axis2.
Descriptor
web
de
la
aplicación
Descriptor adicional para
el servidor de aplicaciones Weblogic.
Descriptores
adicionales
para
el
servidor
de
aplicaciones Jetty.
OBSOLETO: A partir de Atlas 1.2.7 se
ejecuta tomcat7 en local
Ficheros de configuración de tomcat7
para su ejecución en local y en los
tomcats de ICM
Directorio para herramienta de generación
automática de código.
2.3.2
Estructura del Módulo lib
El módulo lib tiene la siguiente estructura de directorios y ficheros:
Fichero de configuración de maven
del módulo lib. Normalmente las
dependencias no se incluyen en este
fichero, sino en el fichero pom.xml
del proyecto padre.
De esta ruta cuelga la estructura de paquetes con el código fuente del proyecto
cliente. El paquete raíz va a llamarse igual que el nombre del módulo que se está
desarrollando.
Inicialmente el paquete raíz se llamará con el código de proyecto (equivalente al
groupId).
16 de 41
Framework Atlas
Arquetipo WebService
Adicionalmente, para cada bloque funcional de nuestra aplicación debe crearse
un subpaquete.
Entidades de entrada/salida del API
del webservice
Interfaces de los servicios web que
serán publicados.
Implementaciones de cliente de las
interfaces de los servicios web.
Ruta donde se generarán los recursos del proyecto, normalmente son ficheros de
configuración y ficheros de propiedades. En nuestro caso contiene los siguientes
ficheros:
Fichero de configuración de los
servicios de cliente publicados.
Ficheros de política de seguridad
a aplicar si el servicio web es
seguro
Ruta donde se generarán el código fuente para los test de nuestro proyecto. Este
código nunca deberá estar incluido en el jar final.
Tests unitarios para comprobar la
correcta implementación de los
clientes del servicio web.
Ruta donde se generarán los recursos para realizar las pruebas de test,
normalmente son ficheros de configuración y ficheros de propiedades. En nuestro
caso contiene los siguientes ficheros:
Fichero
de
propiedades
que
contiene mediante clave y valor
17 de 41
Framework Atlas
Arquetipo WebService
todos los valores susceptibles de
ser
modificados
entre
diferentes
o
configurados
entornos
de
ejecución. Este fichero solamente
es para la ejecución de los test.
Fichero de configuración de log4j;
lleva además configuración de los
módulos de trazas y monitorización.
Contiene la configuración básica de
un bean de Spring de ejemplo para
ejecutar el test de JUnit que viene
preconfigurado.
Fichero
de
propiedades
que
contiene mediante clave y valor
todos los valores particulares de la
aplicación que no son susceptibles
de ser modificados o configurados
entre
diferentes
entornos
de
ejecución.
Directorios de uso interno de ICM
para
la
configuración
de
la
aplicación en los distintos entornos.
Los ficheros environment.properties
de estos directorios solamente se
utilizan para la ejecución de los test
(la librería es independiente del
entorno).
Si se incluye una nueva variable en
src/main/resources/environment.pro
perties se ha de incluir también en
todos estos.
2.3.3
Estructura del Módulo test
18 de 41
Framework Atlas
Arquetipo WebService
El módulo test tiene la siguiente estructura de directorios y ficheros:
Fichero de configuración de maven
del módulo test. Normalmente las
dependencias no se incluyen en este
fichero, sino en el fichero pom.xml
del proyecto padre.
De esta ruta cuelga la estructura de paquetes con el código fuente. En este
módulo no se incluye código fuente.
.
Ruta donde se generarán los recursos del proyecto. En nuestro caso contiene los
siguientes ficheros:
Proyectos
SoapUI
para
los
servicios de ejemplo.
Almacenes de certificados para
las pruebas con SoapUI.
Descriptores del ejemplo de
servicio web.
Ruta donde se generarán el código fuente para los test de nuestro proyecto. Este
módulo no tiene código java de tests unitarios.
Ruta donde se generarán los recursos para realizar las pruebas de test,
normalmente son ficheros de configuración y ficheros de propiedades. Este
módulo no tiene recursos para los tests java:
2.4
Configuración del descriptor de servicios services.xml
Toda la configuración que se muestra a continuación se realiza según marca la documentación de Axis2, por lo que
para cualquier consulta adicional puede consultarlo en la web
http://axis.apache.org/axis2/java/core/docs/axis2config.html.
19 de 41
Framework Atlas
Arquetipo WebService
1.2.1.
Configuración básica
El arquetipo genera el fichero services.xml en el módulo web con una configuración válida que despliega un bean
del contexto de Spring como WebService. Si necesitamos editar dicho fichero lo podremos hacer de la siguiente
manera:
service: etiqueta que especifica un servicio, podemos publicar tantos servicios como deseemos siempre
que tengan un nombre diferente (parámetro name). Inicialmente se pone como nombre de servicio el
nombre de la aplicación.
ServiceObjectSupplier: especifica que clase nos proporciona los objetos que vamos a publicar, en
nuestro caso Spring. Este parámetro no se debe modificar.
SpringBeanName: Nombre del bean que vamos a publicar ubicado en el contexto de Spring
(applicationContext-services.xml).
ServiceClass: Interfaz de la clase que se va a publicar. Se debe especificar la interfaz del servicio que
queremos publicar para que Axis2 sepa como generar el WSDL correspondiente, de lo contrario podemos
tener problemas por que las clases estén interceptadas por Spring-AOP y esto falsee su interfaz en
ejecución. Esta clase debe crearse en el módulo cliente lib aunque se referencie en este módulo.
A continuación se muestra un ejemplo de configuración del fichero services.xml del módulo web que publica un
servicio.
Services.xml
<?xml version="1.0" encoding="UTF-8"?>
<serviceGroup>
<service name="EjemploService">
<parameter name="ServiceObjectSupplier">
org.apache.axis2.[...].SpringServletContextObjectSupplier</parameter>
<parameter name="SpringBeanName">EjemploService</parameter>
<parameter name="ServiceClass">ejpl.webservice.services.EjemploService</parameter>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
</messageReceivers>
</service>
<!-- añadir aquí mas servicios si se desea <service name="nuevoServicio"> ... </service> -->
</serviceGroup>
1.2.2.
Configuración para seguridad
20 de 41
Framework Atlas
Arquetipo WebService
Para obtener información más detallada de la aplicación de seguridad en el servicio web, así como del contenido y
operativa de los módulos, debe consultarse el documento ATLAS_MUS_Servicios_Web.doc.
2.5
Despliegue y Ejecución de la aplicación
El arquetipo WebService es una aplicación web preparada para la publicación de alguno de sus servicios
mapeados en Spring como servicio web Axis2.
Para construir el proyecto debe ejecutarse el siguiente comando desde el POM padre del proyecto generado:
mvn clean install
Por defecto, al ejecutar Maven con los parámetros “clean install” se genera el paquete jar correspondiente al
cliente del servicio web y el war correspondiente a la aplicación web que contiene este. Para desplegar el war en
nuestro servidor de aplicaciones podemos coger el fichero de la carpeta en la que se ha generado
(web/target/nombreFichero.war), o podemos utilizar un servidor Tomcat7 local que viene preconfigurado en el
arquetipo. Para ejecutar directamente un servidor tomcat7 con nuestro proyecto desplegado, debemos ejecutar la
siguiente línea de comandos desde el directorio web de nuestro proyecto la siguiente línea de comandos:
mvn tomcat7:run
Esto arranca un servidor tomcat7 en el puerto 9080 de nuestra máquina, en el que se encuentra desplegado el war
de nuestra aplicación. Introduciendo la siguiente URL en un navegador se podrá ver un listado de los servicios
desplegados. Esta URL solo es válida para el servidor Tomcat7 local.
http://localhost:9080/services/listServices
En el caso de los ejemplos securidados el acceso es por
https://localhost:9443/services/listServices
Para la ejecución de los tests JMeter, desde el módulo test:
mvn clean install –Pjmeter
Para la generación y despliegue de los artefactos adicionales con los javadocs y el código fuente del proyecto:
mvn clean install –Dadditional_artifacts=true
21 de 41
Framework Atlas
Arquetipo WebService
Para probar la ejecución de este arquetipo puede comprobar en la URL donde se listan los servicios desplegados y
sus documentos WSDL:
http://<host>:<puerto>/<contexto>/services/listServices
2.6
2.6.1
EJECUCION TEST
Ejecución de test unitarios
Los test unitarios se encuentran en el módulo lib en la carpeta src/test/java/xxxx/client. Antes de ejecutarlos es
necesario editarlos y quitar o comentar la anotación @Ignore ya que de lo contrario no se van a ejecutar. Esta
etiqueta se ha incluido por que si se compila ejecutando los test y no está levantado el servidor de aplicaciones con
el servicio web lo test no van a funcionar.
Para comprobar la correcta implementación de la comunicación entre cliente y servidor, con el servidor del servicio
web arrancado, se deberá ejecutar la siguiente sentencia desde el directorio lib del proyecto:
mvn test
También se pueden ejecutar cada test de Junit desde el propio Eclipse como se ejecuta cualquier clase de tipo
Junit.
2.6.2
Ejecución de los tests de SoapUI
SoapUI es una aplicación para realizar llamadas a servicios web. Esta aplicación es utilizada normalmente para
comprobar la correcta ejecución de los servicios web. Los proyectos de prueba incluidos en el módulo de test se
han generado con la versión 4.0.1 de SoapUI. Esta aplicación puede ser descargada desde el siguiente enlace:
http://sourceforge.net/projects/soapui/files/soapui/4.0.1/
Para realizar una prueba de llamada al servicio web, primero debe levantarse el servidor tomcat7 tal y como se
especifica en el apartado anterior. A continuación ejecutar SoapUI.
22 de 41
Framework Atlas
Arquetipo WebService
Pulsar en el segundo icono y cargar el fichero del módulo test EjemploService-soapui-project.xml.
Una vez cargado el proyecto, desplegar el elemento EjemploServiceSoap12Binding (también puede probarse el
Soap11Binding) y el método alterar. Hacer doble click en Request 1. Con esto tendremos desplegado un XML de
petición al servicio web.
23 de 41
Framework Atlas
Arquetipo WebService
Para ejecutar esta petición hay que pulsar el icono
. Con esto se enviará la petición al servicio y se presentará
la respuesta.
24 de 41
Framework Atlas
Arquetipo WebService
Para comprobar cualquier otro método de este proyecto o del proyecto de cliente seguro debe seguirse el mismo
procedimiento.
25 de 41
Framework Atlas
Arquetipo WebService
3. Pruebas Funcionales con SoapUI.
En SoapUI, las pruebas funcionales se pueden usar para validar requisitos funcionales, tanto para invocar los
Servicios Web propios (“Pruebas unitarias”) como para una secuencia de peticiones (“pruebas de integración”),
Además, es posible añadir lógica a las pruebas mediante scripts de Groovy, lo que permite, por ejemplo,
interactuar con una base de datos o realizar un flujo de pruebas complejo.
3.2.
Glosario de términos.
TestCase: Caso de prueba funcional de Servicio Web.
TestSuite: Contenedor de casos de pruebas (TestCases).
TestStep: Paso que puede definirse en un “caso de uso”, pueden ser, peticiones http, peticiones Soap o
Script de groovy.
Aserciones: Condiciones que se evalúan tras obtener la respuesta de un petición.
3.3.
Panel de Navegación.
El panel de navegación está conformado por los siguientes componentes: (Ver imagen)
1 Panel de Navegación
ATENCION
Antes de realizar los siguiente pasos, se debe tener previamente importado los proyectos SoapUI
que se encuentran en {proyecto}/test/src/main/java/resources/soapui/
3.4.
TestCases.
Un TestCase en SoapUI, permite realizar pruebas funcionales de Servicios Web suministrando un numero de
pasos (Prueba de Casos de Usos) que pueden ser ejecutados en secuencia.
3.4.1.
Acciones de los TestCases.
Las siguientes acciones están Disponibles desde el menú que aparece al hacer clic derecho en el nodo del
TestCase.
26 de 41
Framework Atlas
Arquetipo WebService
2 Acciones de TestCase
Show TestCase Editor: Abre el editor del TestCase.
Disable/Enable TestCase: Opción que deshabilita/habilita el TestCase.
Options: Muestra la ventana de opciones del TestCase.
Add Step: añade un TestStep al TestCase.
New LoadTest: Opción que abre una ventana para crear una nueva prueba de carga para el TestCase.
Clone TestCase: Opción que permite clonar todo el TestCase, opcionalmente en otro TestSuite.
Clear: Muestra una ventana para eliminar todos los TestSteps del TestCase.
Rename: Opción que permite renombrar el TestCase.
Remove: Opción que permite eliminar el TestCase de su TestSuite.
Launch Runner: Opción que abre cuadro de diálogo para el lanzador del TestCase.
Move TestCase Up: Opción que mueve el actual TestCase hacia arriba en la lista de los TestCase.
Move TestCase Down: Opción que mueve el actual TestCase hacia abajo en la lista de los TestCase.
Online Help: Opción que abre la página de ayuda online en el navegador.
3.4.2.
Crear un TestCase desde una Petición.
Una vez tengamos algunas peticiones configuradas, podremos realizar un Caso de Prueba que verifique su
comportamiento.
Sobre una petición, presione el botón derecho del ratón y seleccione la opción “Add to TestCase”
27 de 41
Framework Atlas
Arquetipo WebService
3 Agregar Caso de Prueba
Aparecerá el listado de Casos de Pruebas previamente creados.
4 Listado de Casos de Pruebas
Seleccione el Caso de Prueba al cual desea agregar el nuevo Caso de Prueba y presione el botón
“Aceptar“.
Si no hay ningún Grupo de Prueba/Caso de Prueba en el proyecto, soapUI abrirá una ventana para pedir
los nombres del TestSuite y TestCase.
5 Create TestSuite
6 Create TestCase
28 de 41
Framework Atlas
Arquetipo WebService
SoapUI abrirá una ventana para introducir el nombre y especificar aserciones comunes en la petición de
prueba. Las aserciones a seleccionar son las siguientes:
o
Adds Validation that response is a SOAP message. (Valida que la respuesta recibida es un
mensaje Soap)
o
Adds Validation that response is not a SOAP Fault. (Valida que la respuesta recibida sea un
mensaje Soap no fallido, si la prueba válida si se produces un error, no se debe seleccionar esta
opción).
7 Agregar TestCase
Los correspondientes TestSuite/TestCase se crearán y la petición se añadirá como TestCase, la cuál es
una copia de la petición original (de esta manera, puedes seguir utilizándolo sin modificar la petición de
prueba)
Un editor de peticiones de prueba casi idéntico al estándar se abre con el nuevo TestCase.
29 de 41
Framework Atlas
Arquetipo WebService
8 Editor de peticiones de prueba
3.4.3.
Ejecutar TestCase.
En el panel de Navegación, haga doble clic en el caso de prueba que contiene aserciones. Seguidamente SoapUI
abrirá la ventana correspondiente. Haga clic en el botón de reproducción, el caso de prueba se ejecutara,
evaluando las aserciones contenidas en los pasos “TestStep”.
3.5.
Aserciones.
30 de 41
Framework Atlas
Arquetipo WebService
Las aserciones se utilizan para validar el mensaje recibido por un “TestStep” durante la ejecución, por lo general
mediante la comparación de las partes del mensaje (o todo el mensaje) a algún valor esperado. Se pueden añadir
cualquier numero de aserciones a un “TestStep”.
Después de una ejecución, todas las aserciones son aplicadas a la respuesta recibida, si alguna de esta
validaciones falla, el “TestStep” se marca como fallido en la vista del caso de prueba y se muestra la
correspondiente entrada en el registro de la ejecución de pruebas.
3.5.1.
Gestión de Aserciones.
Las aserciones siempre se muestran en la pestaña inferior del TestSpet que lo contiene.
31 de 41
Framework Atlas
Arquetipo WebService
En la imagen anterior se ven tres aserciones añadidas en el mensaje Soap del TestStep. Las dos primeras fueron
OK, pero la última fue fallida.
La barra de herramientas
localizada en la parte superior del listado de aserciones, permite
agregar, configurar, eliminar, mover y clonar aserciones y presionando el botón derecho del ratón, aparecerá un
menú emergente que contiene acciones similares.
Al hacer doble clic en una aserción nos lleva a su ventana de configuración si está disponible.
3.5.2.
Categorías de aserción.
Todas las categorías que contienen aserciones se enumeran a continuación:
Property Content
Contains: Busca la existencia de una cadena en los valores de
(Propiedades de Contenido)
las propiedades. Soporta expresiones regulares. Es aplicable a
cualquier propiedad.
Not Constains: Busca la inexistencia de una cadena en los
valores de las propiedades. Soporta expresiones regulares. Es
aplicable a cualquier propiedad.
XPath Macht: Usos de es una expresión XPath para seleccionar
el contenido de la propiedad de destino y compara el resultado
con un valor esperado. Aplicable a cualquier propiedad que
contiene XML.
XQuery Match: Permite el uso de una expresión XQuery para
seleccionar el contenido de la propiedad de destino y compara el
resultado con un valor esperado. Aplicable a cualquier propiedad
que contiene XML.
Message Content Assertion: Permite la validación de contenido
32 de 41
Framework Atlas
Arquetipo WebService
complejo de mensajes XML. Aplicable a cualquier propiedad que
contenga XML.
Compliance, Status and
HTTP Download all resource: Descarga todos los recursos que
Standards
se encuentran referenciados en un documento HTML (imágenes,
(Cumplimientoc, Estado y
scripts, etc) y valida que todos ellos estén disponibles. Aplicable a
Normas)
cualquier propiedad que contiene HTML.
Invalid HTTP Status Codes: Valida que el mensaje de respuesta
recibido contiene un estado de código HTTP no valido en la lista
definida. (Aplicable a cualquier TestStep que reciba mensajes
HTTP).
Not SOAP Fault: Valida que el mensaje de respuesta recibido no
sea un error de Soap.
Schema Compliance: Valida que el mensaje de respuesta
recibido sea compatible con el WSDL asociado o la definición de
esquema WADL. (Aplicable a SOAP y REST TestStep)
SOAP Fault: Valida que el mensaje de respuesta recibido sea un
error de Soap. (Aplicable solo a MockResponse y TestSteps
Soap).
SOAP Response: Valida que la respuesta recibida sea un
mensaje Soap valido. (Aplicable solo a TestRequest y TestSteps
Soap).
Valid HTTP Status Codes: Valida que el mensaje de respuesta
recibido contenga un estado de código HTTP valido en la lista
definida. (Aplicable a cualquier TestStep que reciba mensajes
HTTP).
WS-Addressing Request: Valida que la solicitud recibida
contenga encabezados de WS-Addressing válidos. (Aplicable
solo a MockResponse y TestSteps Soap).
WS-Addressing Response: Valida que la respuesta recibida
contenga encabezados de WS-Addressing válidos. (Aplicable
solo a TestRequest y TestSteps Soap).
WS-Security Status: Valida que el mensaje recibido contenga
cabeceras WS-Security validos. (Aplicable solo a TestSteps
Soap).
Script
Script Assertion: Ejecuta un script personalizado para realizar
validaciones arbitrarias. (Aplicable solo a TestSteps)
SLA
Response SLA: Valida que la ultima respuesta recibida fue
dentro de los limites definidos. (Aplicable a Script, TestSteps y
TestSteps que envían peticiones y reciben respuesta)
33 de 41
Framework Atlas
Arquetipo WebService
JMS
JMS Status: Valida que la solicitud JMS sea ejecutada con éxito.
(Aplicable a TestSteps con JMS endpoint)
JMS Timeout: Valida que la declaración JMS no tome más
tiempo que la duración especificada. (Aplicable a TestSteps con
JMS endpoint)
JBDC
JDBC Status: Valida que la declaración JDBC sea ejecutada con
éxito. (Aplicable solo a JDBC TestSteps)
JDBC Timeout: Valida que la declaración JDBC no tome más
tiempo que la duración especificada. (Aplicable solo a JDBC
TestSteps)
Security
Sensitive Information Exposure: Comprueba que el mensaje
recibido no expone información sensible sobre el sistema de
destino. (Aplicable a REST, SOAP y http TestSteps)
3.5.3.
Aserciones comunes.
Las aserciones disponibles para todos tipos de TestSteps son:
Contains - comprueba la existencia de una cadena especificada
Not Contains - comprueba la inexistencia de una cadena especificada.
Reponse SLA - comprobar el tiempo de respuesta frente a un valor especificado.
XPath Match - compara el resultado de una expresión XPath para un valor esperado.
XQuery match - compara el resultado de una expresión XQuery a un valor esperado
Script - Ejecuta una secuencia de comandos arbitraria que se puede utilizar para validar el mensaje
recibido si lo desea.
3.5.4.
Añadir Aserciones en TestCase.
Seleccionar el “TestStep” y presione la tecla “enter”, SoapUI abrirá un editor de peticiones de prueba.
En la barra de herramientas ubicada en la parte superior del editor de peticiones de prueba, seleccionar el
segundo botón.
34 de 41
Framework Atlas
Arquetipo WebService
9 Botón para Agregar Aserción
SoapUI abrirá la ventana de dialogo que permitirá elegir el tipo de aserción.
10 Ventana para agregar Aserciones
Presione el botón “Add” para agregar la aserción seleccionada.
3.5.5.
Aserciones con XPath Match.
La aserción “XPath Match” permite la especificación de una expresión XPath para ser evaluada en relación a un
mensaje de respuesta recibido y comparar su resultado con un valor predefinido. Las expresiones pueden
eleccionar todo, desde valores de atributos, hacer evaluaciones booleanas o seleccionar la respuesta de todo el
cuerpo (XmlUnit se usa internamente para comparar los elementos XML, jerarquías o nodos). Internamente,
soapUI usa el motor Saxon 8.8 XPath que tiene soporte para XPath 1,0 y 2,0 XPath.
La ventana de diálogo de configuración para la aserción XPath Match se divide en 2 zonas, la de la parte superior
que contiene la expresión XPath deseada y la de la parte inferior que contiene el resultado esperado.
3.5.6.
Ejemplos de Aserciones XPath Match:
35 de 41
Framework Atlas
Arquetipo WebService
Los siguientes ejemplos son realizados sobre el proyecto EjemploService-soapui-project.xml en el TestStep
“Alterar”
Valida si existe una etiqueta xml en el mensaje de respuesta:
XPath Expression:
declare namespace ax23='http://datos.ejpl_ws/xsd';
exists(//ax23:cadenaSalida)
Expected Result:
true
Valida que el valor de la etiqueta idLlamada sea numérico.
XPath Expression:
declare namespace ax23='http://datos.ejpl_ws/xsd';
matches(//ax23:idLlamada/text(),'\d')
Expected Result:
true
Valida que el valor de la etiqueta idLlamada sea mayor que 0.
XPath Expression:
declare namespace ax23='http://datos.ejpl_ws/xsd';
//ax23:idLlamada/text()>0
Expected Result:
true
Valida que el valor de la etiqueta cadenaSalida contenga el valor “cadena”.
XPath Expression:
declare namespace ax23='http://datos.ejpl_ws/xsd';
//ax23:cadenaSalida/contains(text(),'cadena')
36 de 41
Framework Atlas
Arquetipo WebService
Expected Result:
true
Ver el siguiente enlace http://www.w3.org/TR/xpath/#section-Expressions para ver todas todas las funciones
predefinidas con XPath.
3.6.
Test Suite.
Una TestSuite sirve como contenedor para un numero arbitrario de Casos de Pruebas (“TestCases”). Cuando se
ejecuta un TestSuite, los Casos de Pruebas (“TestCases”) incluidos se pueden ejecutar tanto en secuencia como
en paralelo.
3.6.1.
Acciones del TestSuite.
Las siguientes acciones están disponibles desde el menú que aparece al realizar clic derecho sobre el nodo del
“TestSuite”.
Show TestSuite Editor: Opción que permite abrir el lanzador de TestSuite.
Disable TestSuite: Opción que permite habilita/deshabilita el TestSuite
New TestCase: Opción que permite crear un nuevo caso de prueba en el TestSuite
Clone TestSuite: Opción que permite clonar una TestSuite, incluyendo todos los Casos de Pruebas
(“TestCases”) y TestSpteps.
Launch TestRunner: Opción que abre un cuadro de dialogo para ejecutar el TestSuite desde línea de
comandos.
Rename: Opción que permite renombrar el TestSuite.
Remove: Opción que permite eliminar el TestSuite del proyecto SoapUI.
Online Help: Abre la pagina de ayuda online en el navegador.
3.6.2.
Crear TestSuite.
Presionar botón derecho del ratón sobre la interfaz y seleccionar la opción “Generate TestSuite”.
37 de 41
Framework Atlas
Arquetipo WebService
11 Generate TestSuite
SoapUI abrirá un cuadro de dialogo para generar un “TestSuite” completo para la interfaz seleccionada.
12 Opciones de generación del TestSuite
El cuadro de dialogo contiene las siguientes opciones:
o
TestSuite: Combobox que permite seleccionar crear una TestSuite sobre una existente o una
nuevo.
o
Style: Existen dos Tipos de estilos:

One TestCase for each Operation: Permite crear TestSuite con casos de pruebas para
cada operación.

Single TestCase with one Request for each Operation: Permite crear TestSuite con casos
de pruebas únicos con una sola solicitud por cada operación.
o
Request Content: Permite definir el contenido de la solicitud para los casos de prueba. Existe dos
opciones.

Use existing Request in Interface: Crea Casos de Pruebas con los mensajes de solicitud
existentes en la interfaz.
38 de 41
Framework Atlas
Arquetipo WebService

Create new empty requests: Crea Casos de Pruebas con mensajes de solicitud vacios.
o
Operations: Permite seleccionar las operaciones a las cuales desea generar Casos de Pruebas.
o
Generate LoadTest: Permite crear una prueba de carga por defecto para cada Caso de Prueba
generado.
Seleccione las opciones que usted cree oportunas para sus pruebas y por ultimo presione el botón “OK”.
Si en el cuadro de dialogo anterior ha seleccionado en la opción “TestSuite” el valor por defecto “<create>”,
aparece la siguiente ventana, que permite especificar el nombre de la “TestSuite”:
13 Name of TestSuite
Digite en nombre de la “TestSuite” y presione el botón “Aceptar”.
Si ha seleccionado la opción “One TestCase for each Operation” en el cuadro de dialogo de creación de
“TestSuite” y en el caso de que una operación tenga más de un mensaje de solicitud, aparecerá una
ventana informando que el nombre del paso debe ser único y debe ser especificado.
14 Name of TestName
Digite en nombre de la “TestStep” y presione el botón “Aceptar”.
3.6.3.
Ejecutar TestSuite.
Haciendo doble clic sobre un TestSuite, SoapUI abre el lanzador de TestSuite que contiene la lista de los Casos de
Pruebas (TestCases). Cada Caso de Prueba tiene una barra de progreso que está determinada por la cantidad de
pasos (TestStep) y por defecto no está activa. Haga clic en el botón de reproducción, los casos de pruebas se
ejecutaran, evaluando las aserciones contenidas en los pasos TestStep, la barra de progreso puede tomar color
rojo o verde según el resultado de cada TestStep (Rojo si el TestStep fue fallido, verde si fue correcto) y muestra
un texto indicando del resultado final de cada prueba.
39 de 41
Framework Atlas
Arquetipo WebService
15 Lanzador de TestSuite sin Ejecutar
16 Lanzador de TestSuite Ejecutado
4
PREGUNTAS MAS FRECUENTES
La lista de preguntas frecuentes se encuentra en el portal de arquitectura.
5
ENLACES RELACIONADOS
Producto
URL
40 de 41
Framework Atlas
Arquetipo WebService
Axis2
http://ws.apache.org/axis2/
Configuración
http://axis.apache.org/axis2/java/core/docs/axis2config.html
Services.xml
Apache Maven
http://maven.apache.org/
Log4J
http://logging.apache.org/log4j/
SoapUI
http://www.soapui.org/
http://www.soapui.org/Test-Automation/maven-2x.html
http://www.soapui.org/Functional-Testing/testcase-execution.html
XPath
http://www.w3.org/TR/xpath/#section-Expressions
41 de 41
Descargar