Generando scripts OpenSTA con GXtest
Contents |
OpenSTA
OpenSTA es una herramienta open source para hacer testing de performance. Se utiliza para automatizar los casos de prueba en scripts que contienen los pedidos http (o https) que realiza cada caso, y permite modificarlos para realizar distintas acciones (tales como ingresar validaciones, condiciones, parametrizaciones, etc.). En la siguiente figura podemos apreciar el formato de un script de OpenSTA.
Además, el OpenSTA permite montar escenarios de prueba donde se pueden configurar la cantidad de usuarios activos, cantidad de iteraciones, forma en que los usuarios virtuales ingresan al sistema y otras opciones que permiten que la prueba represente un escenario lo más realista posible. En la figura que sigue se muestra un ejemplo de un escenario.
En materia de performance, OpenSTA es una de las mejores herramientas, ya que:
- Permite ingresar un gran número de usuarios virtuales por máquina generadora.
- Permite distribuir la carga de manera sencilla.
- Presenta un modelo para armar la simulación del escenario muy bien orientado a aplicaciones web.
- Presenta gran cantidad de opciones para analizar los resultados tales como: numerosas gráficas, tablas, etc.
- La productividad en desarrollo es mucho mayor una vez que se tiene experiencia con la herramienta.
Por otro lado, una desventaja del OpenSTA es el grabado de casos de prueba. Al grabar los casos de prueba se obtiene un script con los pedidos http que se realizaron. Por lo tanto, a alguien que no conozca la aplicación le va a resultar muy difícil diferenciar cada paso, o identificar que es lo que se hace en cada pedido. Muchas veces, para dejar el script más claro, se ingresan durante la grabación comentarios entre los pasos, o timers que controlen el tiempo de cada paso. Si encima de esto, queremos agregar validaciones o parametrizar variables, vamos a concluir que realizar un script en OpenSTA es una tarea pesada, y puede que resulte engorroso en los proyectos en los que se esté cambiando constantemente el código de la aplicación, lo que hace que se tengan que regenerar los scripts seguido.
Es recomendable para un proyecto de performance que se complementen las mediciones del OpenSTA con herramientas de monitorización de GX, como por ejemplo JMX.
Generando scripts de performance con GXtest
Como mencionábamos en la introducción, GXtest presenta una alternativa que permite superar esta problemática.
Gracias a su nueva funcionalidad, GXtest puede generar scripts de OpenSTA a partir de un caso de prueba previamente grabado. Esto le brinda al tester muchas ventajas, entre ellas:
- Grabar los casos de prueba en GXtest, que permite hacerlo de una forma mucho más práctica con posibilidad de agregar validaciones y otras opciones mencionadas en otros artículos.
- Realizar la parte más pesada del script automáticamente sin necesidad de perder tiempo en hacer tareas repetitivas.
- En caso de que haya un cambio en la aplicación, poder impactar los cambios en GXtest y luego regenerar los scripts de forma fácil, sin necesidad de grabar de nuevo en GXtest.
- No tener que ingresar manualmente validaciones, timers, ni parametrizaciones. Normalmente esto se vuelve una tarea bastante larga y muchas veces presenta problemas. GXtest ingresa todos estos elementos de forma automática.
- Tener los pedidos secundarios (css, gif, jpg, js, etc.) en archivos separados de los primarios. Esto permite tener un script más prolijo, lo que facilita el análisis.
- Tener una bandera de debug que condiciona los pedidos secundarios y mensajes de log.
- Soporta autenticación NTLM.
- Manejo de redirects automático.
¿Cómo funciona el generador?
La generación del script de performance se realiza ejecutando el caso de prueba desde el botón "Generate OpenSTA scripts"
Al ejecutar el pedido para crear un script de OpenSTA, el usuario verá en su pantalla el caso de prueba ejecutándose tal y como se hace normalmente. Sin embargo, internamente se realizan varias acciones distintas: a medida que se va ejecutando el caso de prueba, se crea un archivo xml con todos los comandos de GXtest que se van ejecutando en la prueba. Además, en paralelo se van grabando los pedidos http en un archivo de extensión saz. Estos archivos se dejan dentro de una carpeta con el nombre del caso de prueba, donde está instalado el GXtest Designer, normalmente en: Abstracta\GXtest Designer\Performance\ExecutionLog\.
El formato saz pertenece a la herramienta Fiddler, un proxy que graba el tráfico http(s) entre Internet y la PC para luego poder analizarlo, permitiendo insertar breakpoints, editar los pedidos a nivel de protocolo, etc.
A partir de estos dos archivos (xml y saz) se va generando el script de OpenSTA tomando los comandos de GXtest del xml y los pedidos http(s) del saz, por lo que, una vez finalizada la ejecución, el script tendrá cada comando ejecutado de GXtest asociado a los pedidos http(s) que se hacen en él con sus correspondientes timers y, en caso de que se hayan ingresado, sus correspondientes validaciones. Además, si en el caso de prueba de GXtest se toma algún valor de una variable desde un datapool, ésta quedará parametrizada en el script de OpenSTA. Estos archivos se crean en la carpeta Abstracta\GXtest Designer\Repository.
En general los scripts generados están listos para ejecutarse sin hacer ningún cambio, aunque dependiendo del sistema se le hacen modificaciones para agregar condiciones, variables, validaciones, etc. para que el script se comporte de la forma más real posible.
Instalar OpenSTA
Abstracta realizó correciones de bug sobre la última versión liberada de OpenSTA. Para poder aplicar esas correcciones, es necesario instalar la última versión liberada de OpenSTA con el fix desde aquí. Finalmente, aplicar el parche siguiendo las instrucciones del archivo readme incluido en los archivos descargados.
Resumen
Aquí pueden encontrar un post de nuestro blog en donde hay (entre otras cosas) un video de ejemplo.
GXtest permite crear scripts para hacer pruebas de performance en la herramienta OpenSTA. Generar los scripts a partir de GXtest le permite al tester ahorrar mucho tiempo de trabajo repetitivo, permitiéndole dedicarse a otras tareas para mitigar la mayor cantidad de errores de performance, y así obtener un producto de mayor calidad.