Blog

Una vez completada la ejecución de una prueba en modo CLI (non-GUI) hay dos opciones para visualizar los resultados: 1. leer el file de resultados (jtl) usando JMeter en modo GUI y usar complementos (plugins) para graficar los resultados, o 2. producir el reporte HTML. En esta entrada les presento un herramienta (shell script) que les permitirá generar el reporte HTML en forma eficiente, además de…

Keep Reading →

"High Performance Web Sites" para QA y Tester de performance. Comencé a leer por segunda vez "High Performance Web Sites" de Steve Souders. Un libro enfocado en conocimientos esenciales sobre el performance web para ingenieros de software frontend. Pero también me atrevería a decir que este libro es una buena opción para QA y Tester de performance, ya que muchas veces estas mejoras desde el…

Keep Reading →

Bienvenidos a la segunda parte de las funciones nativas de JMeter, espero con esta publicación terminar de describir las funciones que tanto apoyo nos pueden dar al momento de estar resolviendo lógica compleja para nuestras requerimientos de pruebas, sin más por el momento dejo la tabla de funciones que cubriremos en esta publicación: 4. Funciones con lenguajes de programación Este es…

Keep Reading →

En esta entrada abordamos el uso de un temporizador que caracteriza por enviar transacciones en forma muy similar como usuarios reales usan una aplicación. Empezamos revisando los tipos the temporizadores ofrecidos en JMeter. Categorías de Temporizadores JMeter ofrece dos tipos de temporizadores. Una categoría es usada principalmente para insertar pausas (llamado Think Time en Inglés) entre…

Keep Reading →

Decidí dejar la traducción literaria en este caso porque me parece que la idea original sigue intacta. Al contrario en algunas partes le agregue más información que he recabado desde que se publicó este artículo hace casi 1 año. Aquí puedes ver la versión original de la publicación en idioma inglés Hace tiempo, cuando me inicié en JMeter. Pensé que debía de hacer mi propio código para todas las…

Keep Reading →

¿Por qué me debería importar? Para quienes trabajamos con JMeter y con pruebas de performance sabemos de la importancia de agregar validaciones a los HTTP Request principales. Validaciones, assertions, algo que automáticamente te diga si la respuesta está OK o si tiene un error. Si te falta convencimiento con respecto a esta idea, pensemos por un momento que estás recibiendo tiempos de respuesta…

Keep Reading →

¿Qué es Jenkins? Jenkins es un herramienta de integración continua basada en el proyecto open source Hudson, el proyecto Hudson inició en el año 2004 por Sun Microsystems, pero como todos sabemos Oracle Corporation adquirió Sun Microsystems en el año 2010, por lo tanto los derechos de Hudson fueron reclamados por Oracle y en Enero del 2011 se decidió cambiar el nombre a Jenkins, aunque se continua…

Keep Reading →

El Reporte Agregado o Informe Agregado en Jmeter es uno de los listener más usados. En este Post nos centraremos en la comprensión y el análisis de todos los campos que proporciona el Informe agregado. Básicamente, este listener crea una tabla de resultados con una fila para cada muestra por separado y proporciona información sobre "Tiempo promedio", "Valor medio", "Línea del 90%", "Línea del 9…

Keep Reading →

En esta entrada abordamos el tema de usar plantillas (templates) en el proceso de pruebas de carga para APIs. Este blog es, en cierta forma, una continuación de nuestro blog anterior donde proponíamos las ventajas de alterar los script de JMeter externamente y en forma dinámica. Si bien es cierto que esta técnica es compleja, es importante conocerla e incorporarla en su portafolio de herramientas…

Keep Reading →

¿Qué es Elasticsearch? Elasticsearch es un motor de análisis y analítica distribuido y open source para todos los tipos de datos, incluidos textuales, numéricos, geoespaciales, estructurados y desestructurados. Elasticsearch está desarrollado en Apache Lucene y fue presentado por primera vez en 2010 por Elasticsearch N.V. (ahora conocido como Elastic). Conocido por sus API REST simples, naturaleza…

