Pruebas automatizadas de servicios web, Parte 1: Creación de un servicio web con IBM Rational Software Architect

Esta serie de tutoriales muestra cómo automatizar pruebas de un servicio web típico mediante el uso de un array de tecnologías tales como JUnit, Apache Commons HttpClient y Apache XMLUnit. En esta primera parte, se creará un simple servicio web mediante el uso de IBM® Rational® Software Architect.

Mohan Jadhav, Software Engineer , IBM China

Mohan Jadhav photoMohan K Jadhav es software engineer en IBM India Software Labs, Bangalore. Actualmente trabaja en ofertas RFID de IBM y tiene experiencia en pruebas y diseños de automatización.


Nivel de autor contribuyente en developerWorks

Mansoor Ahmed, Software Engineer, IBM Software Labs, Bangalore

Mansoor Ahmed photoMansoor Ahmed es software engineer en IBM India Software Labs, Bangalore. Actualmente trabaja en WebSphere Messaging and Data Services, un producto de telecomunicaciones, y es experto en servicios Web y en desarrollos de código abierto.



05-08-2011

Antes de comenzar

Acerca de esta serie

Los servicios web son componentes cada vez más esenciales en las aplicaciones de negocios y, con el surgimiento de paradigmas tales como Service-Oriented Architecture (SOA), la focalización en servicios web continúa en crecimiento. En estas aplicaciones orientadas hacia servicios y fundamentales para los servicios, probar servicios web adquiere igual significación. Una creación e implantación rápida de servicios web complejos, representa un desafío al equipo QA. La automatización de pruebas de servicios web puede ayudar al equipo a gestionar el esfuerzo de manera eficiente.

Probar servicios web generalmente incluye las siguientes tareas:

  1. Generar un cliente o un código esqueleto para el servicio web
  2. Definir datos de entrada para la prueba
  3. Invocar el servicio web por medio de cliente o código esqueleto
  4. Verificar que la respuesta real sea similar a la respuesta esperada

De esas actividades, la generación del cliente o del código esqueleto, y la verificación de respuestas, son las que requieren de un mayor esfuerzo.

Existen varias herramientas disponibles para generar un cliente o un código esqueleto para un servicio web en base al archivo WSDL (Descripción de Lenguajes de servicios de web), sin embargo, el código generado podría haberse patentado y, por lo tanto, necesitar regeneración cada vez que cambia WSDL. Una solución a este problema es la de eliminar la generación de cliente o el código esqueleto e invocar el servicio web directamente a través de un HTTP clientegenérico. Más adelante en la serie, se verá ese kit de herramientas que Apache Commons HttpClient API provee.

Del mismo modo, la verificación de respuestas generalmente implica alguna clase de intervención manual, que depende de la complejidad del contenido de la respuesta. Si la respuesta contiene elementos simples, la verificación puede ser simple ya que sólo se requiere controlar el valor en el elemento simple. Para las respuestas que contienen elementos complejos y una larga lista de dichos elementos complejos, la verificación manual requerirá de un esfuerzo mucho mayor.

Esta serie sirve de introducción a una técnica para automatizar pruebas de un servicio web típico mediante el uso de un array de tecnologías tales como JUnit, Apache Commons HttpClient (en adelante llamado HttpClient) y Apache XMLUnit (en adelante llamado XMLUnit). La técnica se muestra en la plataforma de desarrollo que ofrece IBM® Rational® Software Architect.

Esta serie consta de dos partes:

  • La Parte 1 muestra cómo crear un servicio web simple con IBM Rational Software Architect.
  • La Parte 2 introduce XMLUnit, que ofrece API para comparar dos archivos en formato XML.

Acerca de este tutorial

Este tutorial es la Parte 1 de la serie sobre cómo automatizar las pruebas de un servicio web típico, mediante el uso de un array de tecnologías tales como JUnit, Apache Commons HttpClient y Apache XMLUnit. Se describirán los pasos necesarios para la creación de un servicio web simple mediante el uso de IBM Rational Software Architect, el cual ofrece un conjunto sofisticado de características en una plataforma de desarrollo integrada.

Objetivos

En este tutorial se aprende cómo crear y probar un servicio web simple usando IBM Rational Software Architect.

Requisitos previos

Se presume que usted tiene un conocimiento básico del servicio web, su desarrollo en Java™ y alguna exposición a unidades de herramientas de prueba tales como JUnit.

Requisitos del sistema

