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.
6. 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!
7. 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
8. ¿Cómo capturar el tráfico?
Performance
Test Scripts
captura el
trafico HTTP
Tester / User
Ejecución y reportes
SUT: System Under Test
HTTP traffic
Web Server
Manual Test Case
Execution
10. 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
AnalyzeFixEntre el 30% y 50% en
tareas de automatización
11. 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
17. 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
18. 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
19. 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
20. 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
21. 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