Keep Reading →

¿ Qué es InfluxDB ? InfluxDB es un servicio de base de datos para series de tiempo, el cual es ideal para guardar medidas numéricas y/o resultados en tiempo real. Parte del éxito de InfuxDB es que se encuentra escrito en GoLanguage, esta particularidad es lo hace desempeñarse mucho mejor al resto de bases de datos basadas en series de tiempo (time series DBMS). Podríamos implementar la solución de…

Keep Reading →

Con este artículo damos por concluida la serie de JMeter distribuido, en esta ocasión utilizando contenedores. Existen muchas vertientes de esta modalidad, pues podriamos utilizar una gran variedad de plataformas de administración y orquestación de contenedores basada en Kubernetes como: Amazon Elastic Kubernetes Service (EKS) Azure Kubernetes Service (AKS) Google Kubernetes Engine (GKE) Rancher…

Keep Reading →

En esta entrada planteamos dos opciones como inicializar propiedades en JMeter. Empezamos definiendo que es un propiedad. En JMeter, una propiedad es un valor dinámico que es común a todos los hilos/VUser. Usualmente se utiliza para definir la información especifica al ambiente de ejecución de una prueba. Acceso a las Propiedades es a través de la función __P(). Por ejemplo, la propiedad PropX…

Keep Reading →

Cada vez que entramos por teclado una url y presionamos enter o clicamos directamente un link, estamos enviando un pedido al servidor desde nuestro navegador, el servidor recibe este pedido lo procesa y envía una respuesta de vuelta a nuestro navegador, junto a esta respuesta el servidor también envía un código de estado HTTP, estos pueden no estar visibles, pero si algo falló en esta comunicación…

Keep Reading →

En este artículo vamos a cubrir la ejecución de JMeter dentro de un contenedor utilizando la plataforma Docker, esta publicación es necesaria para entender el último paso de JMeter distribuido utilizando contenedores, de otra forma me quedaría una publicación bastante extensa y prefiero simplificar el contenido. Sin más preámbulos, comencemos. ¿Qué es un Contenedor? Básicamente es un enlatado en…

Keep Reading →

Este articulo sería una ramificación de la publicación anterior en la que hablamos de JMeter distribuido, solo que en está ocasión lo haremos por medio de una red pública. En concreto me apoyaré de los sevicios web de Amazon (AWS) para este ejemplo. Así mismo el controlador será un equipo Linux Ubuntu en lugar de Windows como la versión anterior, además estaremos utilizando la seguridad para el…

Keep Reading →

Una de las funcionalidades más transacendentales en JMeter es la ejecución distribuida, es una modalidad que permite escalar de manera horizontal el número de generadores de carga. Si bien es una modalidad poco conocida, es súmamente útil o efectiva cuando necesitamos ejecutar poco miles de hilos o usuarios virtuales. ¿Porqué es poco conocida? Realmente es poco conocida porque existen empresas…

Keep Reading →

En esta entrada presentamos las mejores prácticas en JMeter propuestas por dos expertos en el mundo de JMeter: Phillipe Mouawad y Antonio Gómes Rodrígues. Ellos son los autores de un libro que, en mi opinión, es uno de los mejores actualmente: Master Apache JMeter From load testing to DevOps. Les recomiendo la versión ebook. He añadido comentarios y ejemplos para ampliar o/y clarificar algunos de…

Keep Reading →

Conocer cómo se encuentra la salud de los servidores es sumamente importante, sobre todo para garantizar que los tiempos de respuesta sean adecuados a los usuarios finales. Un proceso de pruebas de performance no es completado si no incluye una etapa de monitorización de los recursos en los servidores. Existen herramientas que permiten realizar una monitorización de los servidores. Muchas de…

Keep Reading →

En esta entrada discutimos los llamados tres pilares de las pruebas carga. Los tres pilares de las pruebas de rendimiento son: Capacidad de Procesamiento, Tiempo de Respuesta, y Utilización. Estas tres métricas son indispensables para diseñar pruebas de rendimiento efectivas e interpretar correctamente los resultados. Nota: en Inglés pruebas de carga se conoce como Load Testing o LT, que es el…

