Hacer testing de performance para una excelente experiencia de usuario.
Por Eduardo González / Bruno Mareque
¿Qué es el Testing de Performance?
Es una disciplina que tiene por objetivo evaluar el comportamiento de los sistemas de software frente a diferentes escenarios de actividad. Las aplicaciones se enfrentan a momentos de estrés cuando son usadas de forma intensiva por muchos usuarios al mismo tiempo y pueden llegar a tener problemas si no están preparadas para estas situaciones.
En un proceso de Testing de Performance se automatizan las funcionalidades principales y a través de la ejecución de scripts se simulan diferentes escenarios de actividad sobre el sistema. En paralelo a estas pruebas, se controlan los recursos de la aplicación y su infraestructura, evaluando el comportamiento frente a los diferentes escenarios de carga simulados.
¿Cuál es el principal beneficio de hacer Testing de Performance?
La baja performance de una aplicación tiene un impacto directo en la experiencia de usuario, ya sea porque tarda demasiado tiempo en responder, porque ocurren fallas cuando hay muchos usuarios conectados, incluso puede llegar al punto de colapsar por picos de carga.
El mecanismo más efectivo para detectar estos problemas de forma temprana es a través del Testing de Performance. A partir de estas pruebas se obtiene información sobre las capacidades de la solución y permiten detectar los cuellos de botella existentes, con lo cual se pueden realizar optimizaciones que permitan hacer un uso óptimo de los recursos y anticiparnos a los problemas que puedan surgir en producción.
¿En qué tipo de aplicaciones no pueden faltar las pruebas de performance?
Si bien es importante medir la performance de cualquier aplicación, y es necesario conocer el comportamiento de toda aplicación bajo la actividad real a la que se la someterá, hay algunas que por sus características son aún más críticas desde este punto de vista.
Aplicaciones que son el core de la empresa
Sistemas de misión crítica, como por ejemplo un Core Bancario o un Sistema de Historia Clínica Electrónica, es fundamental que sean probados y que se garantice su desempeño antes de salir en producción, dado que una falla puede tener un gran impacto negativo.
Sistemas que tienen alto procesamiento
Aplicaciones que procesan grandes volúmenes de datos, generalmente a través de procesos batch que ejecutan operaciones de cierre y deben correr en una ventana de tiempo acotada. En estos casos es necesario asegurar que los procesos puedan ser ejecutados en el tiempo establecido, aún cuando la operativa del negocio se incremente a lo largo del tiempo.
Aplicaciones de consumo masivo
Aquellas aplicaciones que son expuestas al mundo y que pueden llegar a ser consumidas de forma masiva después de un lanzamiento al público, como por ejemplo un sistema de e-Commerce. En estos casos, muchas veces no se sabe precisamente la cantidad de usuarios que podrán acceder y a través de las pruebas de performance podemos evaluar cuántos usuarios es capaz de soportar la aplicación en la infraestructura que se encuentra ejecutando.
¿Qué se necesita para realizar Pruebas de Performance?
Definición de escenarios
Todo comienza con algunas reuniones para conocer sobre el sistema a probar y el contexto del mismo. En estas instancias es importante establecer los objetivos de las pruebas de performance, ya que en algunas ocasiones el interés es conocer el rendimiento del sistema bajo una determinada carga de trabajo, en otros casos se desea identificar la mayor carga que podrá soportar el sistema, incluso existen ocasiones donde se realizan las pruebas de performance para dimensionar la infraestructura necesaria para la liberación de un producto.
En esta etapa también se definen los escenarios de carga a simular, los cuales estarán definidos por las funcionalidades más críticas del sistema, que serán automatizadas en la etapa posterior. Como resultado de este relevamiento se presenta un Plan de Pruebas, con la estrategia definida para alcanzar los objetivos.
Ambiente y datos de prueba
Para la automatización de las pruebas de performance se requiere un ambiente de pruebas que no sufra cambios durante el proceso. El mismo debe ser idéntico o lo más parecido posible al de producción. Asimismo se requiere un conjunto de datos para ejecutar las pruebas. Los datos de prueba dependen de los escenarios definidos, ya que se requieren datos para poder completar dichos flujos, pero también dependen del volumen de carga que se desea simular, así como la proyección de crecimiento de la base de datos. En la práctica, estos datos pueden tomarse de una base de datos existente o pueden ser generados a través de scripts de automatización.
Monitoreo del sistema
En el transcurso de las pruebas será necesario controlar los diferentes componentes de la arquitectura para lo cual será necesario contar con acceso a servidores de aplicaciones, base de datos, enlaces y demás elementos de la arquitectura. En esta actividad se controlan distintos indicadores de primer nivel en cada componente y en caso detectarse problemas, se procede a habilitar indicadores de segundo nivel para obtener más información. Muchas empresas ya cuentan con un equipo de infraestructura que realiza este tipo de actividades, en esos casos siempre se trabaja en conjunto para realizar el monitoreo y posteriores ajustes que sean necesarios para mejorar el rendimiento de la aplicación.
¿Cuánto tiempo lleva realizar pruebas de performance?
Por lo general las pruebas de performance requieren un mínimo de 2 o 3 semanas de trabajo, para poder hacer una buena identificación de los escenarios, resolver los aspectos técnicos relacionados a los scripts y contar con tiempo para ejecutar algunos ciclos de prueba. Cuando los sistemas son más complejos, este proceso puede llegar a llevar más de un mes.
En aplicaciones móviles el diseño de los scripts generalmente es más sencillo, ya que se trabaja sobre los pedidos REST que requieren menor esfuerzo de correlación y parametrización. En el caso de aplicaciones Web, el esfuerzo es mayor porque se trabaja a nivel de los pedidos HTTP y es común que estos pedidos tengan gran cantidad de información, dado que la UI de las aplicaciones Web son cada vez más sofisticadas.
Escrito por Eduardo González y Bruno Mareque, integrantes del equipo de Performance de QAlified (área de Test de GeneXus Consulting).
Para comentar debe estar registrado.