sábado, 20 de octubre de 2018

Pruebas automatizadas de un servidor FTP con JMeter

Apache JMeter es un software de código abierto, diseñado totalmente en JAVA para medir el rendimiento y comportamiento de servidores mediante pruebas. Originalmente se diseñó para probar aplicaciones Web, pero se ha ampliado a otras funciones. Se puede utilizar para probar el rendimiento de bases de datos, servidores FTP y mucho más. Se puede utilizar para simular una carga  en un servidor, la red o un objeto para poner a prueba su resistencia o para analizar el rendimiento global en diferentes tipos de carga. Puede mostrar un análisis gráfico de rendimiento o para probar el comportamiento de diferentes elementos con un gran volumen de carga y concurrencia.
JMeter es una herramienta de test cuyas funcionalidades son:

Diseñar un plan de testeo, esto genera un fichero .jmx. 
Ejecutar el plan.
Ver de distintas formas los resultados de la ejecución del plan.

Para diseñar un plan, JMeter dispone de una interfaz gráfica a modo de diseñador, en la que el testeador puede ir agregando componentes de manera visual, y ejecutar los componentes agregados, viendo el resultado. Una vez finalizado el diseño del plan, la herramienta permite grabarlo como un fichero .jmx.

Antes de nada, instalamos  java.

Instalación de Java


Descargamos Jmeter, lo descomprimimos en una carpeta, por ejemplo C:\jmeter
En C:\JMeter\Bin ejecutamos   jmeter.bat  y se abre la pantalla de inicio de JMeter.

Instalación de JMeter


En Linux

Hacemos 

/etc/jmeter/apache-jmeter/bin/jmeter.sh

Instalar JMeter en Linux

Para crear un plan de pruebas, lo primero será crear usuarios. 

Añadir Usuarios

Sobre Plan de Pruebas con el botón derecho del ratón seleccionamos la opción Añadir -> Hilos (Usuarios) -> Grupo de Hilos.

Usuarios JMeter


En la pantalla que sale podemos configurar los usuarios.

Usuarios JMeter


En este caso modificamos el número de hilos para que tenga 10 hilos. 
Establece el número de veces que debe ejecutar la prueba Por ejemplo, si se utilizan 4 hilos, y el período es de 8 segundos, cada hilo se iniciará 4 (8/4) segundos después de que el hilo anterior comenzó. Otro ejemplo: Si hubiera 20 hilos y un período de 100 segundos, cada hilo se ejecutara durasnte 5 segundos. 
Después configuramos el grupo de hilos para que realicen algún tipo de petición .En este caso vamos a elegir una petición ftp.
En añadir -> Elemento de Configuracion -> Valores por defecto para petición FTP.

Valores por defecto para petición FTP JMeter

Le indicamos la ip del servidor y el archivo a transferir durante las pruebas.

ip del servidor y el archivo a transferir

Muestreador petición FTP JMeter

Una vez añadida la petición nos aparecerá un nuevo elemento a nivel del Grupo de Hilos que hace referencia a una petición web.

petición FTP JMeter

El campo fichero local también se rellena igual que el fichero remoto.

petición FTP JMeter


Ahora necesitamos alguna forma de saber si las peticiones que lanzamos se ejecutan de forma correcta. Para ello usaremos el Receptor el cual se encarga de almacenar los resultados. En este caso usaremos el Reporte de resumen que es el más sencillo.

Reporte de Resumen JMeter

Realizada esta operación nos aparecerá un nuevo elemento.

Reporte de Resumen JMeter Ejecutar Prueba

El icono verde de play del plan de pruebas permite ejecutarlo con los 10 Hilos que hemos creado. Pero antes es necesario guardar el plan de pruebas.

Guardar el Plan de Pruebas

Para guardar el plan de pruebas seleccionamos “Guardar” o “Guardar como, Plan de Pruebas”

Guardar el Plan de Pruebas JMeter

Y le decimos donde guardar el plan de pruebas como archivo .jmx

Reporte resumen JMeter

Ejecución de un plan de pruebas 

Para ejecutar el plan de pruebas, seleccionamos en el menú Lanzar ->-Arrancar, o con el triángulo verde de la barra de botones.

Ejecución de un plan de pruebas JMeter


Detener una prueba

Control + Permite que se termine la ejecución en curso

Otros Elementos de un plan de pruebas

