SoapUI: Carga masiva de web services REST con csv

 

  1. Indice
  2. Introducción
  3. Descarga de soapUI
  4. Carga masiva de web services con csv
  5. Conclusión
  1. Introducción

En este tutorial vamos a ver como a través de la herramienta SoapUI, que es una solución de testing libre y de código abierto, podemos realizar una carga masiva llamando a un web service con datos guardados en un csv.

  1. Descarga de soapUI

Para instalar la aplicación accedemos a su página web en la zona de descargas, http://soapui.org/downloads/soapui/open-source.html. La versión en este momento es la SoapUI 5.2.0

download SoapUI

3.  Carga masiva de web services con csv

Comenzamos creando un nuevo proyecto, REST en nuestro caso:

crear proyecto
Crearemos el proyecto con un xml WADL, Web Application Description Language, que sirve para describir Servicios HTTP, normalmente Servicios REST.

importar wadl

 

Y a continuación nos aparecerá el proyecto con todos los recursos.

proyecto creado

El recuso que queremos probar, lo añadimos a un TestCase.

crear testCase

Y nos creara un TestSuite, con un TestCase y con un Step que es el método que queremos probar.

testSuite creado

Añadimos otro paso, en este caso un script de Groovy con el que iremos leyendo datos y haciendo el bucle hasta que hayamos leído todo el fichero csv.

crear script groovy

Cómo queda el proyecto

Se ha renombrado el método que hace la Request y el script con lo que el proyecto queda finalmente de la siguiente manera.

proyecto completo

Configuración de parámetros y scripts

  • A nivel de TestSuite

Añadimos una propiedad con la ruta del fichero csv donde tendremos separados por algún tipo de carácter los parámetros que queremos pasar en la llamada al web service.

a nivel de TestSuite

  • A nivel de TestCase, en el Setup Script

En este script preparamos la aplicación para que lea el fichero csv que habíamos configurado y leemos la primera línea para obtener los parámetros que pasaremos al web service.


//Obtenemos la ruta del fichero csv que habiamos configurado a niveld e TestSuite

def fPath = context.expand('${#TestSuite#TestDataFilePath}')

//Creamos un objeto filereader y lo guardamos en una variable de context para usarlo en el resto de componentes

context.fileReader = new BufferedReader(new FileReader(fPath))

//leemos la primera linea

firstLine = context.fileReader.readLine()

//Dividimos cada linea por el simbolo de separacion que tengamos eel csv

String[] propData = firstLine.split(";")

testCase.testSuite.setPropertyValue("idPS",propData[0])

testCase.testSuite.setPropertyValue("date",propData[1])

testCase.testSuite.setPropertyValue("votersTurnouts",propData[2])

 

a nivel de TestCasel Setup Script

 

  • A nivel de TestCase, en el TearDown Script

En este script cerramos el fichero con los datos. Este paso se ejecutará al terminar todo el proceso.


context.fileReader.close()

 

a nivel de TestCasel TearDown Script

  • En el Método que hace la Request

Aquí formamos el JSON que mandaremos como parámetro en la Request y que estará formado por las variables que hemos ido leyendo y que están almacenadas en en la TestSuite.


{

"date":"${#TestSuite#date}",

"votersTurnouts":${#TestSuite#votersTurnouts},

"idPollingStation":"${#TestSuite#idPS}"

}

 

metodo Request

  • En el Script de Groovy que añadimos como último paso

 

En este paso vamos leyendo líneas, obteniendo los parámetros. Se los asignamos a las variables y llamamos al método que hace la Request y llama al web service.

Todo este proceso se hará hasta mientras no el fichero csv tenga líneas para leer.

 


nextLine = context.fileReader.readLine()

if(nextLine != null){

String[] propData = nextLine.split(";")

curTSuite = testRunner.testCase.testSuite

curTSuite.setPropertyValue("idPS",propData[0])

curTSuite.setPropertyValue("date",propData[1])

curTSuite.setPropertyValue("votersTurnouts",propData[2])

testRunner.gotoStep(0)

}

 

Script Groovy

Ejecutar la carga

Por último solo nos queda probar la carga, para lo que  a nivel de TestSuite damos al botón de ejecución  y en la pestaña de propiedades podremos ir viendo los valores que va leyendo del fichero csv y que se irán enviando en la Request al web service.

Ejecucion carga

Conclusión

SoapUI nos permite mejorar el desarrollo y la prueba de servicios web, pudiendo comprobar cómo se comporta dicho servicio con cargas masivas.

 

2 Replies to “SoapUI: Carga masiva de web services REST con csv”

  1. Estimado Ignacio,
    Por casualidad tienes un ejemplo que sea para un proyecto Soap?

    Muchísimas gracias.

  2. No me reconoce el los siguientes métodos:

    Thu May 25 10:21:51 CST 2017:ERROR:java.lang.NullPointerException: Cannot invoke method readLine() on null object

    Thu May 25 10:22:32 CST 2017:ERROR:java.lang.NullPointerException: Cannot invoke method close() on null object

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.