Generación de pruebas de performance a partir de pruebas funcionales para sistemas web

Post on 20-Jun-2015

148 views 4 download

Tags:

description

Las pruebas de rendimiento consisten en simular carga en el sistema bajo pruebas para analizar el desempeño de la infraestructura durante la ejecución de la prueba, pudiendo encontrar cuellos de botella y oportunidades de mejora. Para la simulación se utilizan herramientas específicas, en las que se debe automatizar las acciones que generarán esa carga, esto es: las interacciones entre el usuario y el servidor. Para poder simular muchos usuarios con poca infraestructura de pruebas, se automatizan las interacciones a nivel de protocolo (en scripts), lo cual hace que la automatización sea más compleja (en cuanto al trabajo necesario para su preparación) que la automatización de pruebas funcionales, que se realiza a nivel de interfaz gráfica. Generalmente la tarea de automatización consume entre el 30% y el 50% del esfuerzo de un proyecto de pruebas de rendimiento. En este artículo presentamos la herramienta desarrollada para seguir un nuevo enfoque para generar scripts para pruebas de rendimiento a partir de scripts de pruebas funcionales. La herramienta implementada ya ha sido puesta en funcionamiento en proyectos reales, de los cuales se muestran los principales resultados que reflejan mayor flexibilidad y menor costo de automatización.

Transcript of Generación de pruebas de performance a partir de pruebas funcionales para sistemas web

Generación de Pruebas de Rendimiento a Partir de Pruebas Funcionales para

Sistemas WebFederico Toledo (ftoledo@abstracta.com.uy)Matías Reina

Fabián Baptista

Macario Polo Usaola

Beatriz Pérez Lamancha

Agenda

• Introducción y background– Functional Testing Automation– Performance Testing Automation– Motivación

• Propuesta

• Trabajo Relacionado• Conclusiones y trabajo futuro

Funcional Testing Automation

• Record and Playback

• User interface level automation

• Selenium

Intro a Selenium

Tester / User

SUT: System Under Test

Manual Test Case Execution

Intro a Selenium

Functional Test Scripts

Selenium captura las Interactiones del usuario

Tester / User

Ejecución y reporte

SUT: System Under Test

Manual Test Case Execution

This is record and playback!

Performance Testing Automation

• Record and playback, pero a nivel de Protocolo

• Load generator ( )– Simulación de múltiples Virtual

Users concurrentes desde pocas máquinas de prueba

– No pueden ser simulados con navegadores reales

– Entonces, la herramienta ejecuta procesos que simulan el tráfico HTTP

¿Cómo capturar el tráfico?

PerformanceTest Scripts captura el

trafico HTTP

Tester / User

Ejecución y reportes

SUT: System Under TestHTTP traffic

Web Server

Manual Test Case Execution

Performance Test Script

Dependiendo del sistema,

1 linea en Selenium es equivalente a 200

lineas in OpenSTA

Performance Testing Methodology

• Vázquez, G., Reina, M., Toledo, F., de Uvarow, S., Greisin, E., López, H.: Metodología de Pruebas de Performance. Presented at the JCC (2008).

Test Design Automation

Execute

Analyze Fix Entre el 30% y 50% en tareas de automatización

Motivación

• Performance testing es muy caro• No hay flexibilidad– Si la aplicación cambia, es necesario reconstruir

los scripts

Objetivos para performance testing automation• Reducir costos• Mejorar la flexibilidad

Proposal Overview

Functional Test Scripts

System Under Test

HTTP traffic

Sniffer HTTP

Automatic Test Case Execution

HTTP session

System Under Test Interface

Proposal Overview

Functional Test Scripts

Http session

Http session model

Generate

Performance TestScripts

Generate

Artefactos del Proceso

Meta-model

Relacionado con el Protocolo

Relacionado con el script de prueba funcional

Test code generation

Generación Automatica

• Se insertan Timers• Se agregan las mismas Validaciones as que hay

en el Script Selenium • Se Modulariza como en el Script Selenium• Se Parametrizan los datos tal como estaba en el

Selenium Script (data-driven testing)

• Cualquiera de estas tareas lleva menor esfuerzo a nivel de UI que a nivel de protocolo

Empirical Validation: Industrial Use Proyecto SUT # Scripts # VU

Human Resources System

Base de datos AS400, Java Web sobre Websphere

14 317

Production Management System

Base de datos AS400, C# Web sobre Microsoft Internet Information Services

5 55

Courts Management System

Java Web sobre Tomcat con base de datos Oracle

5 144

Auction System Java Web sobre Tomcat con base de datos MySQL

1 2000

Logistics System Java Web sobre Weblogic con base de datos Oracle

9 117

Resultados

• El esfuerzo requerido sin nuestro framework se reduce más de 5 veces – Enfoque Tradicional : 6 a 10 horas por script– Nuestro enfoque: 1 a 5 horas por script

• Flexibilidad– Mantenimiento en enfoque tradicional:

reconstruir los script casi completamente– Nuestro enfoque: ajustar scripts Selenium,

regenerar

Related Work• Generation of performance tests (Web Services)

– García Domínguez et al.: Performance Test Case Generation for Java and WSDL-based Web Services from MARTE. Advances in Internet Technology. 2012.

• Generation of performance tests (Web Systems)– Use Selenium scripts for performance testing

• TestMaker (www.pushtotest.com)• Scaleborn (www.scaleborn.com)

• Generation of performance tests (Web Systems)– De Sousa: Reusing Functional Testing in order to Decrease Performance

and Stress Testing Costs. SEKE 2011.• Generate statically the Selenium scripts to JMeter scripts. They do not consider

the http traffic– Secondary requests, 302, …– Java scripts

Conclusions

• Objetivos buscados para performance testing– Mejorar flexibilidad – Reducir costos

• Trabajo Futuro– Generar para distintos Load Generators• JMeter (jmeter.apache.org)• Considerando diferentes protocolos o tecnologías

Acknowledgement:

(ftoledo@abstracta.com.uy)

(mreina@abstracta.com.uy)

(fbaptista@abstracta.com.uy)

(macario.polo@uclm.es)

(beatriz.plamancha@uclm.es)

Generación de Pruebas de Rendimiento a Partir de Pruebas Funcionales para Sistemas Web

MSc. Federico Toledo

Eng. Matías Reina

Eng. Fabián Baptista

PhD. Macario Polo Usaola

PhD. Beatriz Pérez Lamancha

Gracias¿Preguntas?