Metodologías y herramientas de testing en SOA

octubre 7, 2012

share

Archived

El testing es un proceso clave en el desarrollo de software: su objetivo no es otro que la detección de errores, y es por eso que suele decirse que una prueba exitosa es aquella que permite encontrar un mal comportamiento del sistema. Si bien el testing no es un proceso “completo” (es decir, no garantiza la ausencia de errores), resulta clave para asegurar la calidad del producto bajo desarrollo. Existen diversos tipos de testing, cada uno con sus enfoques y particularidades: de caja negra, de caja blanca, de regresión, de integración, de unidad, etc. También son numerosas las herramientas que son de valiosa ayuda para cualquier desarrollador de software.

Los conceptos y fundamentos del testing han sido trasladados también dentro del vasto universo de las arquitecturas SOA. Y con no una, sino con varias vueltas de tuerca. Una arquitectura SOA es atractiva porque ofrece gran flexibilidad e integración de servicios; pero estas mismas características hacen todo un verdadero desafío adaptar las nociones de testing a SOA. El testing en SOA debe aportar más que performance y funcionalidad como en el testing clásico. Debe considerar los siguientes tres aspectos como mínimo: la disponibilidad de servicios, sus interfaces, y fundamentalmente, su heterogeneidad tecnológica.

Testing y SOA

Los ítems que deben considerarse en el testing SOA son varios. Se debe poder testear servicios que no cuenten con una interfaz debidamente definida, atacar la lógica de negocio dentro de los servicios, la interacción con servicios externos, cuestiones relativas a la seguridad, y el nivel de calidad de respuesta. Esto incluye considerar no sólo la performance de un servicio, sino también su balance de carga, escalabilidad y nivel de estrés (es decir, qué tan bien responde el servicio antes condiciones desfavorables).

El perfil deseado para el encargado/a de testing SOA también es complejo, ya que debe contar con conocimientos expertos en la arquitectura del sistema. Un producto SOA integra múltiples tecnologías en uno o más servicios, donde la lógica de las aplicaciones está atrapada en las capas arquitectónicas. El enfoque usual no es novedoso: se divide la arquitectura en componentes manejables, se testean de manera individual y luego su integración, siguiendo un esquema clásico bottom-up.

Existen diversas herramientas para testing SOA, cada una con distintas metas. Green Hat GH Tester se enfoca en el testing de sistemas basados en el pasaje de mensajes. Cuenta con mucha facilidad para la creación de stubs para servicios todavía en construcción. Parasoft SOAtest y Borland SilkPerfomer SOA edition están dedicados exclusivamente para testear servicios web. AdventNet QEngine es una herramienta de testing comercial desarrollada en Java, lo cual favorece trabajar bajo distintas plataformas.

Entre las herramientas Open Source se destacan SOAP UI y PushToTest TESTMAKER. La primera es una aplicación simple para invocar servicios web sobre HTTP, y soporta varios tipos de tests. La segunda herramienta es en realidad un framework para testear funcionalidad, escalabilidad, y performance dentro de los servicios web.