Me solicitan enviar 1000 peticiones de forma masiva a un servicio web de tipo SOAP, para lo cual puedo valerme de la funcionalidad de pruebas de SOAP UI.
![](http://lmponceb.com/wp-content/uploads/2022/11/image.png)
Para esto vamos simular la llamada a un servicio que tiene la siguiente estructura:
![](http://lmponceb.com/wp-content/uploads/2022/11/image-1-1024x675.png)
Par lo cual vamos a crear un archivo XML por cada una de las peticiones que voy a realizar y almacenarlas en una carpeta, en este caso “requests”
![](http://lmponceb.com/wp-content/uploads/2022/11/image-2-1024x525.png)
Cada uno de los archivos tendrá el fragmento de la petición que variará de llamada en llamada.
Una vez que tengo armados los archivos, procedo a estructurar la prueba dentro de SOAP UI, para esto crearemos 3 pasos
Paso 1
Script lee los archivos en el directorio “request” y inicializa un arreglo con los mismos
![](http://lmponceb.com/wp-content/uploads/2022/11/image-6-1024x820.png)
def fileList = []
new File("/path/requests/").eachFile { f ->
if (f.isFile() && f.name.endsWith('.xml')) {
def filename = f.name[0..-1]
fileList.add(filename)
log.info filename
}
}
if (fileList.size() < 1) {
testRunner.fail("No request files")
}
context.put('fileList', fileList)
Paso 2
El paso 2 es una llamada SOAP, con una modificación para que tome el nombre del archivo del arreglo creado en el paso 1
![](http://lmponceb.com/wp-content/uploads/2022/11/image-5-1024x748.png)
${=new File("/path/requests/" + (context.get('fileList')).first()).text}
Paso 3
Aquí iteramos sobre cada ejecución y almacenamos tanto la llamada, como la respuesta en el directorio “responses”
![](http://lmponceb.com/wp-content/uploads/2022/11/image-7-1024x689.png)
def fileList = context.get('fileList') def fileName = fileList.first() def newName = fileName[0..-5] def response = context.expand( '${Step2#Response}' ) def f = new File("/path/responses/${newName}_Response.xml") f.write(response, "UTF-8") def query = context.expand( '${Step2#Request}' ) def q = new File("/path/responses/${newName}_Query.xml") q.write(query, "UTF-8") fileList.pop() if(fileList.size() >0) { testRunner.gotoStepByName("Step2") }
Por ultimo ejecutamos el caso de prueba
![](http://lmponceb.com/wp-content/uploads/2022/11/image-8-1024x807.png)