Testing de Performance: estresando aplicaciones Genexus CENTRO DE ENSAYOS DE SOFTWARE Federico Toledo Matías Reina
Testing de Performance Performance Velocidad en la cual un sistema de información procesa transacciones (interactivas o no) Requerimiento no funcional del sistema Test de Performance Medir la Performance del sistema Medir atributos de calidad
Por qué hacer testing de performance? Conocer la performance con la que el usuario percibe al sistema Ver si el sistema soporta una determinada carga Detectar los cuellos de botella del sistema Analizar la estabilidad de la aplicación Dimensionar ( sizing ) el sistema Tunear el Hardware o Software de Base Mitigar riesgos de cambios tecnológicos
Por que Testing de performance en aplicaciones GX? Genexus acompaña y facilita los cambios tecnológicos hay que garantizar que la performance va a ser adecuada en la nueva tecnología hay que adaptarse a la nueva plataforma nuevo hardware nuevo software de base
Costo/Beneficio Una prueba de performance implican costos Infraestructura Horas Herramientas Evaluación tardía del sistema Se requieren pruebas previas a nivel funcional Cuanto cuesta no hacerlo?
Etapas de un test Existen metodologías para los test de performance Nosotros tenemos la nuestra Basada en las existentes Adaptada a nuestra realidad En cada etapa Objetivos de la misma Particularidades con aplicaciones GX
Etapas Relevamiento de Requerimientos Preparación Infraestructura
Relevamiento de Requerimientos
Relevamiento de Requerimientos Se relevan datos referentes a cómo se ejecutará el sistema Transacciones a probar Escenarios de Carga Número de usuarios concurrentes Mezcla de las transacciones Tiempos aceptables de respuesta Infraestructura Datos de Prueba GXFlow (donde lo ponemos) Definición de Escenarios Preparación Infraestructura
Que cambia con aplicaciones GX? Se me ocurre que podríamos comentar que es importante conocer el esquema de la BD para poder sacar los datos para los parámetros no? Pero esto también se puede comentar en la parte de Si bien GX permite generar en varios lenguajes es importante acotar el proyecto a una plataforma dada. Hay que definir esta plataforma Definición de Escenarios Preparación Infraestructura
Porque automatizar? Opciones para reproducir 500 usuarios en un escenario determinado 500 usuarios reales Grupo de coordinación 500 PCs 500 guiones 500 usuarios simulados Utilizando herramientas de generación de carga Definición de Escenarios Preparación Infraestructura
- Pasos Completar el guión Grabar script original Generalización Ajustar comportamiento de usuarios Programar captura de errores Realizar Pruebas Definición de Escenarios Preparación Infraestructura
Herramientas de automatización Las herramientas grabación generan un script con las acciones que se realizan sobre la aplicación. Este script podemos utilizarlo para reproducir las operaciones Acciones Pantallas Request (A) Response (A) Request (A) Response (A) Herramienta Definición de Escenarios Preparación Infraestructura
Herramientas-Protocolos Las herramientas trabajan a nivel de protocolo GeneXus genera aplicaciones que se comunican con distintos protocolos Se deben conocer herramientas que permitan realizar pruebas de performance con distintos protocolos
Herramientas-Protocolos Pagas Gratis LoadRunner QALoad SilkPerformer WebLoad OpenSTA JMeter Grinder Java-Corba G/R G/R G/R R RMI G/R G/R G/R R R HTTP/S G/R G/R G/R G/R G/R G/R G/R SOAP G/R G/R G/R R R Remoting G/R G/R G/R R ADO.NET G/R G/R G/R ODBC G/R G/R G/R JDBC G/R G/R G/R R R
Aplicaciones GX Scripts susceptibles a: Nuevas versiones De la aplicación (SUT) Generador de GX Cambios en la BD Parámetros de la aplicación Muchas veces viajan ocultos en el HTML Aplicaciones Web Uso de Ajax Tamaños de post muy grandes Esfuerzo X% del total de horas del proyecto Aplicaciones GUI Conocer la lógica de la aplicación Definición de Escenarios Preparación Infraestructura
Relevamiento de Requerimientos Preparación Infraestructura
Infraestructura? Todo aquello que no es nuestro sistema pero lo necesitamos para ejecutar el test Hardware Software de base Herramientas para el test Generación de carga Monitorización Definición de Escenarios Preparación Infraestructura
Genexus: plataformas soportadas Plataformas de ejecución JAVA, Microsoft.NET, Pocket PC Sistemas Operativos IBM OS/400, LINUX, UNIX, Windows NT/2000/2003 Servers, Windows NT/2000/XP, y Windows Mobile Internet JAVA, ASP.NET, Visual Basic (ASP), HTML, WebServices Bases de Datos IBM DB2, Informix, Microsoft SQL Server, MySQL, Oracle, PostgreSQL Servidores Web Microsoft IIS, Apache, WebSphere, etc.
Estado de la infraestructura Definición de Escenarios Preparación Infraestructura
Herramientas de Monitorización Es importante analizar la infraestructura Permite descubrir las causas Lo que se mide a nivel del cliente son solo los síntomas Definición de Escenarios Preparación Infraestructura
Herramientas de Monitorización NT Performance Windows(NT 4.0 +) Tiene una herramienta de monitorización y API Se puede extender Los productos de Microsoft lo hacen Permite monitorización descentralizada Solo POP NMON Sistemas basados en Unix Muy poco intrusivo Fácil de usar Excelente para reportes Toda la información necesaria sobre el sistema operativo Definición de Escenarios Preparación Infraestructura
Herramientas SNMP JMX hablar todo lo que se quiera de JMX, como activarlo que nos brinda, etc WMI - hablar todo lo que se quiera de WMI, como activarlo que nos brinda, etc Monitor Humano o Testigo Es útil tener un usuario real que interactúe con el sistema en la generación de carga Da una visión subjetiva de los tiempos de respuesta Definición de Escenarios Preparación Infraestructura
Relevamiento de Requerimientos Preparación Infraestructura
Ejecución de las pruebas Pasos Generar la carga Ejecutar los scripts con la herramienta Recrear los escenarios definidos Recolectar y analizar los datos Tomar los datos de los distintos monitores Generar reportes Analizar resultados Realizar correcciones Definición de Escenarios Preparación Infraestructura
Generar carga Con la herramienta de generación, reproducir el escenario ya definido Recordar que la manera en que se ejecuta la generación depende del tipo test a realizar Definición de Escenarios Preparación Infraestructura
Recolectar y analizar datos Es importante contar con todos los datos tanto del lado del cliente como del resto de la infraestructura Prestar atención a los distintos datos El dato más insignificante puede ser la causa de un problema El 20% de los datos nos da el 80% de la información. Definición de Escenarios Preparación Infraestructura
Métricas Usuales Tiempo de respuesta demora entre envío del último bit del pedido y recepción del primer bit de la respuesta Números de usuarios la cantidad de usuarios concurrentes Percentil 90 Valor X tal que los valores menores a este representen el 90% de la muestra Definición de Escenarios Preparación Infraestructura
Realizar correcciones Los incidentes de performance pueden tener dos causas Lógica Infraestructura Solo analizando los datos y lo monitorizado podemos ver donde esta el defecto Definición de Escenarios Preparación Infraestructura
Realizar correcciones Algunos incidentes comunes Bloqueos de tablas Seteos de máquina virtual Algoritmos mal programados Zonas de mutuo exclusión Problemas de perdida de memoria Mal dimensionamiento... Es importante ver donde está el cuello de botella. Definición de Escenarios Preparación Infraestructura
En resumen Transacciones a probar Número de usuarios concurrentes Mezcla de las transacciones Tiempos aceptables de respuesta Infraestructura Base de Datos Determinar guión Grabar script original Generalización Ajustar comportamient o de usuarios Programar captura de errores Hardware Software de base Herramient as para el test Generar la carga Recolectar y analizar los datos Generar reportes Analizar resultados Realizar correcciones
Conclusiones Pruebas de Performance Ventajas importantes en hacer pruebas de performance Valor agregado a las aplicaciones Grandes posibilidades de mejora
Conclusiones Genexus No es sencillo realizar la automatización Se puede hacer con herramientas opensource Ejecución GeneXus brinda buenas posibilidades de monitorización Hay que conocerlas y aprovecharlas
Si están interesados PerfTestPlus http://www.perftestplus.com/pubs.htm Sticky Minds http://www.stickyminds.com Blob de Performance http://www.myloadtest.com/ Herrmientas free http://www.opensourcetesting.org/performance.php http://www.opensta.org