El sistema debería tener lo siguiente:

  1. Windows 98/2000/2003
  2. IBM Rational Software Architect, versión 6.x

Crear un servicio web

Escenario de muestra

Se creará un servicio web de muestra con un sólo método que devuelve una lista de usuarios. Cada usuario tendrá un nombre y una dirección. En aras de la simplicidad, se hará que el servicio web devuelva una lista de usuarios estática. En un escenario real, esta lista podría provenir de una fuente de datos tal como una base de datos o un archivo.

El esquema XML para el usuario figura en el Listado 1.

Listado 1
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
  <xsd:element name="user">    
    <xsd:complexType>      
      <xsd:sequence>        
        <xsd:element ref="name"/>        
        <xsd:element ref="address"/>      
      </xsd:sequence>    
    </xsd:complexType>  
  </xsd:element>  
  <xsd:element name="street">    
    <xsd:complexType/>  
  </xsd:element>  
  <xsd:element name="address">    
    <xsd:complexType>      
      <xsd:sequence>        
        <xsd:element ref="street"/>        
        <xsd:element ref="city"/>        
        <xsd:element ref="zip"/>      
      </xsd:sequence>    
    </xsd:complexType>  
  </xsd:element>  
  <xsd:element name="zip">    
    <xsd:complexType/>  
  </xsd:element>  
  <xsd:element name="name" type="xsd:string"/>  
    <xsd:element name="city">    
    <xsd:complexType/>  
  </xsd:element></xsd:schema>

Para probar el servicio web de muestra:

  • Crear un proyecto Web para el servicio web.
  • Crear un proyecto Java que contendrá el código de prueba JUnit para probar el servicio web.
  • Usar HttpClient para invocar el servicio web.
  • Obtener la respuesta del servicio web y almacenarla en un archivo.
  • Usar XMLUnit API para comparar la respuesta real con la respuesta esperada.

Las secciones siguientes ilustran esas tareas.

Crear un servicio web

El primer paso es crear el servicio web.

  • Abrir Open IBM Rational Software Architect. Ir al menú Window > Abrir perspectiva > Web.
  • Vaya a Archivo > Nuevo > Proyecto y seleccione Dynamic Web Project (Proyecto Web dinámico) en el asistente como se muestra en la Figura 1.
Figura 1. Crear proyecto Web dinámico
Crear proyecto Web dinámico
  • Haga clic en Next (Siguiente).
  • Ingrese un nombre de proyecto, tal como SampleProject, para el nombre del proyecto, como se muestra en la Figura 2.
Figura 2. Nombre de proyecto Web dinámico
Nombre de proyecto Web dinámico
  • Haga clic en Finish (Finalizar).
  • Al crear el proyecto, la vista del explorador de proyectos debería verse como la Figura 3.
Figura 3. Vista del proyecto Web
Vista del proyecto Web
  • Haga clic con el botón derecho en JavaSource bajo la carpeta SampleProject\Java Resources en la vista del explorador de proyectos y seleccionar Nuevo > Paquete.
  • Ingrese el nombre del paquete, tal como com.ibm.ws.sample, en la página Paquete Java, como se muestra en la Figura 4.
Figura 4. Paquete Java
Paquete Java
  • Haga clic en Finalizar.
  • Haga clic con el botón derecho en la página com.ibm.ws.sample y seleccione Nueva > Clase para crear clases Java llamadas Address.java, User.java y Users.java. Ver los listados 2, 3 y 4 siguientes para el código fuente para estas clases.
Listado 2. Address.java
package com.ibm.ws.sample;

public class Address 
{  
  private String street;  
  private String city;  
  private String zip;  
  
  // Getters  
  public String getStreet() { return street; }  
  public String getCity() { return city; }  
  public String getZip() { return zip; }  
  
  // Setters  
  public void setStreet(String street) {this.street = street;}  
  public void setCity(String city) { this.city = city; }  
  public void setZip(String zip) { this.zip = zip; }
}
Listado 3. User.java
package com.ibm.ws.sample;
      
public class User 
{  
  private String name;  
  private Address address;  

  // Getters  
  public String getName() { return name; }  
  public Address getAddress() { return address; }	  

  // Setters  
  public void setName(String name) { this.name = name; }  
  public void setAddress(Address address) {this.address =   address;}
}
Listado. Users.java
package com.ibm.ws.sample;