Keep Reading →

En esta entrada mostramos una aplicación práctica de la técnica presentada en el blog anterior. Nota: en Inglés ritmo de llegada se conoce como pacing, que es el término que vamos usar en este artículo. Empezamos aclarando el concepto que presentamos en el blog anterior: el pacing se aplica a cada uno de los componentes del escenario en forma individual. Por ejemplo, si una sesión/flujo esta…

Keep Reading →

El propósito de esta entrada es describir una técnica para especificar el ritmo de llegada de usuarios a una aplicación en la Web. Nota: en Inglés ritmo de llegada se conoce Pacing, que es el término que vamos a usar en este artículo. ¿Que es Pacing? Pacing es el intervalo de arribo de las visitas a una aplicación de Internet. Pacing representa el número de escenarios de prueba que ocurren en…

Keep Reading →

Errores comunes a evitar en un proceso de pruebas de rendimiento. Las pruebas de rendimiento son un conjunto de pruebas que nos permiten medir la velocidad de ejecución de una serie de tareas en un sistema, bajo unas condiciones determinadas. Estas pruebas pueden ser un enorme desafío para aquellos que dan el salto desde las pruebas manuales e incluso desde las pruebas automatizadas debido al…

Keep Reading →

En una de las publicaciones anteriores tocamos el tema de la anulación de parametros, fue en la parte final de la publicación acerca de como guardar los resultados en formato CSV o XML del archivo JTL. Les coloco nuevamente los parámetros y el ejemplo: Parametros: Ejecución en línea de comandos: ¿Qué son estos parámetros? Bueno, en realidad no son parámetros, son propiedades. JMeter cuenta con dos…

Keep Reading →

Para los que no conocen mi historia, soy oriundo de Load Runner. Es decir que mi carrera de scripter de pruebas de carga comenzó y se desarrolló en su mayoría con esa herramienta. Cuando comencé a trabajar con JMeter me enamoré de sus funcionalidades. Pero sufrí al tratar de generar escenarios un poco más complejos en el modo en el que LoadRunner lo hacía sin mucho problema. Incluso, LoadRunner…

Keep Reading →

Todos hemos oído alguna vez la frase "Si la vida te da limones… has limonada". Motivacionalmente significa que si la vida nos da alguna oportunidad la debemos aprovechar, que todas las cosas que nos aparezcan podemos sacarle su jugo. Lógicamente hablando estamos ante la presencia de una relación donde a implica b, "a→b". Podemos determinar dos variables en esta relación donde ambas pueden tomar…

Keep Reading →

En JMeter, hay funciones muy útiles disponibles para crear planes de prueba flexibles y sostenibles. Las funciones se pueden usar en los campos de Sampler y otros elementos en el árbol de prueba. En este post, presentaremos algunas funciones útiles de JMeter relacionadas con tiempos. Estas solamente se declaran y son automáticamente por el JMeter con el tiempo actual. Muchas veces tenemos que…

Keep Reading →

La mejor opción para ejecutar una prueba de carga en JMeter es a través del modo no gráfico, aunque es mejor conocido como CLI (command line interface) o línea de comandos. Existen dos ficheros principales, la bitácora de JMeter y el archivo de resultados JTL, sin embargo se deben especificar con la opción -l para el JTL y -j para la bitácora. El día de hoy nos concentramos en el archivo JTL o…

Keep Reading →

Durante la ejecución de una prueba de carga por medio de línea de comando, es posible que existan algunos errores. Es factible utilizar el comando tail sobre el archivo de resultados JTL, para tener una idea sobre el código de error o algún dato sobre el mensaje de respuesta. Esta información puede ser ambigua o insuficiente. Por ello cuando se tienen algunas peticiones o transacciones con bajo…

Keep Reading →

