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

22
Generación de Pruebas de Rendimiento a Partir de Pruebas Funcionales para Sistemas Web Federico Toledo ([email protected]) Matías Reina Fabián Baptista Macario Polo Usaola Beatriz Pérez Lamancha

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

Page 1: 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 ([email protected])Matías Reina

Fabián Baptista

Macario Polo Usaola

Beatriz Pérez Lamancha

Page 2: Generación de pruebas de performance a partir de pruebas funcionales para sistemas web
Page 3: Generación de pruebas de performance a partir de pruebas funcionales para sistemas web

Agenda

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

• Propuesta

• Trabajo Relacionado• Conclusiones y trabajo futuro

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

Funcional Testing Automation

• Record and Playback

• User interface level automation

• Selenium

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

Intro a Selenium

Tester / User

SUT: System Under Test

Manual Test Case Execution

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

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!

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

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

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

¿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

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

Performance Test Script

Dependiendo del sistema,

1 linea en Selenium es equivalente a 200

lineas in OpenSTA

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

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

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

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

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

Proposal Overview

Functional Test Scripts

System Under Test

HTTP traffic

Sniffer HTTP

Automatic Test Case Execution

HTTP session

System Under Test Interface

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

Proposal Overview

Functional Test Scripts

Http session

Http session model

Generate

Performance TestScripts

Generate

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

Artefactos del Proceso

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

Meta-model

Relacionado con el Protocolo

Relacionado con el script de prueba funcional

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

Test code generation

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

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

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

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

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

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

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

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

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

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

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

Acknowledgement:

([email protected])

([email protected])

([email protected])

([email protected])

([email protected])

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?