public class Users 
{  
 /**  
  * Returns all the users.  
  * The list of users might come from a database  
  * in the real scenario.  
  *  
  * @return User[]  
  */ 
  public User[] getUsers() 
  {  
   User[] users = new User[3];	 	  
   users[0] = getUser("John","Park Street","Washington", "012345");  
   users[1] = getUser("Mohan","Avenue Street", "Bangalore", "456789");  
   users[2] = getUser("Mansoor","Martin Street", "Bangalore", "135791");		  
   return users; 
  }	 
  
  /**  
  * Returns a User object  
  *  
  * @param name  
  * @param street  
  * @param city  
  * @param zip  
  * @return User  
  */ 
  private User getUser(String name, String street, String city, String zip) 
  {  
   Address address = new Address();  
   address.setStreet(street);  
   address.setCity(city);  
   address.setZip(zip);		  
   User user = new User();  
   user.setName(name);  
   user.setAddress(address);		  
   return user; 
  }
}
  • Luego de crear las clases Java, el explorador de proyectos debería verse como la Figura 5.
Figura 5. Vista del explorador
Vista del explorador
  • En este punto, se hará el servicio web que se obtiene de Users.java. Haga clic con el botón derecho en Users.java y seleccionar servicios web > Crear un servicio web. Si no se ve esta opción de menú, se deberá activar la capacidad del servicio web a través del menú Window > Preferencias > Workbench > Capacidades > Desarrollador de servicios web.
  • En la página servicios web, desactivar la opción para servicio web de inicio en el proyecto Web y haga clic en Next como se muestra en la Figura 6.
Figura 6. servicios web
servicios web
  • En la página Selección de objetos, se debe asegurar que el campo Bean contenga el valor com.ibm.ws.sample.Users como se muestra en la Figura 7.
Figura 7. Página de selección de objetos
Página de selección de objetos
  • Haga clic en Next en la página Configurar la implantación de servicios sin cambiar los valores predeterminados, como se muestra en la Figura 8.
Figura 8. Página de selección de objetos
Página de selección de objetos
  • Haga clic en Next en la página Selección de una interfaz punto final de servicios sin cambiar los valores predeterminados, como se muestra en la Figura 9.
Figura 9. Selección de una interfaz punto final de servicios
Selección de una interfaz punto final de servicios
  • Haga clic en Siguiente en la página Web Service Java Bean Identity (Identidad Bean Java de servicio web), asegurar la selección del método getUsers(), como se muestra en la Figura 10.
Figura 10. Web Service Java Bean Identity
Web Service Java Bean Identity
  • En la página Publicación de servicios web, haga clic en Finalizar sin cambiar los valores predeterminados, como se muestra en la Figura 11.
Figura 11. Web ServicepPublication
Web ServicepPublication
  • La vista del Explorador de proyectos se debería parecer ahora a la de la Figura 12.
Figura 12. Explorador de proyectos
Explorador de proyectos

Implementar el servicio web

Una vez creado el servicio web, se implantará la aplicación en el servidor.

  • Haga clic con el botón derecho en el nombre del proyecto, SampleProject y seleccione Ejecutar > Ejecutar en el servidor..., como se muestra en la Figura 13.
Figura 13. Ejecución en un servidor
Ejecución en un servidor
  • En la página Define a New Server (Definir un nuevo servidor), haga clic en Next Sin cambiar los valores predeterminados, como se muestra en la Figura 14.
Figura 14. Definir un nuevo servidor
Definir un nuevo servidor
  • En la página Agregar y eliminar proyectos, se debe asegurar que SampleProjectEAR se agregue a la sección de proyectos Configurados, como se muestra en la Figura 15.
Figura 15. Agregar y eliminar proyectos
Agregar y eliminar proyectos
  • Haga clic en Finalizar.

Ahora la aplicación se implantará en el servidor. Se podrá verificar si el servicio web está en ejecución o no mediante el acceso a URL http://localhost:9080/SampleProject/services/Users en el navegador.

Conclusión

En este tutorial , se creó un servicio web simple en la plataforma de desarrollo ofrecida por el conjunto de herramientas Rational Software Architect. En la Parte 2 de la serie, se aprenderá una técnica para automatizar las pruebas a un servicio web de datos de salida mediante el uso de HttpClient and XMLUnit APIs.

Recursos

Aprender

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=SOA y servicios web
ArticleID=678265
ArticleTitle=Pruebas automatizadas de servicios web, Parte 1: Creación de un servicio web con IBM Rational Software Architect
publish-date=08052011