Supongamos que tiene que mantener un JMeter script que originalmente fue creado usando la versión 4.0, y que no es compatible con la versión que está instalada en su laptop. Por ejemplo, supongamos que tiene la versión 5.1.1 instalada en su Mac. El siguiente comando, ejecutado en un terminal, muestra la versión instalada: Usualmente, brew sería la utilidad para también instalar la versión 4.…

Keep Reading →

¿Qué es un escenario de prueba? Un escenario de prueba es la representación de uno o más flujos de negocio o flujos críticos que se ejecutarán de forma concurrente sobre la infraestructura objetivo por uno o más usuarios virtuales. Cuando es un solo flujo, este será ejecutado de igual forma para todos los usuarios virtuales, pero cuando se trata de un número mayor de flujos, se deberá generar un…

Keep Reading →

¿Qué es un generador de carga? El generador de carga es un dispositivo que dedica todos sus recursos de forma exclusiva para realizar las tareas de simulación de los usuarios virtuales, este dispositivo debería ser preferentemente un servidor y en el caso particular de JMeter, es recomendable que solo contenga el sistema operativo (Ubuntu por ejemplo), JAVA 1.8+ y JMeter. ¿Por qué el dispositivo…

Keep Reading →

Recientemente publiqué un artículo en la empresa donde trabajo Flood.io acerca de las funciones nativas de JMeter, sin embargo existen otras funciones extendidas que se pueden obtener si instalamos los complementos de JMeter, estas funciones al igual que las nativas, están escritas en lenguaje de programación Java y aquí puedes consultar el código fuente de ambas: Funciones Nativas Funciones…

Keep Reading →

Normalmente un artesano invierte grandes cantidades de tiempo para desarrollar sus habilidades y perfeccionar su técnica, el resultado de esta inversión se ve reflejado en la calidad de su producto. Así mismo un ingeniero de pruebas de software debe invertir una considerable parte de su tiempo para crecer y madurar ciertas habilidades con el objetivo de realizar mejores y más acertadas pruebas. De…

Keep Reading →

Un buen día, su manager, alertado de su amplia experiencia en JMeter, le pide que urgentemente desarrolle varios scripts para testear un sitio de web. Siendo un ingeniero muy sagaz, decide consulta nuestro blog dónde nuestro experto Antonio clarifica que la version más apropiada para JMeter es Java 1.8. Inmediatamente después de verificar que su MacBook tiene instalada la versión Java 11 (que…

Keep Reading →

Quizá, uno de los problemas más comunes en JMeter es el desconocimiento del orden de ejecución, esto es muy recurrente sobre todo al querer obtener resultados concretos por hilo o por grupo de hilos. Primero debemos de entender que JMeter ejecuta el test plan o script de manera secuencial, pero dentro de esta secuencia existe un orden y una jerarquía que es respetada en forma de árbol. El orden…

Keep Reading →

A pesar de que JMeter es una herramienta bastante completa, continúa siendo un proyecto de código abierto y depende de la comunidad ASF (Apache Software Foundation) para mantenerse en constante desarrollo. En marzo del año 2013 fue lanzado el proyecto JMeter Plugins por Andrey Pokhilko, quien en conjunto con esta gran lista de contribuidores han mantenido y aportado de su valioso tiempo para uno…

Keep Reading →

JMeter cuenta con un componente para realizar la grabación del tráfico HTTP y su nombre es HTTP Test Script Recorder, anteriormente conocido como HTTP Proxy server, su funcionalidad es básicamente la de un servidor proxy que captura y redirije las peticiones HTTP o HTTPS tanto al Recording Controller como al servidor destino. ¿Cómo iniciar una grabación? Se tendrían que colocar ciertos componentes…

Keep Reading →

Bienvenidos a la primera entrada del blog, iniciamos con la correcta instalación de la herramienta. En primer lugar debemos entender que JMeter requiere de Java para poder ejecutarse tanto en nuestro equipo local, asi como en nuestro generador de carga, por lo cual es requisito indispensable instalarlo previamente. La versión de Java que se puede instalar para JMeter 5+ es 8 o 9, pero les…

Keep Reading →