Controllers (Controladores)
Hay dos tipos de controladores:
Samplers (Muestreador). Se utiliza para enviar peticiones a un servidor. Por ejemplo, se debe añadir un muestreador de solicitud FTP, si se desea que JMeter envíe una petición FTP.  
Logical Controllers (Controladores Lógicos). Permiten personalizar la lógica que JMeter utilizará para decidir cuándo enviar las solicitudes.

Controllers (Controladores) JMeter


Samplers (Muestreadores)
Los Muestreadores se utilizan para enviar peticiones a un servidor y esperar una respuesta. Se ejecutan en el orden en que se muestran en el árbol. Los controladores se utilizan para modificar el número de repeticiones de cada muestra. Estos incluyen: 

 Solicitud de FTP
 Solicitud HTTP
 Solicitud de JDBC 
Java Object Request
 Solicitud de LDAP 
 Solicitud SOAP / XML-RPC Solicitud WebService (SOAP) 

Dependiendo del tipo de Servidor será necesario indicar información asociada al servidor: nombre, puertos, rutas, protocolos, etc. Así como el uso que se quiera dar a las respuestas del servidor, que permitirán la generación de gráficas o tablas con los resultados obtenidos de la simulación. 

Logic Controllers (Controladores lógicos)
Permiten personalizar la lógica para decidir cuándo enviar las solicitudes. Es posible modificar el orden de cada solicitud de cada  elemento, establecer condiciones, intervalos o  repeticiones. 

Test Fragments (Fragmentos de prueba)
No se ejecuta a menos que se añada el elemento Include Controller. Su objetivo principal es la reutilización de código dentro de los planes de prueba. 

 Test Fragments (Fragmentos de prueba) JMeter

Listeners (Receptores)
Un Receptor facilita el acceso a la información de JMeter. Escucha los tiempos y proporciona gran cantidad de información de forma gráfica. Muestra los detalles de las solicitudes de todas las respuestas de los servidores en HTML y XML, también envía los datos a un archivo. Cada receptor en JMeter contiene un campo para indicar el archivo que almacenará los datos. También tiene un botón de configuración que permite elegir los campos a guardar, y el formato a utilizar: CSV o XML. Los receptores se pueden añadir en cualquier lugar de la prueba, incluso directamente al inicio. 

 Listeners (Receptores) JMeter


Timers (Temporizadores) 

Timers (Temporizadores) JMeter


Por defecto, un hilo JMeter envía peticiones sin pausa entre cada solicitud, aunque se recomienda especificar un retraso añadiendo uno de los temporizadores del grupo de hilos. Si no se agrega un retraso, JMeter puede saturar el servidor, para agregar más de un temporizador para un grupo de hilos, JMeter coge la suma de los contadores de tiempo y se detiene durante ese tiempo antes de ejecutar las muestras a las que se aplican los temporizadores. Los temporizadores se pueden añadir como hijos de muestras o controladores para restringir las muestras a los que se aplican. 

Assertions (Afirmaciones)
Permiten recibir datos de las respuestas recibidas desde el servidor que se está probando. Usando una afirmación, podemos probar si la aplicación devuelve los resultados esperados. Es posible agregar una afirmación a cualquier muestreador. Por ejemplo, podemos añadir una afirmación a una petición FTP. Si JMeter no puede ejecutar la orden, entonces se marcará como una solicitud con error. 

Assertions (Afirmaciones) JMeter

Configuration Elements (Elementos de configuración)
Trabajan en colaboración con Muestreadores, acceden sólo dentro de la rama de un árbol donde se coloca el elemento. Además, un elemento de configuración dentro de una rama de un árbol tiene mayor prioridad que el mismo elemento en un “padre” rama. 

Configuration Elements (Elementos de configuración) JMeter


Pre-Processor Elements (Pre-procesadores de elementos)
Es una acción previa a una solicitud Sampler que se está realizando. Si está unido a un elemento de muestreo, se ejecutará antes de este elemento. Se utiliza más para modificar la configuración de una solicitud de muestreo justo antes de que se ejecute, o para actualizar las variables que no se extraen.

Pre-Processor Elements (Pre-procesadores de elementos) JMeter


Post-Processor Elements (Post- procesadores de elementos)
Ejecuta acciones después de una solicitud Sampler. Cuando está conectado a un elemento de muestreo, se ejecuta justo después de este elemento. Usualmente  se utiliza para extraer los valores.

Post-Processor Elements (Post- procesadores de elementos) JMeter



No hay comentarios:

Publicar un comentario