sábado, 22 de octubre de 2011

SOA Testing.

1  ¿Qué es SOA? 

SOA (Service-Oriented Architecture) es un concepto de diseño de arquitectura en el cual se intenta alinear las TI con las necesidades de negocio mediante la creación de servicios de negocio y tecnológicos que proporcionan la lógica para construir o integrar aplicaciones de manera rápida y flexible.

Los beneficios que aporta SOA:
  • Reducción de costos de integración
  • Reutilización
  • Reduce el riesgo de negocio.
La mejor implementación de SOA es mediante servicios web (web services), pero esto no significa que sea la única tecnología orientada a servicios, de hecho se realizan diseños SOA en otras tecnologías como son CORBA o colas de mensajes.

2  SOA Testing

SOA provoca algunos cambios en la forma de realizar las pruebas debido a que:
  • Los servicios pueden no tener un interfaz de iteración con el usuario.
  • La lógica de negocio se encuentra integrada en los datos de entrada al servicio
  • Pueden existir servicios de terceras partes ajenos a la organización.
  • Los servicios deben mantener la integridad y reusabilidad.
  • Se debe preveer futuros aumentos en el uso de los servicios para evitar problemas de rendimiento.
A continuación se muestra una arquitectura típica de una aplicación que haga uso de diseño SOA. Una aplicación a la que acceden los usuarios hace uso de distintos sistemas en y en el que la comunicación se realiza mediante servicios que interactúan entre ellos.

Arquitectura SOA

Los usuarios acceden aun frontal que utiliza distintos servicios para proveer la información. Los servicios pueden encontrarse dentro de la propia organización o haber sido publicado por otros proveedores. 

3  Fases de SOA Testing

Las particularidades del diseño SOA hace que los procesos de pruebas se adapten a nuevas necesidades. La mejor forma de planificar las pruebas sobre estos sistemas es tratar de dividir la arquitectura en los distintos componentes partiendo de los más sencillos y llegar a los más complejos. Sobre cada una de las fases se realizarán todos los tipo de pruebas necesarias: funcionales, rendimiento, seguridad, interoperabilidad, etc...

3.1  Pruebas Unitarias

Las pruebas unitarias o a nivel de componente de servicio son realizadas generalmente por los desarrolladores. En esta fase se testean cada uno de los componentes básicos de un servicio, tomándolo de manera independiente y aisladamente antes de realizar la integración entre ellos.

3.2  Pruebas a nivel de servicio

En esta fase se testean los servicios una vez ya integrados todos sus componentes. Los objetivos de esta fase son:
  • Comprobar que los servicios cumplen los requisitos  de nuestro proyecto .
  • Comprobar que se cumplen los requisitos de negocio y de operación (tiempo de respuesta, seguridad, capacidad, etc...) de otros procesos que van a utilizar nuestro servicio.
Esta fase de pruebas es el núcleo central de nuestro proceso. En ella se tendrá en cuenta todas las características que debe cumplir el servicio de cara a su utilización. En el caso de que nuestro servicio vaya a ser utilizado por otros consumidores se deben tener en cuenta los ANS's y condiciones de uso.

3.3  Pruebas de Integración

En esta fase se realizarán pruebas encaminadas a garantizar que los distintos servicios funcionan de manera correcta manteniendo la integridad en los datos que comparten y que se transfieren entre ellos. 

Esta fase de pruebas implica en muchas ocasiones:
  • Accesos a servicios externos que proveen de datos a nuestros servicios
  • Pruebas sobre elementos de la capa de comunicaciones y a nivel de protocolo de red.
3.4  Pruebas de Sistema.
Son las pruebas que se realizan desde el interfaz de uso de los usuarios y que involucran el sistema completo. En estas prueba se comprueba que el diseño SOA que se ha adoptado cumple los requisitos de negocio y suelen utilizarse también como criterios de aceptación.

Gráficamente, podemos representar las distintas fases de pruebas:
SOA Testing - Fases de Pruebas

No hay comentarios:

Publicar un comentario