Blog!

Busqueda de información

Pruebas De Rendimiento de Servicios Web con SoapUI y Groovy

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 

En general cuando el desarrollo de algún servicio web es finalizado es necesario llevar a cabo una variedad de pruebas para comprobar que todo funciona correctamente. En este artículo explicaremos una manera práctica de realizar pruebas de rendimiento a Servicios Web con ayuda de la herramienta SoapUI y el lenguaje de programación Groovy. Ya que el comportamiento y consumo de recursos de cada servicio web varía en función de los diferentes flujos que este pueda tomar, mostraremos un ejemplo de cómo utilizar diferentes entradas para nuestro servicio y que este tome distintos caminos para simular casos más reales.  Cabe mencionar que para este ejemplo es necesaria la versión  Pro de SoapUI y ciertos conocimientos de Groovy.

Para este ejemplo en particular haremos uso de un servicio web previamente desarrollado y publicado en un ambiente Oracle  SOA Suite 11g, el cual recibe datos básicos de una persona (Nombre, Dirección, Teléfono, etc), almacena dichos datos en una base de datos y nos regresa como respuesta un Identificador del registro y la palabra “Hecho” en caso de transacción exitosa.

La prueba consistirá en leer archivos XML contenidos en una carpeta, los cuales contienen diferentes entradas para dicho servicio, posteriormente serán enviados como peticiones SOAP al servicio de manera aleatoria y finalmente recibiremos la respuestas y las escribiremos en una carpeta para poder así analizarlas.

 

 

El primer paso es crear nuestros archivos de entrada, en este caso contaremos con ocho de ellos y a continuación se muestra un ejemplo.

 

 

Continuamos con la creación del proyecto en SoapUI, ingresamos un nombre para el proyecto, y el endpoint del servicio web. Agregamos un TestSuite  al proyecto y posteriormente un TestCase.

 

 

 

 

 

 

 

Nuestro proyecto se verá como en la siguiente pantalla.

 

 

Groovy es un lenguaje orientado a objetos derivado del lenguaje Java y compatible con su plataforma, utilizaremos este lenguaje ya que es soportado por SoapUi en forma de script. Es posible crear una clase Groovy  y agregarla a la librería de SoapUI para usarla dentro de nuestros scripts.

 

Para nuestro ejemplo tenemos la siguiente clase Groovy , GroovyTest con tres métodos, uno para leer el contenido de los archivos xml de entrada, otro para generar un número aleatorio para elegir el mensaje a enviar y el ultimo para escribir las respuestas del servicio en  archivos.

 

 

 

En el método readContentsXml hacemos uso de los Closures de Groovy, que son bloques de código que se ejecutan dentro de un método, o como parámetro de un método. En él, se recorre la carpeta en busca de archivos con extensión xml y por cada archivo que se encuentra se lee su contenido y es agregado a un arreglo. El método regresa como parámetro de salida un arreglo con los contenidos de todos los archivos de la carpeta indicada.

 

El método generateRandomNumber recibe como parámetros el límite inferior y superior para generar el número aleatorio.

El método writeResponseToFile recibe como parámetros el mensaje de respuesta y un contador de respuesta para escribir el archivo en la ruta establecida.

Ahora necesitamos incluir nuestra clase en la librería de SoapUI. Para configurar la carpeta en donde SoapUI leerá nuestras clases Groovy hacemos lo siguiente:

 

Vamos a File, Preferences , después  a la pestaña SoapUI Pro y en el campo Script Library elegimos la carpeta donde se guardaran las clases Groovy. Es importante notar que el package de la clase Groovy debe coincidir en su equivalente en carpetas. Copiamos la clase GroovyTest.groovy en la carpeta deseada.

 

 

 

 

 

El siguiente paso es crear los Steps en SoapUI para generar nuestra prueba con ayuda de la clase Groovy. Creamos el pimer Step, lo nombramos GroovyStep1  y escribimos el código.

 

 

 

En este primer Step definimos el número de peticiones que se harán en la prueba, creamos la instancia de nuestra clase GroovyTest, y leemos  los archivos con los mensajes de petición ejecutando el método readFilecontentsXml y los ponemos en el  contexto del TestCase para poderlos usar en otros Steps.

 

Al igual que el paso anterior creamos un nuevo Step y  lo nombramos GroovyStep2. En este paso ejecutaremos el método estático de nuestra clase Groovy para generar el numero aleatorio pasando como parámetros 0 y 7, ya que para este caso en específico contamos con ocho archivos de prueba diferentes. Finalmente ponemos el número aleatorio en el contexto.

 

Uno de los pasos más importantes es el siguiente. Agregamos un Step mas pero esta vez de tipo Test Request, lo nombramos SubmitRequest y elegimos la operación del servicio web  a ejecutar, aceptamos los valores por defecto y substituimos la entrada de la petición por la siguiente línea de código:  ${=context.get('fileContents')[context.get('ramdomNumber')]}.

 

 

 

 

 

 

Al ejecutarse este Step, se accederá al arreglo de mensajes y se enviara el indicado por el número aleatorio.

Por ultimo agregamos un nuevo Groovy Step para escribir la respuesta del servicio web en un archivo.

 

 

Obtenemos la respuesta mediante el método context.expand() indicándole el Step en el que se hizo la petición, y la escribimos al archivo mediante el método writeResponseTofile de nuestra clase groovy. Se aumenta el contador de peticiones para el nombre de archivos de respuesta y decrementamos el número de peticiones restantes. Finalmente, si aún hay peticiones por ejecutarse regresamos al GroovyStep2 para generar un nuevo número aleatorio y enviar una nueva petición.

 

Para terminar nuestra prueba solo necesitamos ejecutarla, y lo hacemos abriendo el TestCase1.

Verificamos que se hayan escrito los archivos correspondientes a cada respuesta y abrimos al menos un archivo para observar el mensaje.

Para cualquier duda o información estoy a sus órdenes en los correos  abernal[at]baware.com.mx y  info[at]baware.com.mx.

Log in