18 Introducción

Varios elementos de prueba utilizan las propiedades de JMeter para controlar su comportamiento. Estas propiedades normalmente se resuelven cuando se carga la clase. Esto generalmente ocurre antes de que comience el plan de prueba, por lo que no es posible cambiar la configuración mediante la función __setProperty() .

18.1 Muestreadores

Los muestreadores realizan el trabajo real de JMeter. Cada muestreador (excepto la Acción de control de flujo ) genera uno o más resultados de muestra. Los resultados de la muestra tienen varios atributos (éxito/fallo, tiempo transcurrido, tamaño de datos, etc.) y se pueden ver en varios oyentes.

Petición FTP

Este controlador le permite enviar una solicitud FTP de "recuperación de archivo" o "carga de archivo" a un servidor FTP. Si va a enviar varias solicitudes al mismo servidor FTP, considere usar un elemento de configuración de valores predeterminados de solicitud FTP para que no tenga que ingresar la misma información para cada controlador generativo de solicitud FTP. Al descargar un archivo, se puede almacenar en el disco (Archivo local) o en los Datos de respuesta, o en ambos.

La latencia se establece en el tiempo que lleva iniciar sesión.

Captura de pantalla del panel de control de la solicitud de FTP
Captura de pantalla del panel de control de la solicitud de FTP

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre del servidor o IP
Nombre de dominio o dirección IP del servidor FTP.
Puerto
Puerto a utilizar. Si es >0 , entonces se usa este puerto específico; de lo contrario, JMeter usa el puerto FTP predeterminado.
No
Archivo remoto:
Archivo para recuperar o nombre del archivo de destino para cargar.
Archivo local:
Archivo para cargar o destino para descargas (predeterminado en nombre de archivo remoto).
Sí, si carga (*)
Contenido del archivo local:
Proporciona el contenido para la carga, anula la propiedad Archivo local.
Sí, si carga (*)
obtener (RETR) / poner (STOR)
Ya sea para recuperar o cargar un archivo.
¿Usar el modo binario?
Marque esto para usar el modo binario (ASCII predeterminado)
¿Guardar archivo en respuesta?
Si almacenar el contenido del archivo recuperado en los datos de respuesta. Si el modo es ASCII, entonces el contenido será visible en el Árbol de resultados de vista .
Sí, si descarga
Nombre de usuario
Nombre de usuario de la cuenta FTP.
Normalmente
Clave
Contraseña de la cuenta FTP. NB Esto será visible en el plan de prueba.
Normalmente
^

Solicitud HTTP

Esta muestra le permite enviar una solicitud HTTP/HTTPS a un servidor web. También le permite controlar si JMeter analiza o no los archivos HTML en busca de imágenes y otros recursos incrustados y envía solicitudes HTTP para recuperarlos. Se recuperan los siguientes tipos de recursos incrustados:

  • imágenes
  • subprogramas
  • hojas de estilo (CSS) y recursos a los que se hace referencia desde esos archivos
  • guiones externos
  • marcos, iframes
  • imágenes de fondo (cuerpo, tabla, TD, TR)
  • sonido de fondo

El analizador predeterminado es org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser . Esto se puede cambiar utilizando la propiedad " htmlparser.className "; consulte jmeter.properties para obtener más información.

Si va a enviar varias solicitudes al mismo servidor web, considere usar un elemento de configuración de valores predeterminados de solicitud HTTP para que no tenga que ingresar la misma información para cada solicitud HTTP.

O bien, en lugar de agregar solicitudes HTTP manualmente, es posible que desee utilizar la grabadora de secuencias de comandos de prueba HTTP(S) de JMeter para crearlas. Esto puede ahorrarle tiempo si tiene muchas solicitudes HTTP o solicitudes con muchos parámetros.

Hay tres elementos de prueba diferentes que se utilizan para definir los muestreadores:

Muestreador AJP/1.3
usa el protocolo Tomcat mod_jk (permite probar Tomcat en modo AJP sin necesidad de Apache httpd) El AJP Sampler no admite la carga de múltiples archivos; sólo se utilizará el primer archivo.
Solicitud HTTP
Esto tiene un cuadro desplegable de implementación, que selecciona la implementación del protocolo HTTP que se va a usar:
Java
utiliza la implementación HTTP proporcionada por la JVM. Esto tiene algunas limitaciones en comparación con las implementaciones de HttpClient; consulte a continuación.
Cliente HTTP4
utiliza Apache HttpComponents HttpClient 4.x.
Valor en blanco
no establece la implementación en HTTP Samplers, por lo que se basa en los valores predeterminados de solicitud HTTP si están presentes o en la propiedad jmeter.httpsampler definida en jmeter.properties
Solicitud HTTP de GraphQL
Esta es una variación de la GUI de la solicitud HTTP para proporcionar elementos de la IU más convenientes para ver o editar la consulta GraphQL , las variables y el nombre de la operación , mientras los convierte en argumentos HTTP automáticamente bajo el capó usando la misma muestra. Esto oculta o personaliza los siguientes elementos de la interfaz de usuario, ya que son menos convenientes o irrelevantes para GraphQL a través de solicitudes HTTP/HTTPS:
  • Método : solo los métodos POST y GET están disponibles conforme a la especificación GraphQL sobre HTTP. El método POST está seleccionado de forma predeterminada.
  • Pestañas Parámetros y Cuerpo de la publicación : en su lugar, puede ver o editar el contenido de los parámetros a través de los elementos de la interfaz de usuario Consulta, Variables y Nombre de la operación.
  • Pestaña Carga de archivo : irrelevante para las consultas de GraphQL.
  • Recursos incrustados de la sección Archivos HTML en la pestaña Avanzado: irrelevante en las respuestas GraphQL JSON.

La implementación de Java HTTP tiene algunas limitaciones:

  • No hay control sobre cómo se reutilizan las conexiones. Cuando JMeter libera una conexión, puede o no ser reutilizada por el mismo subproceso.
  • La API se adapta mejor al uso de un solo subproceso: varias configuraciones se definen a través de las propiedades del sistema y, por lo tanto, se aplican a todas las conexiones.
  • Sin soporte de autenticación Kerberos
  • No es compatible con las pruebas de certificados basadas en clientes con Keystore Config.
  • Mejor control del mecanismo de reintento
  • No es compatible con hosts virtuales.
  • Solo admite los siguientes métodos: GET , POST , HEAD , OPTIONS , PUT , DELETE y TRACE
  • Mejor control sobre el almacenamiento en caché de DNS con DNS Cache Manager
Nota: el protocolo FILE está diseñado solo para fines de prueba. Es manejado por el mismo código independientemente de qué HTTP Sampler se use.

Si la solicitud requiere autorización de inicio de sesión de servidor o proxy (es decir, cuando un navegador crearía un cuadro de diálogo emergente), también deberá agregar un elemento de configuración del administrador de autorización HTTP . Para los inicios de sesión normales (es decir, cuando el usuario ingresa la información de inicio de sesión en un formulario), deberá averiguar qué hace el botón de envío del formulario y crear una solicitud HTTP con el método apropiado (generalmente POST ) y los parámetros apropiados de la definición del formulario. . Si la página usa HTTP, puede usar JMeter Proxy para capturar la secuencia de inicio de sesión.

Se utiliza un contexto SSL independiente para cada subproceso. Si desea utilizar un solo contexto SSL (no el comportamiento estándar de los navegadores), configure la propiedad JMeter:

https.sessioncontext.shared=true
De forma predeterminada, desde la versión 5.0, el contexto SSL se conserva durante una iteración de grupo de subprocesos y se restablece para cada iteración de prueba. Si en su plan de prueba el mismo usuario itera varias veces, debe establecerlo en falso.
httpclient.reset_state_on_thread_group_iteration=true
Nota: esto no se aplica a la implementación HTTP de Java.
JMeter tiene por defecto el nivel de protocolo SSL TLS. Si el servidor necesita un nivel diferente, por ejemplo, SSLv3 , cambie la propiedad JMeter, por ejemplo:
https.predeterminado.protocolo=SSLv3

JMeter también permite habilitar protocolos adicionales, cambiando la propiedad https.socket.protocols .

Si la solicitud utiliza cookies, también necesitará un administrador de cookies HTTP . Puede agregar cualquiera de estos elementos al grupo de subprocesos o a la solicitud HTTP. Si tiene más de una solicitud HTTP que necesita autorizaciones o cookies, agregue los elementos al grupo de subprocesos. De esa forma, todos los controladores de solicitudes HTTP compartirán los mismos elementos del Administrador de autorización y el Administrador de cookies.

Si la solicitud utiliza una técnica llamada "Reescritura de URL" para mantener las sesiones, consulte la sección 6.1 Manejo de sesiones de usuario con reescritura de URL para conocer los pasos de configuración adicionales.

Captura de pantalla del panel de control de la solicitud HTTP
Captura de pantalla del panel de control de la solicitud HTTP
Campos de configuración avanzada de solicitud HTTP
Campos de configuración avanzada de solicitud HTTP
Captura de pantalla del panel de control de la solicitud HTTP de GraphQL
Captura de pantalla del panel de control de la solicitud HTTP de GraphQL
Campo de variables para la solicitud HTTP de GraphQL
Campo de variables para la solicitud HTTP de GraphQL

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Servidor
Nombre de dominio o dirección IP del servidor web, por ejemplo, www.example.com . [No incluya el prefijo http:// ]. Nota: si el encabezado " Host " está definido en un Administrador de encabezados, se utilizará como nombre de host virtual.
Se requiere servidor, a menos que:
  • lo proporciona HTTP Request Defaults
  • o se establece una URL completa que incluye esquema, host y puerto ( esquema: // host: puerto ) en el campo Ruta
No
Puerto
Puerto que escucha el servidor web. Predeterminado: 80
No
Tiempo de espera de conexión
El tiempo de conexión expiro. Número de milisegundos de espera para que se abra una conexión.
No
Tiempo de espera de respuesta
Tiempo de espera de respuesta. Número de milisegundos para esperar una respuesta. Tenga en cuenta que esto se aplica a cada espera de una respuesta. Si la respuesta del servidor se envía en varios fragmentos, el tiempo total transcurrido puede ser mayor que el tiempo de espera.

Se puede usar una aserción de duración para detectar respuestas que tardan demasiado en completarse.

No
Servidor (proxy)
Nombre de host o dirección IP de un servidor proxy para realizar la solicitud. [No incluya el prefijo http:// .]
No
Puerto
Puerto que escucha el servidor proxy.
No, a menos que se especifique el nombre de host del proxy
Nombre de usuario
(Opcional) nombre de usuario para el servidor proxy.
No
Clave
(Opcional) contraseña para el servidor proxy. (Nota: esto se almacena sin cifrar en el plan de prueba)
No
Implementación
Java , HTTPClient4 . Si no se especifica (y no está definido por los valores predeterminados de solicitud HTTP), el valor predeterminado depende del valor de la propiedad JMeter jmeter.httpsampler ; en su defecto, se utiliza la implementación HttpClient4.
No
Protocolo
HTTP , HTTPS o ARCHIVO . Predeterminado: HTTP
No
Método
GET , POST , HEAD , TRACE , OPTIONS , PUT , DELETE , PATCH (no compatible con la implementación de JAVA ). Con HttpClient4 , también se permiten los siguientes métodos relacionados con WebDav: COPY , LOCK , MKCOL , MOVE , PROPFIND , PROPPATCH , UNLOCK , REPORT , MKCALENDAR , SEARCH .

Se pueden predefinir más métodos para HttpClient4 mediante el uso de la propiedad httpsampler.user_defined_methods de JMeter .

Codificación de contenido
Codificación de contenido que se utilizará (para POST , PUT , PATCH y FILE ). Esta es la codificación de caracteres que se utilizará y no está relacionada con el encabezado HTTP de codificación de contenido.
No
Redirigir automáticamente
Establece el controlador de protocolo http subyacente para que siga automáticamente los redireccionamientos, de modo que JMeter no los vea y, por lo tanto, no aparezcan como muestras. Solo debe usarse para solicitudes GET y HEAD . El muestreador HttpClient rechazará los intentos de usarlo para POST o PUT .
Advertencia: consulte a continuación para obtener información sobre el manejo de cookies y encabezados.
No
Seguir redireccionamientos
Esto solo tiene algún efecto si " Redireccionar automáticamente " no está habilitado. Si se establece, la muestra de JMeter verificará si la respuesta es una redirección y la seguirá si es así. La redirección inicial y otras respuestas aparecerán como muestras adicionales. La URL y los campos de datos de la muestra principal se tomarán de la muestra final (no redirigida), pero el recuento de bytes principal y el tiempo transcurrido incluyen todas las muestras. La latencia se toma de la respuesta inicial. Tenga en cuenta que la muestra de HttpClient puede registrar el siguiente mensaje:
"Redireccionamiento solicitado pero followRedirects está deshabilitado"
Esto puede ser ignorado.
JMeter colapsará las rutas de la forma ' /../segment ' en las URL de redirección absolutas y relativas. Por ejemplo , http://host/one/../two se colapsará en http://host/two . Si es necesario, este comportamiento se puede suprimir configurando la propiedad JMeter httpsampler.redirect.removeslashdotdot=false
No
Usar KeepAlive
JMeter establece la conexión: encabezado keep-alive . Esto no funciona correctamente con la implementación HTTP predeterminada, ya que la reutilización de la conexión no está bajo el control del usuario. Funciona con las implementaciones de Apache HttpComponents HttpClient.
No
Usar multipart/form-data para HTTP POST
Use una solicitud de publicación multipart/form-data o application/x-www-form-urlencoded
No
Encabezados compatibles con el navegador
Cuando se usa multipart/form-data , esto suprime los encabezados Content-Type y Content-Transfer-Encoding ; solo se envía el encabezado Content-Disposition .
No
Sendero
La ruta al recurso (por ejemplo, /servlets/myServlet ). Si el recurso requiere parámetros de cadena de consulta, agréguelos a continuación en la sección "Enviar parámetros con la solicitud".
Como caso especial, si la ruta comienza con " http:// " o " https:// ", se utiliza como URL completa.
En este caso, los campos de servidor, puerto y protocolo se ignoran; los parámetros también se ignoran para los métodos GET y DELETE . Además, tenga en cuenta que la ruta no está codificada (aparte de reemplazar los espacios con %20 ), por lo que es posible que sea necesario codificar los caracteres no seguros para evitar errores como URISyntaxException .
No
Enviar parámetros con la solicitud
La cadena de consulta se generará a partir de la lista de parámetros que proporcione. Cada parámetro tiene un nombre y un valor , las opciones para codificar el parámetro y una opción para incluir o excluir un signo igual (algunas aplicaciones no esperan un signo igual cuando el valor es la cadena vacía). La cadena de consulta se generará de la manera correcta, dependiendo de la elección del "Método" que haya realizado (es decir, si elige GET o DELETE , la cadena de consulta se agregará a la URL, si POST o PUT, luego se enviará por separado). Además, si envía un archivo mediante un formulario de varias partes, la cadena de consulta se creará utilizando las especificaciones del formulario de varias partes. Consulte a continuación para obtener más información sobre el manejo de parámetros.

Además, puede especificar si cada parámetro debe codificarse como URL. Si no está seguro de lo que esto significa, probablemente sea mejor seleccionarlo. Si sus valores contienen caracteres como los siguientes, generalmente se requiere codificación:

  • Caracteres de control ASCII
  • Caracteres no ASCII
  • Caracteres reservados: las URL usan algunos caracteres para uso especial al definir su sintaxis. Cuando estos caracteres no se utilizan en su función especial dentro de una URL, deben codificarse, por ejemplo: ' $ ', ' & ', ' + ', ' , ' , ' / ', ' : ', ' ; ', ' = ', ' ? ', ' @ '
  • Caracteres no seguros: algunos caracteres presentan la posibilidad de ser malinterpretados dentro de las URL por varias razones. Estos caracteres también deben estar siempre codificados, ejemplo: ' ', ' < ', ' > ', ' # ', ' % ', …
No
Ruta de archivo:
Nombre del archivo a enviar. Si se deja en blanco, JMeter no envía un archivo; si se completa, JMeter envía automáticamente la solicitud como una solicitud de formulario de varias partes.

Si se trata de una solicitud POST , PUT o PATCH y hay un solo archivo cuyo atributo 'Nombre del parámetro' (a continuación) se omite, el archivo se envía como el cuerpo completo de la solicitud, es decir, no se agregan envoltorios. Esto permite enviar cuerpos arbitrarios. Esta funcionalidad está presente para las solicitudes POST y también para las solicitudes PUT . Consulte a continuación para obtener más información sobre el manejo de parámetros.

No
Nombre del parámetro:
Valor del parámetro de solicitud web " nombre ".
No
Tipo de Mimica
Tipo MIME (por ejemplo, text/plain ). Si se trata de una solicitud POST , PUT o PATCH y se omite el atributo ' nombre ' (a continuación) o el cuerpo de la solicitud se construye solo a partir de valores de parámetros, entonces el valor de este campo se usa como el valor de la solicitud de tipo de contenido encabezamiento.
No
Recuperar todos los recursos incrustados de archivos HTML
Dígale a JMeter que analice el archivo HTML y envíe solicitudes HTTP/HTTPS para todas las imágenes, subprogramas Java, archivos JavaScript, CSS, etc. a los que se hace referencia en el archivo. Consulte a continuación para obtener más detalles.
No
¿Guardar respuesta como hash MD5?
Si se selecciona, la respuesta no se almacena en el resultado de la muestra. En su lugar, se calcula y almacena el hash MD5 de 32 caracteres de los datos. Esto está diseñado para probar grandes cantidades de datos.
No
Las URL deben coincidir:
Si está presente, debe ser una expresión regular que se use para comparar con cualquier URL incrustada que se encuentre. Entonces, si solo desea descargar recursos incrustados desde http://example.invalid/ , use la expresión: http://example\.invalid/.*
No
Las URL no deben coincidir:
Si está presente, debe ser una expresión regular que se utilice para filtrar cualquier URL incrustada que se encuentre. Entonces, si no desea descargar archivos PNG o SVG de ninguna fuente, use la expresión: .*\.(?i:svg|png)
No
Usar grupo concurrente
Utilice un conjunto de conexiones simultáneas para obtener recursos incrustados.
No
Tamaño
Tamaño del grupo para conexiones simultáneas utilizadas para obtener recursos incrustados.
No
Tipo de dirección de origen
[Solo para solicitud HTTP con implementación HTTPClient]
Para distinguir el valor de la dirección de origen, seleccione el tipo de estos:
  • Seleccione IP/Nombre de host para usar una dirección IP específica o un nombre de host (local)
  • Seleccione Dispositivo para elegir la primera dirección disponible para esa interfaz, que puede ser IPv4 o IPv6
  • Seleccione Dispositivo IPv4 para seleccionar la dirección IPv4 del nombre del dispositivo (como eth0 , lo , em0 , etc.)
  • Seleccione Dispositivo IPv6 para seleccionar la dirección IPv6 del nombre del dispositivo (como eth0 , lo , em0 , etc.)
No
Campo de dirección de origen
[Solo para solicitud HTTP con implementación de cliente HTTP]
Esta propiedad se usa para habilitar la falsificación de IP. Anula la dirección IP local predeterminada para esta muestra. El host de JMeter debe tener varias direcciones IP (es decir, alias de IP, interfaces de red, dispositivos). El valor puede ser un nombre de host, una dirección IP o un dispositivo de interfaz de red como " eth0 " o " lo " o " wlan0 ".
Si se define la propiedad httpclient.localaddress , se usa para todas las solicitudes de HttpClient.
No

Los siguientes parámetros están disponibles solo para la solicitud HTTP de GraphQL :

Parámetros

Atributo
Descripción
Requerido
Consulta
Declaración de consulta (o mutación) de GraphQL.
Variables
Variables de consulta (o mutación) de GraphQL en una cadena JSON válida. Nota : si la cadena de entrada no es una cadena JSON válida, se ignorará con un registro de ERROR.
No
Nombre de la operación
Nombre de operación de GraphQL opcional al realizar una solicitud de documentos de operaciones múltiples.
No
Cuando se utiliza la redirección automática, las cookies solo se envían para la URL inicial. Esto puede provocar un comportamiento inesperado en los sitios web que redirigen a un servidor local. Por ejemplo, si www.example.com redirige a www.example.co.uk . En este caso, el servidor probablemente devolverá cookies para ambas URL, pero JMeter solo verá las cookies para el último host, es decir, www.example.co.uk . Si la próxima solicitud en el plan de prueba usa www.example.com , en lugar de www.example.co.uk, no obtendrá las cookies correctas. Del mismo modo, los encabezados se envían para la solicitud inicial y no se enviarán para la redirección. Por lo general, esto es solo un problema para los planes de prueba creados manualmente, ya que un plan de prueba creado con una grabadora continuaría desde la URL redirigida.

Manejo de parámetros:
para el método POST y PUT , si no hay ningún archivo para enviar y se omiten los nombres de los parámetros, el cuerpo se crea concatenando todos los valores de los parámetros. Tenga en cuenta que los valores se concatenan sin agregar ningún carácter de final de línea. Estos se pueden agregar usando la función __char() en los campos de valor. Esto permite enviar cuerpos arbitrarios. Los valores se codifican si se establece el indicador de codificación. Consulte también el Tipo MIME anterior sobre cómo puede controlar el encabezado de solicitud de tipo de contenido que se envía.
Para otros métodos, si falta el nombre del parámetro, se ignora el parámetro. Esto permite el uso de parámetros opcionales definidos por variables.


Tiene la opción de cambiar a la pestaña Datos del cuerpo cuando una solicitud solo tiene parámetros sin nombre (o ningún parámetro). Esta opción es útil en los siguientes casos (entre otros):

  • Solicitud HTTP RPC de GWT
  • Solicitud JSON REST HTTP
  • Solicitud HTTP REST XML
  • Solicitud SOAP HTTP
Tenga en cuenta que una vez que abandone el nodo Árbol, no podrá volver a la pestaña de parámetros a menos que borre la pestaña Datos del cuerpo de sus datos.

En el modo de datos del cuerpo , cada línea se enviará con CRLF adjunto, además de la última línea. Para enviar un CRLF después de la última línea de datos, solo asegúrese de que haya una línea vacía a continuación. (Esto no se puede ver, excepto observando si el cursor se puede colocar en la línea siguiente).

Figura 1: solicitud HTTP con un parámetro sin nombre
Figura 1: solicitud HTTP con un parámetro sin nombre
Figura 2 - Diálogo de confirmación para cambiar
Figura 2 - Diálogo de confirmación para cambiar
Figura 3: Solicitud HTTP utilizando datos del cuerpo
Figura 3: Solicitud HTTP utilizando datos del cuerpo

Manejo de métodos:
los métodos de solicitud GET , DELETE , POST , PUT y PATCH funcionan de manera similar, excepto que a partir de la versión 3.1, solo el método POST admite solicitudes de varias partes o carga de archivos. El cuerpo del método PUT y PATCH se debe proporcionar como uno de los siguientes:

  • defina el cuerpo como un archivo con el campo Nombre de parámetro vacío; en cuyo caso se utiliza el tipo MIME como tipo de contenido
  • definir el cuerpo como valor(es) de parámetro sin nombre
  • use la pestaña Datos del cuerpo

Los métodos GET , DELETE y POST tienen una forma adicional de pasar parámetros mediante la pestaña Parámetros . GET , DELETE , PUT y PATCH requieren un tipo de contenido. Si no usa un archivo, adjunte un Administrador de encabezado a la muestra y defina el Tipo de contenido allí.

Respuestas de escaneo JMeter de recursos integrados. Utiliza la propiedad HTTPResponse.parsers , que es una lista de identificadores de analizadores, por ejemplo , htmlParser , cssParser y wmlParser . Para cada identificación encontrada, JMeter verifica dos propiedades más:

  • id.types - una lista de tipos de contenido
  • id.className : el analizador que se usará para extraer los recursos incrustados

Consulte el archivo jmeter.properties para conocer los detalles de la configuración. Si la propiedad HTTPResponse.parser no está configurada, JMeter vuelve al comportamiento anterior, es decir, solo se escanearán las respuestas de texto/html .

Emulando conexiones lentas:

HttpClient4 y Java Sampler admiten la emulación de conexiones lentas; consulte las siguientes entradas en jmeter.properties :

# Definir caracteres por segundo > 0 para emular conexiones lentas
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0
Sin embargo, la muestra de Java solo admite conexiones HTTPS lentas.

Cálculo del tamaño de la respuesta

La implementación de Java no incluye gastos generales de transporte, como encabezados de fragmentos, en el tamaño del cuerpo de la respuesta.
La implementación de HttpClient4 incluye la sobrecarga en el tamaño del cuerpo de la respuesta, por lo que el valor puede ser mayor que la cantidad de bytes en el contenido de la respuesta.

Gestión de reintentos
De forma predeterminada, el reintento se ha establecido en 0 para las implementaciones HttpClient4 y Java, lo que significa que no se intenta ningún reintento.
Para HttpClient4, el recuento de reintentos se puede anular configurando la propiedad JMeter relevante, por ejemplo:

httpclient4.retrycount=3
Con la implementación de HC4, el reintento se realizará en métodos Http idempotentes de forma predeterminada. Si desea volver a intentarlo para todos los métodos, establezca la propiedad
httpclient4.request_sent_retry_enabled=true
Tenga en cuenta que la implementación de Java no vuelve a intentarlo de forma predeterminada, puede cambiar esto configurando
http.java.sampler.retries=3

Nota: los certificados no se ajustan a las restricciones del algoritmo
Es posible que encuentre el siguiente error: java.security.cert.CertificateException: los certificados no se ajustan a las restricciones del algoritmo si ejecuta una solicitud HTTPS en un sitio web con un certificado SSL (él mismo o uno de certificados SSL en su cadena de confianza) con un algoritmo de firma usando MD2 (como md2WithRSAEncryption ) o con un certificado SSL con un tamaño inferior a 1024 bits.

Este error está relacionado con una mayor seguridad en Java 8.

Para permitirle realizar su solicitud HTTPS, puede degradar la seguridad de su instalación de Java editando la propiedad Java jdk.certpath.disabledAlgorithms . Elimina el valor MD2 o la restricción de tamaño, según tu caso.

Esta propiedad está en este archivo:

JAVA_HOME/jre/lib/security/java.security

Consulte el error 56357 para obtener más detalles.

^

Solicitud JDBC

Esta muestra le permite enviar una solicitud JDBC (una consulta SQL) a una base de datos.

Antes de usar esto, debe configurar un elemento de configuración de configuración de conexión JDBC

Si se proporciona la lista de nombres de variables, para cada fila devuelta por una instrucción Select, las variables se configuran con el valor de la columna correspondiente (si se proporciona un nombre de variable) y también se configura el recuento de filas. Por ejemplo, si la instrucción Select devuelve 2 filas de 3 columnas y la lista de variables es A,,C , se configurarán las siguientes variables:

A_#=2 (número de filas)
A_1=columna 1, fila 1
A_2=columna 1, fila 2
C_#=2 (número de filas)
C_1=columna 3, fila 1
C_2=columna 3, fila 2

Si la instrucción Select devuelve cero filas, las variables A_# y C_# se establecerían en 0 y no se establecería ninguna otra variable.

Las variables antiguas se borran si es necesario; por ejemplo, si la primera selección recupera seis filas y una segunda selección devuelve solo tres filas, se eliminarán las variables adicionales para las filas cuatro, cinco y seis.

El tiempo de latencia se establece desde el tiempo que se tardó en adquirir una conexión.
Captura de pantalla del panel de control de la solicitud JDBC
Captura de pantalla del panel de control de la solicitud JDBC

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre de variable del grupo declarado en la configuración de conexión JDBC
Nombre de la variable JMeter a la que está vinculado el grupo de conexiones. Esto debe coincidir con el campo ' Nombre de variable ' de una configuración de conexión JDBC .
Tipo de consulta
Configure esto de acuerdo con el tipo de declaración:
  • Seleccionar estado de cuenta
  • Declaración de actualización: use esto también para inserciones y eliminaciones
  • Estado de cuenta exigible
  • Declaración de selección preparada
  • Declaración de actualización preparada: utilícela también para inserciones y eliminaciones
  • Comprometerse
  • Retroceder
  • Confirmación automática (falso)
  • Confirmación automática (verdadero)
  • Editar: esta debería ser una referencia variable que se evalúe como una de las anteriores
Los tipos Commit , Rollback , Autocommit(false) y Autocommit(true) son especiales, ya que ignoran las instrucciones SQL dadas y solo cambian el estado de la conexión.
Consulta SQL
Consulta SQL.
No ingrese un punto y coma final.
Por lo general, no es necesario usar { y } para encerrar sentencias Callable; sin embargo, pueden usarse si la base de datos usa una sintaxis no estándar.
El controlador JDBC convierte automáticamente la declaración si es necesario cuando se incluye entre {} .
Por ejemplo:
  • seleccione * de t_clientes donde id = 23
  • LLAME A SYSCS_UTIL.SYSCS_EXPORT_TABLE (nulo, ?, ?, nulo, nulo, nulo)
    • Valores de parámetro: nombre de tabla , nombre de archivo
    • Tipos de parámetros: VARCHAR , VARCHAR
El segundo ejemplo asume que está utilizando Apache Derby.
Valores paramétricos
Lista de valores de parámetros separados por comas. Use ]NULL[ para indicar un parámetro NULL . (Si es necesario, la cadena nula se puede cambiar definiendo la propiedad " jdbcsampler.nullmarker ".)
La lista debe estar entre comillas dobles si alguno de los valores contiene una coma o comillas dobles, y cualquier comilla doble incrustada debe duplicarse, por ejemplo:
"Dbl-Quote: "" y Coma: ,"
Debe haber tantos valores como marcadores de posición en la declaración, incluso si sus parámetros son OUT . Asegúrese de establecer un valor incluso si el valor no se utilizará (por ejemplo, en un CallableStatement).
Sí, si una declaración preparada o invocable tiene parámetros
Tipos de parámetros
Lista separada por comas de tipos de parámetros SQL (por ejemplo , INTEGER , DATE , VARCHAR , DOUBLE ) o valores enteros de constantes. Esos valores enteros se pueden usar cuando usa tipos de base de datos personalizados propuestos por el controlador (por ejemplo , OracleTypes.CURSOR podría representarse por su valor entero -10 ).
Estos se definen como campos en la clase java.sql.Types , consulte por ejemplo:
Javadoc para java.sql.Types .
Nota: JMeter utilizará los tipos definidos por la JVM en tiempo de ejecución, por lo que si está ejecutando en una JVM diferente, asegúrese de consultar la documentación correspondiente.
Si la declaración invocable tiene parámetros INOUT o OUT , estos deben indicarse anteponiendo los tipos de parámetros apropiados, por ejemplo, en lugar de " INTEGER ", use " INOUT INTEGER ".
Si no se especifica, se asume " EN ", es decir, " FECHA " es lo mismo que " EN FECHA ".
Si el tipo no es uno de los campos que se encuentran en java.sql.Types , JMeter también acepta el número entero correspondiente, por ejemplo, dado que OracleTypes.CURSOR == -10 , puede usar " INOUT -10 ".
Debe haber tantos tipos como marcadores de posición en la instrucción.
Sí, si una declaración preparada o invocable tiene parámetros
Nombres de variables
Lista separada por comas de nombres de variables para contener los valores devueltos por declaraciones Select, declaraciones Select preparadas o CallableStatement. Tenga en cuenta que cuando se usa con CallableStatement, la lista de variables debe estar en la misma secuencia que los parámetros OUT devueltos por la llamada. Si hay menos nombres de variables que parámetros OUT , solo se almacenarán tantos resultados en las variables de contexto del subproceso como nombres de variables se proporcionaron. Si existen más nombres de variables que parámetros OUT , las variables adicionales se ignorarán
No
Nombre de la variable de resultado
Si se especifica, esto creará una variable de objeto que contiene una lista de mapas de filas. Cada mapa contiene el nombre de la columna como clave y los datos de la columna como valor. Uso:
columnValue = vars.getObject("resultObject").get(0).get("Nombre de columna");
No
Tiempo de espera de consulta
Establezca un tiempo de espera en segundos para la consulta, el valor vacío significa 0, que es infinito. -1 significa que no establezca ningún tiempo de espera de consulta que pueda ser necesario para el caso de uso o cuando ciertos controladores no admiten el tiempo de espera. El valor predeterminado es 0.
No
Limitar conjunto de resultados
Limita el número de filas para iterar a través del ResultSet. El valor vacío significa -1 , por ejemplo, sin limitación, que también es el valor predeterminado. Esto puede ayudar a reducir la cantidad de datos que se obtendrán de la base de datos a través del controlador JDBC, pero afecta todas las opciones posibles de Manejar ResultSet respectivamente, por ejemplo, ResultSet incompleto y un recuento de registros ≤ el límite.
No
Manejar conjunto de resultados
Define cómo se manejará el ResultSet devuelto por sentencias invocables:
  • Almacenar como cadena (predeterminado): todas las variables en la lista Nombres de variables se almacenan como cadenas, no iterarán a través de un ResultSet cuando esté presente en la lista. Los CLOB se convertirán en cadenas. Los BLOB se convertirán en cadenas como si fueran una matriz de bytes codificada en UTF-8. Tanto CLOB como BLOB se cortarán después de jdbcsampler.max_retain_result_size bytes.
  • Almacenar como objeto : las variables de tipo ResultSet en la lista de nombres de variables se almacenarán como objetos y se podrá acceder a ellas en pruebas/secuencias de comandos subsiguientes e iterar, no iterar a través del ResultSet . Los CLOB se manejarán como si se hubiera seleccionado Almacenar como cadena . Los BLOB se almacenarán como una matriz de bytes. Tanto los CLOB como los BLOB se cortarán después de jdbcsampler.max_retain_result_size bytes.
  • Recuento de registros : las variables de los tipos de conjunto de resultados se repetirán mostrando el recuento de registros como resultado. Las variables se almacenarán como cadenas. Para BLOB s, se almacenará el tamaño del objeto.
No
Las versiones actuales de JMeter utilizan UTF-8 como codificación de caracteres. Anteriormente se usaba el valor predeterminado de la plataforma.
Asegúrese de que el nombre de la variable sea único en todo el plan de prueba.
^

Solicitud Java

Esta muestra le permite controlar una clase Java que implementa la interfaz org.apache.jmeter.protocol.java.sampler.JavaSamplerClient . Al escribir su propia implementación de esta interfaz, puede usar JMeter para aprovechar múltiples subprocesos, controlar parámetros de entrada y recopilar datos.

El menú desplegable proporciona la lista de todas las implementaciones encontradas por JMeter en su classpath. Luego, los parámetros se pueden especificar en la tabla a continuación, según lo definido por su implementación. Se proporcionan dos ejemplos simples ( JavaTest y SleepTest ).

La muestra de ejemplo de JavaTest puede ser útil para comprobar los planes de prueba, ya que permite establecer valores en casi todos los campos. Estos pueden ser utilizados por Aserciones, etc. Los campos permiten el uso de variables, por lo que los valores de estos pueden verse fácilmente.

Captura de pantalla para el panel de control de la solicitud de Java
Captura de pantalla del panel de control de Java Request
Si una subclase de AbstractJavaSamplerClient no invalida el método teardownTest , no se llamará a su método teardownTest . Esto reduce los requisitos de memoria de JMeter. Esto no tendrá ningún impacto en los planes de prueba existentes.
Los botones Agregar/Eliminar no sirven para nada en este momento.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre de la clase
La implementación específica de la interfaz JavaSamplerClient que se va a muestrear.
Enviar parámetros con solicitud
Una lista de argumentos que se pasarán a la clase muestreada. Todos los argumentos se envían como cadenas. Consulte a continuación para conocer los ajustes específicos.
No

Los siguientes parámetros se aplican a las implementaciones de SleepTest y JavaTest :

Parámetros

Atributo
Descripción
Requerido
Hora de dormir
Cuánto tiempo dormir (ms)
antifaz para dormir
Cuánta "aleatoriedad" agregar:
el tiempo de sueño se calcula de la siguiente manera:
totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)

Los siguientes parámetros se aplican adicionalmente a la implementación de JavaTest :

Parámetros

Atributo
Descripción
Requerido
Etiqueta
La etiqueta a utilizar. Si se proporciona, anula Nombre
No
Código de respuesta
Si se proporciona, establece el código de respuesta de SampleResult.
No
mensaje de respuesta
Si se proporciona, establece SampleResult ResponseMessage.
No
Estado
Si se proporciona, establece el estado de SampleResult. Si esto es igual a " OK " (ignorando mayúsculas y minúsculas), el estado se establece en éxito; de lo contrario, la muestra se marca como fallida.
No
SamplerData
Si se proporciona, establece SampleResult SamplerData.
No
ResultData
Si se proporciona, establece SampleResult ResultData.
No
^

Solicitud LDAP

Esta muestra le permite enviar una solicitud LDAP diferente ( Agregar , Modificar , Eliminar y Buscar ) a un servidor LDAP.

Si va a enviar varias solicitudes al mismo servidor LDAP, considere usar un elemento de configuración de valores predeterminados de solicitud LDAP para que no tenga que ingresar la misma información para cada solicitud LDAP.

De la misma manera, el Elemento de configuración de inicio de sesión también se usa para el inicio de sesión y la contraseña.
Captura de pantalla del panel de control de la solicitud LDAP
Captura de pantalla del panel de control de la solicitud LDAP

Hay dos formas de crear casos de prueba para probar un servidor LDAP.

  1. Casos de prueba incorporados.
  2. Casos de prueba definidos por el usuario.

Hay cuatro escenarios de prueba para probar LDAP. Las pruebas se dan a continuación:

  1. Agregar prueba
    1. Prueba incorporada:

      Esto agregará una entrada predefinida en el servidor LDAP y calculará el tiempo de ejecución. Después de la ejecución de la prueba, la entrada creada se eliminará del servidor LDAP.

    2. Prueba definida por el usuario:

      Esto agregará la entrada en el servidor LDAP. El usuario debe ingresar todos los atributos en la tabla. Las entradas se recopilan de la tabla para agregar. Se calcula el tiempo de ejecución. La entrada creada no se eliminará después de la prueba.

  2. Modificar prueba
    1. Prueba incorporada:

      Esto creará primero una entrada predefinida, luego modificará la entrada creada en el servidor LDAP. Y calculará el tiempo de ejecución. Después de la ejecución de la prueba, la entrada creada se eliminará del servidor LDAP.

    2. Prueba definida por el usuario:

      Esto modificará la entrada en el servidor LDAP. El usuario debe ingresar todos los atributos en la tabla. Las entradas se recopilan de la tabla para modificar. Se calcula el tiempo de ejecución. La entrada no se eliminará del servidor LDAP.

  3. Prueba de búsqueda
    1. Prueba incorporada:

      Esto creará la entrada primero, luego buscará si los atributos están disponibles. Calcula el tiempo de ejecución de la consulta de búsqueda. Al final de la ejecución, la entrada creada se eliminará del servidor LDAP.

    2. Prueba definida por el usuario:

      Esto buscará la entrada definida por el usuario (filtro de búsqueda) en la base de búsqueda (nuevamente, definida por el usuario). Las entradas deben estar disponibles en el servidor LDAP. Se calcula el tiempo de ejecución.

  4. Eliminar prueba
    1. Prueba incorporada:

      Esto creará primero una entrada predefinida y luego se eliminará del servidor LDAP. Se calcula el tiempo de ejecución.

    2. Prueba definida por el usuario:

      Esto eliminará la entrada definida por el usuario en el servidor LDAP. Las entradas deben estar disponibles en el servidor LDAP. Se calcula el tiempo de ejecución.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre del servidor o IP
Nombre de dominio o dirección IP del servidor LDAP. JMeter asume que el servidor LDAP está escuchando en el puerto predeterminado ( 389 ).
Puerto
Puerto al que conectarse (el valor predeterminado es 389 ).
DN raíz
DN base para usar en operaciones LDAP
Nombre de usuario
Nombre de usuario del servidor LDAP.
Normalmente
Clave
Contraseña del servidor LDAP. (Nota: esto se almacena sin cifrar en el plan de prueba)
Normalmente
DN de entrada
el nombre del contexto a crear o Modificar; no puede estar vacío.
Tienes que establecer los atributos correctos del objeto tú mismo. Entonces, si desea agregar cn = apache, ou = test , debe agregar el nombre de la tabla y el valor a cn y apache .
Sí, si se selecciona Prueba definida por el usuario y Agregar prueba o Modificar prueba
Borrar
el nombre del contexto a Eliminar; puede que no esté vacío
Sí, si se selecciona Prueba definida por el usuario y Eliminar prueba
Base de búsqueda
el nombre del contexto u objeto a buscar
Sí, si se selecciona Prueba definida por el usuario y Prueba de búsqueda
Filtro de búsqueda
la expresión de filtro a usar para la búsqueda; puede no ser nulo
Sí, si se selecciona Prueba definida por el usuario y Prueba de búsqueda
agregar prueba
Use estos pares de nombre y valor para la creación del nuevo objeto en el contexto dado
Sí, si se selecciona Prueba definida por el usuario y agregar prueba
modificar prueba
Use estos pares de nombre y valor para modificar el objeto de contexto dado
Sí, si se selecciona Prueba definida por el usuario y Modificar prueba
^

Solicitud extendida LDAP

Este Sampler puede enviar las 8 solicitudes LDAP diferentes a un servidor LDAP. Es una versión extendida de la muestra LDAP, por lo tanto, es más difícil de configurar, pero se puede hacer mucho más parecido a una sesión LDAP real.

Si va a enviar varias solicitudes al mismo servidor LDAP, considere usar un elemento de configuración predeterminado de solicitud extendida de LDAP para que no tenga que ingresar la misma información para cada solicitud LDAP.

Captura de pantalla del panel de control de la solicitud extendida de LDAP
Captura de pantalla del panel de control de la solicitud extendida de LDAP

Hay nueve operaciones de prueba definidas. Estas operaciones se dan a continuación:

Enlace de hilo

Cualquier solicitud LDAP es parte de una sesión LDAP, por lo que lo primero que se debe hacer es iniciar una sesión en el servidor LDAP. Para iniciar esta sesión se utiliza un enlace de subprocesos, que es igual a la operación " bind " de LDAP. Se solicita al usuario que proporcione un nombre de usuario (Nombre distinguido) y una contraseña , que se utilizará para iniciar una sesión. Cuando no se especifica ninguna contraseña o se especifica una contraseña incorrecta, se inicia una sesión anónima. Tenga cuidado, omitir la contraseña no fallará esta prueba, una contraseña incorrecta sí lo hará. (Nota: esto se almacena sin cifrar en el plan de prueba)

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre del servidor
El nombre (o dirección IP) del servidor LDAP.
Puerto
El número de puerto que escucha el servidor LDAP. Si esto se omite, JMeter asume que el servidor LDAP está escuchando en el puerto predeterminado (389).
No
DN
El nombre distinguido del objeto base que se usará para cualquier operación posterior. Se puede utilizar como punto de partida para todas las operaciones. ¡No puede iniciar ninguna operación en un nivel superior a este DN!
No
Nombre de usuario
Nombre distinguido completo del usuario con el que desea enlazar.
No
Clave
Contraseña para el usuario anterior. Si se omite, dará como resultado un enlace anónimo. Si es incorrecto, el muestreador devolverá un error y volverá a un enlace anónimo. (Nota: esto se almacena sin cifrar en el plan de prueba)
No
Tiempo de espera de conexión (en milisegundos)
Tiempo de espera para la conexión, si se excede la conexión será abortada
No
Usar protocolo LDAP seguro
Utilice el esquema ldaps:// en lugar de ldap://
No
Confiar en todos los certificados
Confiar en todos los certificados, solo se usa si se marca Usar protocolo LDAP seguro
No
Desvincular hilo

Esta es simplemente la operación para finalizar una sesión. Es igual a la operación " desvincular " de LDAP.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Enlace/desenlace simple

Esta es una combinación de las operaciones LDAP " bind " y " unbind ". Se puede utilizar para una solicitud de autenticación/verificación de contraseña para cualquier usuario. Abrirá una nueva sesión, solo para verificar la validez de la combinación usuario/contraseña, y finalizará la sesión nuevamente.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre de usuario
Nombre distinguido completo del usuario con el que desea enlazar.
Clave
Contraseña para el usuario anterior. Si se omite, dará como resultado un enlace anónimo. Si es incorrecto, el muestreador devolverá un error. (Nota: esto se almacena sin cifrar en el plan de prueba)
No
Cambiar nombre de entrada

Esta es la operación " moddn " de LDAP. Puede usarse para cambiar el nombre de una entrada, pero también para mover una entrada o un subárbol completo a un lugar diferente en el árbol LDAP.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre de la entrada anterior
El nombre distinguido actual del objeto que desea cambiar de nombre o mover, en relación con el DN dado en la operación de vinculación de subprocesos.
Nuevo nombre distinguido
El nuevo nombre distinguido del objeto que desea cambiar de nombre o mover, en relación con el DN dado en la operación de vinculación de subprocesos.
Agregar prueba

Esta es la operación " añadir " de LDAP . Se puede usar para agregar cualquier tipo de objeto al servidor LDAP.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
DN de entrada
Nombre distinguido del objeto que desea agregar, en relación con el DN dado en la operación de vinculación de subprocesos.
Agregar prueba
Una lista de atributos y sus valores que desea utilizar para el objeto. Si necesita agregar un atributo de valor múltiple, debe agregar el mismo atributo con sus respectivos valores varias veces a la lista.
Eliminar prueba

Esta es la operación de " eliminación " de LDAP, se puede usar para eliminar un objeto del árbol LDAP

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Borrar
Nombre distinguido del objeto que desea eliminar, en relación con el DN dado en la operación de vinculación de subprocesos.
Prueba de búsqueda

Esta es la operación de " búsqueda " de LDAP y se utilizará para definir búsquedas.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Base de búsqueda
Nombre distinguido del subárbol en el que desea que busque su búsqueda, en relación con el DN dado en la operación de vinculación de subprocesos.
No
Filtro de búsqueda
searchfilter, debe especificarse en la sintaxis LDAP.
Alcance
Use 0 para baseobject-, 1 para onelevel- y 2 para una búsqueda de subárbol. (Predeterminado= 0 )
No
Límite de tamaño
Especifique el número máximo de resultados que desea recibir del servidor. (predeterminado = 0 , lo que significa que no hay límite). Cuando la muestra alcanza el número máximo de resultados, fallará con el código de error 4
No
Límite de tiempo
Especifique la cantidad máxima de tiempo (cpu) (en milisegundos) que el servidor puede dedicar a su búsqueda. Ojo, esto no dice nada sobre el tiempo de respuesta. (el valor predeterminado es 0 , lo que significa que no hay límite)
No
Atributos
Especifique los atributos que desea que se devuelvan, separados por un punto y coma. Un campo vacío devolverá todos los atributos
No
Objeto devuelto
Si el objeto se devolverá ( verdadero ) o no ( falso ). Predeterminado = falso
No
Alias ​​de desreferencia
Si es verdadero , eliminará la referencia a los alias, si es falso , no los seguirá (predeterminado = falso )
No
¿Analizar los resultados de la búsqueda?
Si es verdadero , los resultados de la búsqueda se agregarán a los datos de respuesta. Si es false , se agregará un marcador, ya sea que se encuentren resultados o no, a los datos de respuesta.
No
Prueba de modificación

Esta es la operación de " modificación " de LDAP . Se puede utilizar para modificar un objeto. Se puede usar para agregar, eliminar o reemplazar valores de un atributo.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Nombre de la entrada
Nombre distinguido del objeto que desea modificar, en relación con el DN dado en la operación de vinculación de subprocesos
Prueba de modificación
El atributo-valor-opCode se triplica.
El código de operación puede ser cualquier código de operación LDAP válido ( agregar , eliminar , eliminar o reemplazar ).
Si no especifica un valor con una operación de eliminación , se eliminarán todos los valores del atributo dado.
Si especifica un valor en una operación de eliminación , solo se eliminará el valor dado.
Si este valor no existe, el muestreador fallará la prueba.
Comparar

Esta es la operación de " comparación " de LDAP . Puede usarse para comparar el valor de un atributo dado con algún valor ya conocido. En realidad, esto se usa principalmente para verificar si una persona determinada es miembro de algún grupo. En tal caso, puede comparar el DN del usuario como un valor dado, con los valores en el atributo " miembro " de un objeto del tipo groupOfNames . Si la operación de comparación falla, esta prueba falla con el código de error 49 .

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
DN de entrada
El nombre distinguido actual del objeto del que desea comparar un atributo, en relación con el DN dado en la operación de vinculación de subprocesos.
Comparar filtro
En la forma " atributo=valor "
^

Muestra de registro de acceso

AccessLogSampler fue diseñado para leer registros de acceso y generar solicitudes http. Para aquellos que no estén familiarizados con el registro de acceso, es el registro que el servidor web mantiene de cada solicitud que acepta. Esto significa cada imagen, archivo CSS, archivo JavaScript, archivo html,...

Tomcat usa el formato común para los registros de acceso. Esto significa que cualquier servidor web que use el formato de registro común puede usar AccessLogSampler. Los servidores que usan un formato de registro común incluyen: Tomcat, Resin, Weblogic y SunOne. El formato de registro común se ve así:

127.0.0.1 - - [21/oct/2003:05:37:21 -0500] "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343
La implementación actual del analizador solo analiza el texto entre comillas que contiene uno de los métodos del protocolo HTTP ( GET , PUT , POST , DELETE , ...). Todo lo demás se elimina y se ignora. Por ejemplo, el analizador ignora por completo el código de respuesta.

Para el futuro, sería bueno filtrar las entradas que no tienen un código de respuesta de 200 . Extender la muestra debería ser bastante simple. Hay dos interfaces que tienes que implementar:

  • org.apache.jmeter.protocol.http.util.accesslog.LogParser
  • org.apache.jmeter.protocol.http.util.accesslog.Generator

La implementación actual de AccessLogSampler usa el generador para crear un nuevo HTTPSampler. AccessLogSampler establece el nombre del servidor, el puerto y las imágenes obtenidas. A continuación, se llama al analizador con el número entero 1 , diciéndole que analice una entrada. Después de eso, se llama a HTTPSampler.sample() para realizar la solicitud.

muestra = (HTTPSampler) GENERADOR.generateRequest();
muestra.setDomain(this.getDomain());
muestra.setPort(this.getPort());
muestra.setImageParser(this.isImageParser());
PARSER.parse(1);
res = muestra.muestra();
res.setSampleLabel(muestra.toString());
Los métodos requeridos en LogParser son:
  • setGenerator(Generador)
  • analizar (int)

Las clases que implementan la interfaz de Generator deben proporcionar una implementación concreta para todos los métodos. Para ver un ejemplo de cómo implementar cualquiera de las interfaces, consulte StandardGenerator y TCLogParser .

Captura de pantalla para Panel de control de Access Log Sampler
Captura de pantalla del panel de control de Access Log Sampler

(Código Beta)

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Servidor
Nombre de dominio o dirección IP del servidor web.
Protocolo
Esquema
No (predeterminado en http
Puerto
Puerto que escucha el servidor web.
No (predeterminado en 80)
Clase de analizador de registro
La clase de analizador de registros es responsable de analizar los registros.
Sí (proporcionado por defecto)
Filtrar
La clase de filtro se utiliza para filtrar ciertas líneas.
No
Ubicación del archivo de registro
La ubicación del archivo de registro de acceso.

El TCLogParser procesa el registro de acceso de forma independiente para cada subproceso. SharedTCLogParser y OrderPreservingLogParser comparten el acceso al archivo, es decir, cada subproceso obtiene la siguiente entrada en el registro.

El SessionFilter está diseñado para manejar cookies a través de subprocesos. No filtra ninguna entrada, pero modifica el administrador de cookies para que las cookies para una IP dada sean procesadas por un solo hilo a la vez. Si dos subprocesos intentan procesar muestras desde la misma dirección IP del cliente, uno se verá obligado a esperar hasta que el otro haya finalizado.

LogFilter está diseñado para permitir que las entradas del registro de acceso se filtren por nombre de archivo y expresión regular, así como para permitir el reemplazo de extensiones de archivo. Sin embargo, actualmente no es posible configurar esto a través de la GUI, por lo que realmente no se puede usar.

^

Muestreador BeanShell

Esta muestra le permite escribir una muestra utilizando el lenguaje de secuencias de comandos BeanShell.

Para obtener detalles completos sobre el uso de BeanShell, consulte el sitio web de BeanShell.

Se recomienda encarecidamente la migración a JSR223 Sampler + Groovy por motivos de rendimiento, compatibilidad con nuevas funciones de Java y mantenimiento limitado de la biblioteca BeanShell.

El elemento de prueba admite los métodos de interfaz ThreadListener y TestListener . Estos deben definirse en el archivo de inicialización. Consulte el archivo BeanShellListeners.bshrc para ver definiciones de ejemplo.

El muestreador BeanShell también es compatible con la interfaz interrumpible . El método interrupt() se puede definir en el script o en el archivo de inicio.

Captura de pantalla para Panel de control de BeanShell Sampler
Captura de pantalla del panel de control de BeanShell Sampler

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol. El nombre se almacena en la variable de script Label
No
Restablecer bsh.Interpreter antes de cada llamada
Si se selecciona esta opción, el intérprete se recreará para cada muestra. Esto puede ser necesario para algunos scripts de ejecución prolongada. Para obtener más información, consulte Prácticas recomendadas: secuencias de comandos BeanShell .
Parámetros
Parámetros para pasar al script BeanShell. Esto está diseñado para usarse con archivos de script; para las secuencias de comandos definidas en la GUI, puede usar las referencias de variables y funciones que necesite dentro de la secuencia de comandos. Los parámetros se almacenan en las siguientes variables:
Parámetros
cadena que contiene los parámetros como una sola variable
bsh.args
Matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script BeanShell para ejecutar. El nombre del archivo se almacena en la variable de script FileName
No
Guion
El script BeanShell a ejecutar. El valor devuelto (si no es nulo ) se almacena como el resultado de la muestra.
Sí (a menos que se proporcione un archivo de script)
NB Cada instancia de Sampler tiene su propio intérprete BeanShell, y los Samplers solo se llaman desde un solo hilo

Si se define la propiedad " beanshell.sampler.init ", se pasa al intérprete como el nombre de un archivo fuente. Esto se puede utilizar para definir métodos y variables comunes. Hay un archivo de inicio de muestra en el directorio bin: BeanShellSampler.bshrc .

Si se proporciona un archivo de secuencia de comandos, se utilizará, de lo contrario, se utilizará la secuencia de comandos.

JMeter procesa las referencias a funciones y variables antes de pasar el campo de script al intérprete, por lo que las referencias solo se resolverán una vez. Las referencias a variables y funciones en los archivos de script se pasarán textualmente al intérprete, lo que probablemente cause un error de sintaxis. Para utilizar variables de tiempo de ejecución, utilice los métodos props apropiados, por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
BeanShell actualmente no es compatible con la sintaxis de Java 5, como los genéricos y el bucle for mejorado.

Antes de invocar el script, se configuran algunas variables en el intérprete BeanShell:

El contenido del campo Parámetros se pone en la variable " Parámetros ". La cadena también se divide en tokens separados utilizando un solo espacio como separador, y la lista resultante se almacena en la matriz de cadenas bsh.args .

La lista completa de variables BeanShell configuradas es la siguiente:

  • registro - el registrador
  • Etiqueta : la etiqueta del muestreador
  • FileName : el nombre del archivo, si lo hay
  • Parámetros : texto del campo Parámetros
  • bsh.args - los parámetros, divididos como se describe arriba
  • SampleResult - puntero al SampleResult actual
  • El código de respuesta predeterminado es 200
  • El valor predeterminado de ResponseMessage es " OK "
  • IsSuccess por defecto es verdadero
  • ctx - JMeterContext
  • vars - JMeterVariables - por ejemplo
    vars.get("VAR1");
    vars.put("VAR2","valor");
    vars.remove("VAR3");
    vars.putObject("OBJ1",nuevo Objeto());
  • accesorios - JMeterProperties (clase java.util.Properties ) - por ejemplo
    props.get("INICIO.HMS");
    props.put("PROP1","1234");

Cuando se completa la secuencia de comandos, se devuelve el control a Sampler y copia el contenido de las siguientes variables de secuencia de comandos en las variables correspondientes en SampleResult :

  • Código de respuesta - por ejemplo 200
  • Mensaje de respuesta : por ejemplo, " OK "
  • IsSuccess - verdadero o falso

SampleResult ResponseData se establece a partir del valor de retorno del script. Si el script devuelve un valor nulo, puede establecer la respuesta directamente mediante el método SampleResult.setResponseData(data) , donde data es una cadena o una matriz de bytes. El tipo de datos predeterminado es " texto ", pero se puede establecer en binario mediante el método SampleResult.setDataType(SampleResult.BINARY) .

La variable SampleResult le da al script acceso completo a todos los campos y métodos en SampleResult . Por ejemplo, el script tiene acceso a los métodos setStopThread(boolean) y setStopTest(boolean) . Aquí hay un script de ejemplo simple (¡no muy útil!):

if (bsh.args[0].equalsIgnoreCase("StopThread")) {
    log.info("¡Detener subproceso detectado!");
    SampleResult.setStopThread(verdadero);
}
devuelve "Datos de la muestra con Etiqueta "+Etiqueta;
//o
SampleResult.setResponseData("Mis datos");
devolver nulo;

Otro ejemplo:
asegúrese de que la propiedad beanshell.sampler.init=BeanShellSampler.bshrc esté definida en jmeter.properties . El siguiente script mostrará los valores de todas las variables en el campo ResponseData :

devuelve obtenerVariables();

Para obtener detalles sobre los métodos disponibles para las distintas clases ( JMeterVariables , SampleResult , etc.), consulte el Javadoc o el código fuente. Sin embargo, tenga en cuenta que el mal uso de cualquier método puede causar fallas sutiles que pueden ser difíciles de encontrar.

^

Muestreador JSR223

El muestreador JSR223 permite que se use el código de secuencia de comandos JSR223 para realizar una muestra o algún cálculo necesario para crear/actualizar variables.

Si no desea generar un SampleResult cuando se ejecuta esta muestra, llame al siguiente método:
MuestraResultado.setIgnorar();
Esta convocatoria tendrá el siguiente impacto:
  • SampleResult no se entregará a SampleListeners como View Results Tree, Summariser...
  • SampleResult no se evaluará en aserciones ni en postprocesadores
  • SampleResult se evaluará para calcular el estado de la última muestra (${JMeterThread.last_sample_ok}) y ThreadGroup "Acción a tomar después de un error de Sampler" (desde JMeter 5.4)

Los elementos de prueba JSR223 tienen una función (compilación) que puede aumentar significativamente el rendimiento. Para beneficiarse de esta característica:

  • Utilice archivos de secuencias de comandos en lugar de insertarlos. Esto hará que JMeter los compile si esta función está disponible en ScriptEngine y los almacene en caché.
  • O Use Script Text y marque Cache compilated script si está disponible .
    Al usar esta función, asegúrese de que su código de secuencia de comandos no use variables de JMeter o llamadas a funciones de JMeter directamente en el código de secuencia de comandos, ya que el almacenamiento en caché solo almacenaría en caché el primer reemplazo. En su lugar, utilice parámetros de secuencia de comandos.
    Para beneficiarse del almacenamiento en caché y la compilación, el motor de lenguaje utilizado para las secuencias de comandos debe implementar la interfaz compilable JSR223 (Groovy es uno de estos, java, beanshell y javascript no lo son)
    Cuando utilice Groovy como lenguaje de secuencias de comandos y no verifique la secuencia de comandos compilada de Cache si está disponible (aunque se recomienda el almacenamiento en caché), debe establecer esta propiedad JVM -Dgroovy.use.classvalue=true debido a una fuga de Groovy Memory a partir de la versión 2.4.6, consulte:
El tamaño de la caché está controlado por la siguiente propiedad de JMeter ( jmeter.properties ):
jsr223.compiled_scripts_cache_size=100
A diferencia de BeanShell Sampler , el intérprete no se guarda entre invocaciones.
Los elementos de prueba JSR223 que usan un archivo de secuencia de comandos o texto de secuencia de comandos + la secuencia de comandos compilada de la memoria caché marcada, si está disponible , ahora se compilan si ScriptEngine es compatible con esta función, lo que permite grandes mejoras de rendimiento.
Captura de pantalla del panel de control del muestreador JSR223
Captura de pantalla del panel de control del muestreador JSR223
JMeter procesa las referencias a funciones y variables antes de pasar el campo de script al intérprete, por lo que las referencias solo se resolverán una vez. Las referencias a variables y funciones en los archivos de script se pasarán textualmente al intérprete, lo que probablemente cause un error de sintaxis. Para usar variables de tiempo de ejecución, use los métodos de accesorios apropiados, por ejemplo
props.get("INICIO.HMS");
props.put("PROP1","1234");

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Lenguaje de escritura
Nombre del lenguaje de scripting JSR223 que se utilizará.
Hay otros idiomas admitidos además de los que aparecen en la lista desplegable. Otros pueden estar disponibles si el jar apropiado está instalado en el directorio lib de JMeter.
Tenga en cuenta que algunos lenguajes como Velocity pueden usar una sintaxis diferente para las variables JSR223, por ejemplo
$log.debug("Hola " + $vars.get("a"));
para Velocidad.
Archivo de comandos
Nombre de un archivo que se usará como secuencia de comandos JSR223, si se usa una ruta de archivo relativa, será relativa al directorio al que hace referencia la propiedad del sistema " user.dir "
No
Parámetros
Lista de parámetros que se pasarán al archivo de script o al script.
No
Script compilado en caché si está disponible
Si está marcado (recomendado) y el idioma utilizado es compatible con la interfaz compilable (Groovy es uno de estos, java, beanshell y javascript no lo son), JMeter compilará el script y lo almacenará en caché usando su hash MD5 como clave de caché única
No
Guion
Script para pasar al lenguaje JSR223
Sí (a menos que se proporcione un archivo de script)

Si se proporciona un archivo de secuencia de comandos, se utilizará, de lo contrario, se utilizará la secuencia de comandos.

Antes de invocar el script, se configuran algunas variables. Tenga en cuenta que estas son variables JSR223, es decir, se pueden usar directamente en el script.

  • registro - el registrador
  • Etiqueta : la etiqueta del muestreador
  • FileName : el nombre del archivo, si lo hay
  • Parámetros : texto del campo Parámetros
  • args - los parámetros, divididos como se describe arriba
  • SampleResult - puntero al SampleResult actual
  • sampler - ( Sampler ) - puntero al Sampler actual
  • ctx - JMeterContext
  • vars - JMeterVariables - por ejemplo
    vars.get("VAR1");
    vars.put("VAR2","valor");
    vars.remove("VAR3");
    vars.putObject("OBJ1",nuevo Objeto());
  • accesorios - JMeterProperties (clase java.util.Properties ) - por ejemplo
    props.get("INICIO.HMS");
    props.put("PROP1","1234");
  • OUT - System.out - por ejemplo, OUT.println("mensaje")

SampleResult ResponseData se establece a partir del valor de retorno del script. Si la secuencia de comandos devuelve nulo , puede establecer la respuesta directamente mediante el método SampleResult.setResponseData(data) , donde los datos son una cadena o una matriz de bytes. El tipo de datos predeterminado es " texto ", pero se puede establecer en binario mediante el método SampleResult.setDataType(SampleResult.BINARY) .

La variable SampleResult le da al script acceso total a todos los campos y métodos en SampleResult. Por ejemplo, el script tiene acceso a los métodos setStopThread(boolean) y setStopTest(boolean) .

A diferencia de BeanShell Sampler, JSR223 Sampler no establece el código de respuesta , el mensaje de respuesta y el estado de la muestra a través de variables de script. Actualmente, la única forma de cambiarlos es a través de los métodos SampleResult :

  • SampleResult.setSuccessful(verdadero/falso)
  • SampleResult.setResponseCode("código")
  • SampleResult.setResponseMessage("mensaje")
^

Muestreador de TCP

TCP Sampler abre una conexión TCP/IP al servidor especificado. Luego envía el texto y espera una respuesta.

Si se selecciona " Reutilizar conexión ", las conexiones se comparten entre Samplers en el mismo subproceso, siempre que se utilicen exactamente la misma cadena de nombre de host y puerto. Diferentes combinaciones de hosts/puertos utilizarán diferentes conexiones, al igual que diferentes subprocesos. Si se seleccionan " Reutilizar conexión " y " Cerrar conexión ", el zócalo se cerrará después de ejecutar el muestreador. En la siguiente muestra, se creará otro zócalo. Es posible que desee cerrar un zócalo al final de cada bucle de hilo.

Si se detecta un error, o no se selecciona " Reutilizar conexión ", el socket se cierra. Se reabrirá otro socket en la siguiente muestra.

Las siguientes propiedades se pueden utilizar para controlar su funcionamiento:

tcp.estado.prefijo
texto que precede a un número de estado
tcp.status.sufijo
texto que sigue a un número de estado
tcp.estado.propiedades
nombre del archivo de propiedades para convertir códigos de estado en mensajes
controlador tcp
Nombre de la clase del controlador TCP (predeterminado TCPClientImpl ): solo se usa si no se especifica en la GUI
La clase que maneja la conexión está definida por la GUI, en su defecto la propiedad tcp.handler . Si no se encuentra, la clase se busca en el paquete org.apache.jmeter.protocol.tcp.sampler .

Los usuarios pueden proporcionar su propia implementación. La clase debe extender org.apache.jmeter.protocol.tcp.sampler.TCPClient .

Actualmente se proporcionan las siguientes implementaciones.

  • TCPClientImpl
  • BinaryTCPClientImpl
  • LongitudPrefijadoBinarioTCPClientImpl
Las implementaciones se comportan de la siguiente manera:
TCPClientImpl
Esta implementación es bastante básica. Al leer la respuesta, lee hasta el final del byte de línea, si esto se define configurando la propiedad tcp.eolByte , de lo contrario, hasta el final del flujo de entrada. Puede controlar la codificación del conjunto de caracteres configurando tcp.charset , que tendrá la codificación predeterminada de la plataforma.
BinaryTCPClientImpl
Esta implementación convierte la entrada de la GUI, que debe ser una cadena codificada en hexadecimal, en binaria y realiza lo contrario al leer la respuesta. Al leer la respuesta, lee hasta el final del byte del mensaje, si esto se define configurando la propiedad tcp.BinaryTCPClient.eomByte , de lo contrario, hasta el final del flujo de entrada.
LongitudPrefijadoBinarioTCPClientImpl
Esta implementación amplía BinaryTCPClientImpl prefijando los datos del mensaje binario con un byte de longitud binaria. El prefijo de longitud por defecto es de 2 bytes. Esto se puede cambiar configurando la propiedad tcp.binarylength.prefix.length .
Manejo de tiempos de espera
Si se establece el tiempo de espera, la lectura finalizará cuando expire. Entonces, si está utilizando un eolByte / eomByte , asegúrese de que el tiempo de espera sea lo suficientemente largo, de lo contrario, la lectura terminará antes de tiempo.
Manejo de respuestas
Si se define tcp.status.prefix , se busca en el mensaje de respuesta el texto que sigue hasta el sufijo. Si se encuentra algún texto de este tipo, se utiliza para establecer el código de respuesta. A continuación, el mensaje de respuesta se obtiene del archivo de propiedades (si se proporciona).
Uso de pre y sufijo
Por ejemplo, si el prefijo = " [ " y el sufijo = " ] ", entonces la siguiente respuesta:
[J28] XI123,23, GBP, CR
tendría el código de respuesta J28 .
Los códigos de respuesta en el rango " 400 "-" 499 " y " 500 "-" 599 " actualmente se consideran fallas; todos los demás tienen éxito. [¡Esto debe hacerse configurable!]
Las implementaciones de TCP suministradas no utilizan el nombre de inicio de sesión ni la contraseña.

Los enchufes se desconectan al final de una prueba.
Captura de pantalla para Panel de control de TCP Sampler
Captura de pantalla del panel de control de TCP Sampler

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Nombre de clase TCPClient
Nombre de la clase TCPClient. El valor predeterminado es la propiedad tcp.handler , en su defecto TCPClientImpl .
No
Nombre del servidor o IP
Nombre o IP del servidor TCP
Número de puerto
Puerto a utilizar
Conexión de reutilización
Si se selecciona, la conexión se mantiene abierta. De lo contrario, se cierra cuando se han leído los datos.
Conexión cercana
Si se selecciona, la conexión se cerrará después de ejecutar el muestreador.
SO_LINGER
Habilite/desactive SO_LINGER con el tiempo de demora especificado en segundos cuando se crea un socket. Si establece el valor " SO_LINGER " en 0 , puede evitar que un gran número de sockets permanezcan sentados con un estado TIME_WAIT .
No
Valor de byte de fin de línea (EOL)
Valor de byte para el final de la línea, configúrelo en un valor fuera del rango de -128 a +127 para omitir la verificación de EOL . También puede establecer esto en el archivo jmeter.properties con la propiedad eolByte . Si establece esto en TCP Sampler Config y en el archivo jmeter.properties al mismo tiempo, se utilizará el valor de configuración en TCP Sampler Config.
No
Tiempo de espera de conexión
Tiempo de espera de conexión (milisegundos, 0 deshabilita).
No
Tiempo de espera de respuesta
Tiempo de espera de respuesta (milisegundos, 0 deshabilita).
No
Establecer sin demora
Consulte java.net.Socket.setTcpNoDelay() . Si se selecciona, se desactivará el algoritmo de Nagle; de ​​lo contrario, se utilizará el algoritmo de Nagle.
Texto para enviar
Texto a enviar
Usuario de inicio de sesión
Nombre de usuario: no se usa en la implementación predeterminada
No
Clave
Contraseña: no se usa en la implementación predeterminada (NOTA: se almacena sin cifrar en el plan de prueba)
No
^

Publicador JMS

JMS Publisher publicará mensajes en un destino determinado (tema/cola). Para aquellos que no están familiarizados con JMS, es la especificación J2EE para mensajería. Existen numerosos servidores JMS en el mercado y varias opciones de código abierto.


JMeter no incluye ningún jar de implementación de JMS; esto debe descargarse del proveedor JMS y colocarse en el directorio lib
Captura de pantalla del panel de control de JMS Publisher
Captura de pantalla del panel de control de JMS Publisher

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
usar el archivo de propiedades JNDI
use jndi.properties . Tenga en cuenta que el archivo debe estar en el classpath, por ejemplo, actualizando la propiedad user.classpath JMeter. Si esta opción no está seleccionada, JMeter utiliza los campos " JNDI Initial Context Factory " y " Provider URL " para crear la conexión.
Fábrica de contexto inicial JNDI
Nombre de la fábrica de contexto
No
URL del proveedor
La URL del proveedor JMS
Sí, a menos que use jndi.properties
Destino
El destino del mensaje (tema o nombre de la cola)
Configuración
El tipo de configuración de destino. Con Al inicio , el nombre de destino es estático (es decir, siempre el mismo nombre durante la prueba), con Cada muestra , el nombre de destino es dinámico y se evalúa en cada muestra (es decir, el nombre de destino puede ser una variable)
Autenticación
Requisito de autenticación para el proveedor JMS
Usuario
Nombre de usuario
No
Clave
Contraseña (NB, esto se almacena sin cifrar en el plan de prueba)
No
Vencimiento
El tiempo de caducidad (en milisegundos) del mensaje antes de que quede obsoleto. Si no especifica un tiempo de caducidad, el valor predeterminado es 0 (nunca caduca).
No
Prioridad
El nivel de prioridad del mensaje. Hay diez niveles de prioridad de 0 (más bajo) a 9 (más alto). Si no especifica un nivel de prioridad, el nivel predeterminado es 4 .
No
Vuelva a conectar en códigos de error (regex)
Expresión regular para códigos de error JMSException que fuerzan la reconexión. Si está vacío, no se realizará ninguna reconexión.
No
Número de muestras para agregar
Número de muestras para agregar
Fuente del mensaje
Dónde obtener el mensaje:
Desde el archivo
significa que el archivo al que se hace referencia será leído y reutilizado por todas las muestras. Si el nombre del archivo cambia, se vuelve a cargar desde JMeter 3.0
Archivo aleatorio de la carpeta especificada a continuación
significa que se seleccionará un archivo aleatorio de la carpeta especificada a continuación, esta carpeta debe contener archivos con extensión .dat para mensajes de bytes o archivos con extensión .txt u .obj para mensajes de objeto o de texto
área de texto
El mensaje a usar para mensaje de texto u objeto
Tipo de mensaje
Texto, mapa, mensaje de objeto o mensaje de bytes
Codificación de contenido
Especifique la codificación para leer el archivo de origen del mensaje:
CRUDO :
No hay soporte variable del archivo y cárguelo con el juego de caracteres predeterminado del sistema.
PREDETERMINADO :
Cargue el archivo con la codificación predeterminada del sistema, excepto XML, que se basa en el prólogo XML. Si el archivo contiene variables, se procesarán.
Juego de caracteres estándar :
La codificación especificada (válida o no) se utiliza para leer el archivo y procesar variables
¿Usar el modo de entrega no persistente?
Si configurar DeliveryMode.NON_PERSISTENT (predeterminado en falso )
No
Propiedades JMS
Las propiedades JMS son propiedades específicas del sistema de mensajería subyacente. Puede configurar el nombre, el valor y la clase (tipo) de valor. El tipo predeterminado es String . Por ejemplo: para los servicios web de WebSphere 5.1, deberá configurar la propiedad JMS targetService para probar los servicios web a través de JMS.
No

Para el tipo MapMessage, JMeter lee la fuente como líneas de texto. Cada línea debe tener 3 campos, delimitados por comas. Los campos son:

  • Nombre de la entrada
  • Nombre de la clase de objeto, por ejemplo, " String " (supone el paquete java.lang si no se especifica)
  • Valor de cadena de objeto
valorDe(Cadena)
nombre,Cadena,Ejemplo
tamaño,Entero,1234
El mensaje de objeto se implementa y funciona de la siguiente manera:
  • Coloque el JAR que contiene su objeto y sus dependencias en la carpeta jmeter_home/lib/
  • Serialice su objeto como XML usando XStream
  • Coloque el resultado en un archivo con el sufijo .txt o .obj o coloque el contenido XML directamente en el área de texto
Tenga en cuenta que si el mensaje está en un archivo, no se producirá el reemplazo de las propiedades, mientras que sí lo hará si utiliza el Área de texto.

La siguiente tabla muestra algunos valores que pueden ser útiles al configurar JMS:

Apache Active MQ Valores) Comentario
Fábrica de contextoorg.apache.activemq.jndi.ActiveMQInitialContextFactory.
URL del proveedorvm://hostlocal
URL del proveedorvm:(intermediario:(vm://localhost)?persistente=falso)Deshabilitar persistencia
Referencia de colacolas dinámicas/NOMBRE DE LA COLA Definir dinámicamente el NOMBRE DE LA COLA a JNDI
Referencia del temaTemas dinámicos/NOMBRE DEL TEMA Definir dinámicamente TOPICNAME a JNDI
^

Suscriptor JMS

El suscriptor de JMS se suscribirá a los mensajes en un destino determinado (tema o cola). Para aquellos que no están familiarizados con JMS, es la especificación J2EE para mensajería. Existen numerosos servidores JMS en el mercado y varias opciones de código abierto.


JMeter no incluye ningún jar de implementación de JMS; esto debe descargarse del proveedor JMS y colocarse en el directorio lib
Captura de pantalla del panel de control del suscriptor JMS
Captura de pantalla del panel de control del suscriptor JMS

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
usar el archivo de propiedades JNDI
use jndi.properties . Tenga en cuenta que el archivo debe estar en el classpath, por ejemplo, actualizando la propiedad user.classpath JMeter. Si esta opción no está seleccionada, JMeter utiliza los campos " JNDI Initial Context Factory " y " Provider URL " para crear la conexión.
Fábrica de contexto inicial JNDI
Nombre de la fábrica de contexto
No
URL del proveedor
La URL del proveedor JMS
No
Destino
el destino del mensaje (tema o nombre de la cola)
ID de suscripción duradera
El ID que se usará para una suscripción duradera. En el primer uso, el proveedor JMS generará automáticamente la cola respectiva si aún no existe.
No
Identificación del cliente
El ID de cliente que se usará cuando use una suscripción duradera. Asegúrese de agregar una variable como ${__threadNum} cuando tenga más de un subproceso.
No
Selector JMS
Selector de mensajes según lo definido por la especificación JMS para extraer solo los mensajes que respetan la condición del Selector. La sintaxis usa la subparte de SQL 92.
No
Configuración
El tipo de configuración de destino. Con Al inicio , el nombre de destino es estático (es decir, siempre el mismo nombre durante la prueba), con Cada muestra , el nombre de destino es dinámico y se evalúa en cada muestra (es decir, el nombre de destino puede ser una variable)
Autenticación
Requisito de autenticación para el proveedor JMS
Usuario
Nombre de usuario
No
Clave
Contraseña (NB, esto se almacena sin cifrar en el plan de prueba)
No
Número de muestras para agregar
número de muestras para agregar
Guardar respuesta
si el muestreador almacena la respuesta. De lo contrario, solo se devuelve la longitud de la respuesta.
Se acabó el tiempo
Especifique el tiempo de espera que se aplicará, en milisegundos. 0 = ninguno. Este es el tiempo de espera agregado general, no por muestra.
Cliente
Qué implementación de cliente usar. Ambos crean conexiones que pueden leer mensajes. Sin embargo, utilizan una estrategia diferente, como se describe a continuación:
ConsumidorMensaje.recibir()
llama a receive() para cada mensaje solicitado. Conserva la conexión entre muestras, pero no obtiene mensajes a menos que el muestreador esté activo. Esto se adapta mejor a las suscripciones de Queue.
EscuchaMensaje.onMessage()
establece un Listener que almacena todos los mensajes entrantes en una cola. El oyente permanece activo después de que se completa la muestra. Esto se adapta mejor a las suscripciones de temas.
¿Parar entre muestras?
Si se selecciona, JMeter llama a Connection.stop() al final de cada muestra (y llama a start() antes de cada muestra). Esto puede ser útil en algunos casos en los que varias muestras/subprocesos tienen conexiones a la misma cola. Si no se selecciona, JMeter llama a Connection.start() al comienzo del hilo y no llama a stop() hasta el final del hilo.
Separador
Separador utilizado para separar mensajes cuando hay más de uno (relacionado con la configuración del Número de muestras para agregar). Tenga en cuenta que \n , \r , \t son aceptados.
No
Vuelva a conectar en códigos de error (regex)
Expresión regular para códigos de error JMSException que fuerzan la reconexión. Si está vacío, no se realizará ninguna reconexión.
No
Pausa entre errores (ms)
Pausa en milisegundos que hará el Suscriptor cuando ocurra un error
No
^

JMS punto a punto

Este muestreador envía y, opcionalmente, recibe mensajes JMS a través de conexiones punto a punto (colas). Es diferente de los mensajes de publicación/suscripción y generalmente se usa para manejar transacciones.

request_only normalmente se utilizará para poner carga en un sistema JMS.
request_reply se utilizará cuando desee probar el tiempo de respuesta de un servicio JMS que procesa los mensajes enviados a la cola de solicitudes, ya que este modo esperará la respuesta en la cola de respuestas enviada por este servicio.
examinar devuelve la profundidad actual de la cola, es decir, el número de mensajes en la cola.
read lee un mensaje de la cola (si lo hay).
clear borra la cola, es decir, elimina todos los mensajes de la cola.

JMeter usa las propiedades java.naming.security.[principal|credentials] , si están presentes, al crear la conexión de cola. Si no se desea este comportamiento, establezca la propiedad JMeter JMSSampler.useSecurity.properties=false


JMeter no incluye ningún jar de implementación de JMS; esto debe descargarse del proveedor JMS y colocarse en el directorio lib
Captura de pantalla para Panel de control de JMS punto a punto
Captura de pantalla del panel de control de JMS Point-to-Point

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Fábrica de conexiones de cola
El nombre JNDI de la fábrica de conexiones de cola que se utilizará para conectarse al sistema de mensajería.
Cola de solicitud de nombre JNDI
Este es el nombre JNDI de la cola a la que se envían los mensajes.
Cola de respuesta de nombre JNDI
El nombre JNDI de la cola de recepción. Si se proporciona un valor aquí y el estilo de comunicación es Solicitud de respuesta , se controlará esta cola para obtener respuestas a las solicitudes enviadas.
No
Número de muestras para agregar
Número de muestras a agregar. Solo aplicable para el estilo de comunicación Lectura.
Selector JMS
Selector de mensajes según lo definido por la especificación JMS para extraer solo los mensajes que respetan la condición del Selector. La sintaxis usa la subparte de SQL 92.
No
Estilo de comunicación
El estilo de comunicación puede ser Solo solicitud (también conocido como Activar y olvidar), Solicitud de respuesta , Leer , Examinar , Limpiar :
Solo solicitud
solo enviará mensajes y no monitoreará las respuestas. Como tal, se puede utilizar para poner carga en un sistema.
Solicitar respuesta
enviará mensajes y monitoreará las respuestas que reciba. El comportamiento depende del valor de JNDI Name Reply Queue. Si la Cola de respuesta de nombre JNDI tiene un valor, esta cola se utiliza para supervisar los resultados. La coincidencia de solicitud y respuesta se realiza con la identificación del mensaje de la solicitud y la identificación de correlación de la respuesta. Si la cola de respuesta de nombre JNDI está vacía, se utilizarán colas temporales para la comunicación entre el solicitante y el servidor. Esto es muy diferente de la cola de respuesta fija. Con colas temporales, el hilo de envío se bloqueará hasta que se reciba el mensaje de respuesta. Con el modo de respuesta de solicitud , debe tener un servidor que escuche los mensajes enviados a la cola de solicitudes y envíe respuestas a la cola a la que hace referencia message.getJMSReplyTo() .
Leer
leerá un mensaje de una cola saliente que no tiene oyentes adjuntos. Esto puede ser conveniente para fines de prueba. Este método se puede usar si necesita manejar colas sin un archivo de enlace (en caso de que se use la biblioteca jmeter-jms-skip-jndi), que solo funciona con el muestreador punto a punto JMS. En caso de que se utilicen archivos vinculantes, también se puede utilizar el muestreador de suscriptor JMS para leer desde una cola.
Navegar
determinará la profundidad actual de la cola sin eliminar mensajes de la cola, devolviendo la cantidad de mensajes en la cola.
Claro
borrará la cola, es decir, eliminará todos los mensajes de la cola.
Usar campos alternativos para la correlación de mensajes
Estas casillas de verificación seleccionan los campos que se utilizarán para hacer coincidir el mensaje de respuesta con la solicitud original.
Usar ID de mensaje de solicitud
si se selecciona, se utilizará la solicitud JMSMessageID; de lo contrario, se utilizará la solicitud JMSCorrelationID. En este último caso, la identificación de correlación debe especificarse en la solicitud.
Usar ID de mensaje de respuesta
si se selecciona, se utilizará la respuesta JMSMessageID; de lo contrario, se utilizará la respuesta JMSCorrelationID.
Hay dos patrones de correlación JMS de uso frecuente:
Patrón de ID de correlación JMS
es decir, haga coincidir la solicitud y la respuesta en sus ID de correlación => anule la selección de ambas casillas de verificación y proporcione una ID de correlación.
Patrón de ID de mensaje JMS
es decir, haga coincidir la identificación del mensaje de solicitud con la identificación de correlación de respuesta => seleccione "Usar identificación de mensaje de solicitud" únicamente.
En ambos casos, la aplicación JMS es responsable de completar el ID de correlación según sea necesario.
si se utiliza la misma cola para enviar y recibir mensajes, el mensaje de respuesta será el mismo que el mensaje de solicitud. En cuyo caso, proporcione una identificación de correlación y borre ambas casillas de verificación; o seleccione ambas casillas de verificación para usar el Id. de mensaje para la correlación. Esto puede ser útil para verificar el rendimiento de JMS sin procesar.
Se acabó el tiempo
El tiempo de espera en milisegundos para los mensajes de respuesta. Si no se ha recibido una respuesta dentro del tiempo especificado, el caso de prueba específico falla y el mensaje de respuesta específico recibido después del tiempo de espera se descarta. El valor predeterminado es 2000 ms. 0 significa que no hay tiempo de espera.
Vencimiento
El tiempo de caducidad (en milisegundos) del mensaje antes de que quede obsoleto. Si no especifica un tiempo de caducidad, el valor predeterminado es 0 (nunca caduca).
No
Prioridad
El nivel de prioridad del mensaje. Hay diez niveles de prioridad de 0 (más bajo) a 9 (más alto). Si no especifica un nivel de prioridad, el nivel predeterminado es 4 .
No
¿Usar el modo de entrega no persistente?
Si establecer DeliveryMode.NON_PERSISTENT .
Contenido
El contenido del mensaje.
No
Propiedades JMS
Las propiedades JMS son propiedades específicas del sistema de mensajería subyacente. Puede configurar el nombre, el valor y la clase (tipo) de valor. El tipo predeterminado es String . Por ejemplo: para los servicios web de WebSphere 5.1, deberá configurar la propiedad JMS targetService para probar los servicios web a través de JMS.
No
Fábrica de contexto inicial
La fábrica de contexto inicial es la fábrica que se utilizará para buscar los recursos JMS.
No
Propiedades JNDI
Las propiedades JNDI son las propiedades específicas para la implementación JNDI subyacente.
No
URL del proveedor
La URL del proveedor JMS.
No
^

Solicitud JUnit

La implementación actual es compatible con la convención y las extensiones estándar de JUnit. También incluye extensiones como oneTimeSetUp y oneTimeTearDown . La muestra funciona como la solicitud de Java con algunas diferencias.
  • en lugar de usar la interfaz de prueba de JMeter, escanea los archivos jar en busca de clases que extiendan la clase TestCase de JUnit . Eso incluye cualquier clase o subclase.
  • Los archivos jar de prueba JUnit deben colocarse en jmeter/lib/junit en lugar del directorio /lib . También puede usar la propiedad " user.classpath " para especificar dónde buscar las clases de TestCase .
  • JUnit sampler no usa pares de nombre/valor para la configuración como Java Request . El muestreador asume que setUp y tearDown configurarán la prueba correctamente.
  • El muestreador mide el tiempo transcurrido solo para el método de prueba y no incluye configuración ni desmontaje .
  • Cada vez que se llama al método de prueba, JMeter pasará el resultado a los oyentes.
  • El soporte para oneTimeSetUp y oneTimeTearDown se realiza como un método. Dado que JMeter tiene subprocesos múltiples, no podemos llamar a oneTimeSetUp / oneTimeTearDown de la misma manera que lo hace Maven.
  • El muestreador informa las excepciones inesperadas como errores. Existen algunas diferencias importantes entre los ejecutores de pruebas JUnit estándar y la implementación de JMeter. En lugar de crear una nueva instancia de la clase para cada prueba, JMeter crea 1 instancia por muestra y la reutiliza. Esto se puede cambiar con la casilla de verificación " Crear una nueva instancia por muestra ".
La implementación actual de la muestra intentará crear una instancia utilizando primero el constructor de cadenas. Si la clase de prueba no declara un constructor de cadena, el muestreador buscará un constructor vacío. Ejemplo a continuación:
Constructores JUnit
Constructor vacío:
clase pública myTestCase {
  myTestCase público () {}
}
Constructor de cadenas:
clase pública myTestCase {
  public myTestCase(Texto de cadena) {
    super(texto);
  }
}
De forma predeterminada, JMeter proporcionará algunos valores predeterminados para el código y el mensaje de éxito/fallo. Los usuarios deben definir un conjunto de códigos únicos de éxito y falla y usarlos de manera uniforme en todas las pruebas.

Reglas generales

Si usa setUp y tearDown , asegúrese de que los métodos se declaren públicos. Si no lo hace, es posible que la prueba no se ejecute correctamente.
Aquí hay algunas pautas generales para escribir pruebas JUnit para que funcionen bien con JMeter. Dado que JMeter ejecuta subprocesos múltiples, es importante tener en cuenta ciertas cosas.
  • Escriba los métodos setUp y tearDown para que sean seguros para subprocesos. Esto generalmente significa evitar el uso de miembros estáticos.
  • Haga que los métodos de prueba sean unidades discretas de trabajo y no largas secuencias de acciones. Al mantener el método de prueba en una operación discreta, se facilita la combinación de métodos de prueba para crear nuevos planes de prueba.
  • Evite hacer que los métodos de prueba dependan unos de otros. Dado que JMeter permite la secuenciación arbitraria de métodos de prueba, el comportamiento del tiempo de ejecución es diferente al comportamiento predeterminado de JUnit.
  • Si un método de prueba es configurable, tenga cuidado con el lugar donde se almacenan las propiedades. Se recomienda leer las propiedades del archivo Jar.
  • Cada muestra crea una instancia de la clase de prueba, así que escribe tu prueba para que la configuración ocurra en oneTimeSetUp y oneTimeTearDown .
Captura de pantalla del panel de control de JUnit Request
Captura de pantalla del panel de control de JUnit Request

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Buscar anotaciones JUnit4
Seleccione esto para buscar pruebas JUnit4 (anotaciones @Test )
Filtro de paquetes
Lista separada por comas de paquetes para mostrar. Ejemplo, org.apache.jmeter , junit.framework .
Nombre de la clase
Nombre completo de la clase de prueba JUnit.
Cadena de constructores
String pasa al constructor de cadenas. Si se establece una cadena, la muestra utilizará el constructor de cadena en lugar del constructor vacío.
Método de prueba
El método a probar.
mensaje de exito
Un mensaje descriptivo que indica lo que significa el éxito.
Código de éxito
Un código único que indica que la prueba fue exitosa.
mensaje de error
Un mensaje descriptivo que indica lo que significa falla.
Código de falla
Un código único que indica que la prueba falló.
Mensaje de error
Una descripción de los errores.
Código de error
Algo de código para errores. No necesita ser único.
No llamar a configurar y desmontar
Configure el muestreador para que no llame a setUp y tearDown . De forma predeterminada, se debe llamar a setUp y tearDown . No llamar a esos métodos podría afectar la prueba y hacerla inexacta. Esta opción solo debe usarse con llamadas a oneTimeSetUp y oneTimeTearDown . Si el método seleccionado es oneTimeSetUp o oneTimeTearDown , esta opción debe estar marcada.
Agregar errores de aserción
Si agregar o no errores de aserción al mensaje de respuesta.
Agregar excepciones de tiempo de ejecución
Si agregar o no excepciones de tiempo de ejecución al mensaje de respuesta. Solo se aplica si no se selecciona " Adjuntar errores de aserción ".
Crear una nueva Instancia por muestra
Si crear o no una nueva instancia JUnit para cada muestra. El valor predeterminado es falso, lo que significa que JUnit TestCase se crea uno y se reutiliza.

Se reconocen las siguientes anotaciones JUnit4:

@Prueba
Se utiliza para encontrar métodos de prueba y clases. Se admiten los atributos " esperado " y " tiempo de espera ".
@Antes
tratado igual que setUp() en JUnit3
@Después
tratado igual que tearDown() en JUnit3
@Antes de la clase, @Después de la clase
tratados como métodos de prueba para que puedan ejecutarse de forma independiente según sea necesario
Tenga en cuenta que JMeter actualmente ejecuta los métodos de prueba directamente, en lugar de dejarlo en manos de JUnit. Esto es para permitir que los métodos de configuración / desmontaje se excluyan del tiempo de muestra. Como consecuencia, el tiempo del muestreador excluye el tiempo necesario para llamar a los métodos de configuración / desmontaje y sus alternativas basadas en anotaciones.
^

Muestra de lector de correo

Mail Reader Sampler puede leer (y opcionalmente borrar) mensajes de correo usando los protocolos POP3(S) o IMAP(S).

Captura de pantalla del panel de control de Mail Reader Sampler
Captura de pantalla del panel de control de Mail Reader Sampler

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Tipo de servidor
El protocolo utilizado por el proveedor: por ejemplo , pop3 , pop3s , imap , imaps . u otra cadena que represente el protocolo del servidor. Por ejemplo , archivo para usar con el proveedor de archivos de correo de solo lectura. Los nombres de proveedores reales para POP3 e IMAP son pop3 e imap
Servidor
Nombre de host o dirección IP del servidor. Consulte a continuación para su uso con el protocolo de archivo .
Puerto
Puerto que se utilizará para conectarse al servidor (opcional)
No
Nombre de usuario
Nombre de inicio de sesión del usuario
Clave
Contraseña de inicio de sesión del usuario (nota: esto se almacena sin cifrar en el plan de prueba)
Carpeta
La carpeta IMAP(S) a usar. Consulte a continuación para su uso con el protocolo de archivo .
Sí, si usa IMAP(S)
Número de mensajes a recuperar
Configure esto para recuperar todos o algunos mensajes
Obtener solo encabezados
Si se selecciona, solo se recuperarán los encabezados de los mensajes.
Eliminar mensajes del servidor
Si se establece, los mensajes se eliminarán después de la recuperación
Almacenar el mensaje usando MIME
Si almacenar el mensaje como MIME. Si es así, todo el mensaje sin procesar se almacena en los datos de respuesta; los encabezados no se almacenan ya que están disponibles en los datos. De lo contrario, los encabezados de los mensajes se almacenan como encabezados de respuesta. Se almacenan algunos encabezados ( Fecha , A , De , Asunto ) en el cuerpo.
No use características de seguridad
Indica que la conexión al servidor no utiliza ningún protocolo de seguridad.
Usar SSL
Indica que la conexión al servidor debe utilizar el protocolo SSL.
Usar StartTLS
Indica que la conexión al servidor debe intentar iniciar el protocolo TLS.
Aplicar StartTLS
Si el servidor no inicia el protocolo TLS, la conexión finalizará.
Confiar en todos los certificados
Cuando se selecciona, aceptará todos los certificados independientes de la CA.
Usar almacén de confianza local
Cuando se selecciona, solo aceptará certificados de confianza local.
Almacén de confianza local
Ruta al archivo que contiene los certificados de confianza. Las rutas relativas se resuelven en el directorio actual.
En su defecto, contra el directorio que contiene el script de prueba (archivo JMX).
Puede pasar propiedades de entorno relacionadas con el correo agregando a user.properties cualquiera de las propiedades descritas aquí .

Los mensajes se almacenan como submuestras del muestreador principal. Las partes del mensaje de varias partes se almacenan como submuestras del mensaje.

Manejo especial para el protocolo " archivo
": el proveedor de archivos JavaMail se puede usar para leer mensajes sin procesar de archivos. El campo del servidor se utiliza para especificar la ruta al padre de la carpeta . Los archivos de mensajes individuales deben almacenarse con el nombre n.msg , donde n es el número de mensaje. Alternativamente, el campo del servidor puede ser el nombre de un archivo que contiene un solo mensaje. La implementación actual es bastante básica y está pensada principalmente para fines de depuración.

^

Acción de control de flujo (era: Acción de prueba)

El muestreador de acción de control de flujo es un muestreador diseñado para usarse en un controlador condicional. En lugar de generar una muestra, el elemento de prueba pausa o detiene el objetivo seleccionado.

Este sampler también puede ser útil en conjunto con Transaction Controller, ya que permite incluir pausas sin necesidad de generar una muestra. Para demoras variables, establezca el tiempo de pausa en cero y agregue un temporizador como elemento secundario.

La acción " Detener " detiene el subproceso o la prueba después de completar las muestras que están en curso. La acción " Detener ahora " detiene la prueba sin esperar a que se completen las muestras; interrumpirá cualquier muestra activa. Si algunos subprocesos no se detienen dentro del límite de tiempo de 5 segundos, se mostrará un mensaje en el modo GUI. Puede intentar usar el comando Detener para ver si esto detendrá los subprocesos, pero si no, debe salir de JMeter. En el modo CLI, JMeter se cerrará si algunos subprocesos no se detienen dentro del límite de tiempo de 5 segundos.

El tiempo de espera se puede cambiar usando la propiedad JMeter jmeterengine.threadstop.wait . El tiempo se da en milisegundos.

Captura de pantalla del panel de control de la acción de control de flujo
Captura de pantalla del panel de control de la acción de control de flujo

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Objetivo
Subproceso actual / Todos los subprocesos (ignorado para Pausa e Ir a la siguiente iteración del bucle )
Acción
Pausa / Detener / Detener ahora / Ir a la siguiente iteración de bucle
Duración
Cuánto tiempo hacer una pausa (milisegundos)
Sí, si se selecciona Pausa
^

Muestra SMTP

SMTP Sampler puede enviar mensajes de correo utilizando el protocolo SMTP/SMTPS. Es posible establecer protocolos de seguridad para la conexión (SSL y TLS), así como autenticación de usuarios. Si se utiliza un protocolo de seguridad, se realizará una verificación en el certificado del servidor.
Hay dos alternativas disponibles para manejar esta verificación:

Confiar en todos los certificados
Esto ignorará la verificación de la cadena de certificados.
Usar un almacén de confianza local
Con esta opción, la cadena de certificados se validará con el archivo del almacén de confianza local.
Captura de pantalla para Panel de control de SMTP Sampler
Captura de pantalla del panel de control de SMTP Sampler

Parámetros

Atributo
Descripción
Requerido
Servidor
Nombre de host o dirección IP del servidor. Consulte a continuación para su uso con el protocolo de archivo .
Puerto
Puerto que se utilizará para conectarse al servidor. Los valores predeterminados son: SMTP=25, SSL=465, StartTLS=587
No
El tiempo de conexión expiro
Valor de tiempo de espera de conexión en milisegundos (nivel de socket). El valor predeterminado es tiempo de espera infinito.
No
Tiempo de espera de lectura
Lea el valor del tiempo de espera en milisegundos (nivel de socket). El valor predeterminado es tiempo de espera infinito.
No
Dirección de
La dirección del remitente que aparecerá en el correo electrónico.
Frente a
La dirección de correo electrónico de destino (múltiples valores separados por " ; ")
Sí, a menos que se especifique CC o BCC
Dirección a CC
Dirección de correo electrónico de destino de la copia al carbón (múltiples valores separados por " ; ")
No
Dirección a BCC
Dirección de correo electrónico de destino de copia oculta (múltiples valores separados por " ; ")
No
Dirección de respuesta
Dirección de respuesta alternativa (múltiples valores separados por " ; ")
No
Usar autenticación
Indica si el servidor SMTP requiere autenticación de usuario
Nombre de usuario
Nombre de inicio de sesión del usuario
Clave
Contraseña de inicio de sesión del usuario (nota: esto se almacena sin cifrar en el plan de prueba)
No use características de seguridad
Indica que la conexión al servidor SMTP no utiliza ningún protocolo de seguridad.
Usar SSL
Indica que la conexión al servidor SMTP debe utilizar el protocolo SSL.
Usar StartTLS
Indica que la conexión al servidor SMTP debe intentar iniciar el protocolo TLS.
Aplicar StartTLS
Si el servidor no inicia el protocolo TLS, la conexión finalizará.
Confiar en todos los certificados
Cuando se selecciona, aceptará todos los certificados independientes de la CA.
Usar almacén de confianza local
Cuando se selecciona, solo aceptará certificados de confianza local.
Almacén de confianza local
Ruta al archivo que contiene los certificados de confianza. Las rutas relativas se resuelven en el directorio actual.
En su defecto, contra el directorio que contiene el script de prueba (archivo JMX).
Anular los protocolos SSL/TLS del sistema
Especifique un protocolo SSL/TLS personalizado como una lista separada por espacios para usar en el ejemplo de protocolo de enlace TLSv1 TLSv1.1 TLSv1.2 . Los valores predeterminados son todos los protocolos admitidos.
No
Tema
El asunto del mensaje de correo electrónico.
Suprimir encabezado de asunto
Si se selecciona, el encabezado " Asunto: " se omite del correo que se envía. Esto es diferente de enviar un encabezado " Asunto: " vacío, aunque algunos clientes de correo electrónico pueden mostrarlo de manera idéntica.
Incluir marca de tiempo en el asunto
Incluye System.currentTimemillis() en la línea de asunto.
Añadir encabezado
Se pueden definir encabezados adicionales usando este botón.
No
Mensaje
El cuerpo del mensaje.
Enviar cuerpo simple (es decir, no multiparte/mixto)
Si se selecciona, envíe el cuerpo como un mensaje simple, es decir, no multiparte/mixto , si es posible. Si el cuerpo del mensaje está vacío y hay un solo archivo, envíe el contenido del archivo como el cuerpo del mensaje.
Nota: si el cuerpo del mensaje no está vacío y hay al menos un archivo adjunto, el cuerpo se envía como multiparte/mixto .
No
Adjuntar archivos
Archivos a adjuntar al mensaje.
Enviar .eml
Si se establece, se enviará el archivo .eml en lugar de las entradas en los campos Asunto , Mensaje y Adjuntar archivo(s)
Calcular el tamaño del mensaje
Calcula el tamaño del mensaje y lo almacena en el resultado de la muestra.
¿Habilitar el registro de depuración?
Si se establece, la propiedad " mail.debug " se establece en " true "
^

Muestreador de procesos del sistema operativo

OS Process Sampler es una muestra que se puede usar para ejecutar comandos en la máquina local.
Debería permitir la ejecución de cualquier comando que se pueda ejecutar desde la línea de comandos.
Se puede habilitar la validación del código de retorno y se puede especificar el código de retorno esperado.

Tenga en cuenta que los shells del sistema operativo generalmente proporcionan análisis de línea de comandos. Esto varía entre los sistemas operativos, pero generalmente el shell dividirá los parámetros en espacios en blanco. Algunos shells expanden los nombres de archivos comodín; algunos no. El mecanismo de cotización también varía entre los sistemas operativos. La muestra deliberadamente no realiza ningún análisis ni manejo de cotizaciones. El comando y sus parámetros deben proporcionarse en la forma esperada por el ejecutable. Esto significa que la configuración de la muestra no será transferible entre sistemas operativos.

Muchos sistemas operativos tienen algunos comandos integrados que no se proporcionan como ejecutables independientes. Por ejemplo, el comando DIR de Windows es parte del intérprete de comandos ( CMD.EXE ). Estos integrados no se pueden ejecutar como programas independientes, sino que se deben proporcionar como argumentos al intérprete de comandos adecuado.

Por ejemplo, la línea de comandos de Windows: DIR C:\TEMP debe especificarse de la siguiente manera:

Dominio:
CMD
Parámetro 1:
/C
Parámetro 2:
DIRECCIÓN
Parámetro 3:
C:\TEMP
Captura de pantalla para Panel de control de OS Process Sampler
Captura de pantalla del panel de control de OS Process Sampler

Parámetros

Atributo
Descripción
Requerido
Dominio
El nombre del programa a ejecutar.
Directorio de trabajo
Directorio desde el cual se ejecutará el comando, el valor predeterminado es la carpeta a la que hace referencia la propiedad del sistema " user.dir "
No
Parámetros de comando
Parámetros pasados ​​al nombre del programa.
No
Parámetros del entorno
Se agregaron pares de clave/valor al entorno al ejecutar el comando.
No
Entrada estándar (stdin)
Nombre del archivo del que se tomará la entrada ( STDIN ).
No
Salida estándar (salida estándar
Nombre del archivo de salida para la salida estándar ( STDOUT ). Si se omite, la salida se captura y se devuelve como datos de respuesta.
No
Error estándar (stderr)
Nombre del archivo de salida para el error estándar ( STDERR ). Si se omite, la salida se captura y se devuelve como datos de respuesta.
No
Comprobar código de devolución
Si está marcado, el muestreador comparará el código de retorno con el código de retorno esperado .
No
Código de retorno esperado
Código de retorno esperado para la llamada al sistema, obligatorio si se marca " Comprobar código de retorno ". La nota 500 se usa como indicador de error en JMeter, por lo que no debe usarla.
No
Se acabó el tiempo
Tiempo de espera para el comando en milisegundos, el valor predeterminado es 0 , lo que significa que no hay tiempo de espera. Si el tiempo de espera expira antes de que finalice el comando, JMeter intentará eliminar el proceso del sistema operativo.
No
^

Secuencia de comandos MongoDB (DEPRECATED)

Esta muestra le permite enviar una solicitud a un MongoDB.

Antes de usar esto, debe configurar un elemento de configuración de configuración de origen de MongoDB

Este elemento actualmente usa com.mongodb.DB#eval que toma un bloqueo de escritura global que causa un impacto en el rendimiento de la base de datos, consulte db.eval() . Por lo tanto, es mejor evitar el uso de este elemento para las pruebas de carga y usar JSR223 + secuencias de comandos Groovy usando MongoDBHolder en su lugar. MongoDB Script es más adecuado para pruebas funcionales o configuración de prueba (subprocesos de configuración/desmontaje)
Captura de pantalla del panel de control de MongoDB Script (OBSOLETO)
Captura de pantalla del panel de control de MongoDB Script (DEPRECATED)

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Fuente MongoDB
Nombre de la variable JMeter a la que está vinculada la conexión MongoDB. Esto debe coincidir con el campo ' Fuente de MongoDB ' de una configuración de fuente de MongoDB.
Nombre de la base de datos
Nombre de la base de datos, se utilizará en su secuencia de comandos
Nombre de usuario
No
Clave
No
Guion
Script de Mongo como se usaría en el shell de MongoDB
Asegúrese de que el nombre de la variable sea único en todo el plan de prueba.
^
^

Solicitud de perno

Esta muestra le permite ejecutar consultas Cypher a través del protocolo Bolt.

Antes de usar esto, debe configurar una configuración de conexión de pernos

Cada solicitud utiliza una conexión adquirida del grupo y la devuelve al grupo cuando se completa la muestra. El tamaño del grupo de conexiones usa los valores predeterminados del controlador (~100) y no se puede configurar en este momento.

El tiempo de respuesta medido corresponde a la ejecución de la consulta "completa", incluido el tiempo para ejecutar la consulta cifrada Y el tiempo para consumir los resultados enviados por la base de datos.

Captura de pantalla del panel de control de la solicitud de pernos
Captura de pantalla del panel de control de la solicitud de pernos

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Comentarios
Texto libre para detalles adicionales.
No
Declaración cifrada
La consulta a ejecutar.
Parámetros
Los valores de los parámetros, en formato JSON.
No
Registrar resultados de consultas
Si agregar o no los datos de los resultados de la consulta a la respuesta del muestreador (falso predeterminado). Tenga en cuenta que activar esto tiene una sobrecarga de memoria, utilícelo sabiamente.
No
Se recomienda encarecidamente utilizar parámetros de consulta, lo que permite que la base de datos almacene en caché y reutilice los planes de ejecución.
^
^

18.2 Controladores lógicos


Los controladores lógicos determinan el orden en que se procesan los muestreadores.

Controlador simple

El controlador lógico simple le permite organizar sus muestreadores y otros controladores lógicos. A diferencia de otros Logic Controllers, este controlador no ofrece más funciones que las de un dispositivo de almacenamiento.

Captura de pantalla para Panel de control del controlador simple
Captura de pantalla del panel de control del controlador simple

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Usando el controlador simple

Descargue este ejemplo (ver Figura 6). En este ejemplo, creamos un plan de prueba que envía dos solicitudes HTTP Ant y dos solicitudes HTTP Log4J. Agrupamos las solicitudes Ant y Log4J colocándolas dentro de Simple Logic Controllers. Recuerde, el controlador lógico simple no tiene ningún efecto sobre cómo JMeter procesa los controladores que le agrega. Entonces, en este ejemplo, JMeter envía las solicitudes en el siguiente orden: página de inicio de Ant, página de noticias de Ant, página de inicio de Log4J, página de historial de Log4J.

Tenga en cuenta que File Reporter está configurado para almacenar los resultados en un archivo llamado " simple-test.dat " en el directorio actual.

Figura 6 Ejemplo de controlador simple
Figura 6 Ejemplo de controlador simple
^

Controlador de bucle

Si agrega controladores generativos o lógicos a un controlador de bucle, JMeter los recorrerá una cierta cantidad de veces, además del valor de bucle que especificó para el grupo de subprocesos. Por ejemplo, si agrega una solicitud HTTP a un controlador de bucle con un recuento de bucles de dos y configura el recuento de bucles del grupo de subprocesos en tres, JMeter enviará un total de 2 * 3 = 6 solicitudes HTTP.

JMeter expondrá el índice de bucle como una variable llamada __jm__<Nombre de su elemento>__idx . Entonces, por ejemplo, si su controlador de bucle se llama LC, entonces puede acceder al índice de bucle a través de ${__jm__LC__idx} . El índice comienza en 0

Captura de pantalla del panel de control del controlador de bucle
Captura de pantalla del panel de control del controlador de bucle

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Recuento de bucles
El número de veces que se repetirán los subelementos de este controlador cada vez durante una ejecución de prueba.

El valor -1 es equivalente a marcar la opción Siempre .

Caso especial: el controlador de bucle incrustado en el elemento Grupo de subprocesos se comporta de forma ligeramente diferente. A menos que se establezca para siempre, detiene la prueba después de que se haya realizado el número dado de iteraciones.

Cuando utilice una función en este campo, tenga en cuenta que puede evaluarse varias veces. El ejemplo que usa __Random lo evaluará a un valor diferente para cada sampler secundario de Loop Controller y dará como resultado un comportamiento no deseado.
Sí, a menos que se marque "Para siempre"
Ejemplo de bucle

Descargue este ejemplo (ver Figura 4). En este ejemplo, creamos un plan de prueba que envía una solicitud HTTP particular solo una vez y envía otra solicitud HTTP cinco veces.

Figura 4 - Ejemplo de controlador de lazo
Figura 4 - Ejemplo de controlador de lazo

Configuramos el Grupo de subprocesos para un solo subproceso y un valor de recuento de bucles de uno. En lugar de dejar que Thread Group controle el bucle, usamos un controlador de bucle. Puede ver que agregamos una solicitud HTTP al grupo de subprocesos y otra solicitud HTTP a un controlador de bucle. Configuramos el controlador de bucle con un valor de conteo de bucle de cinco.

JMeter enviará las solicitudes en el siguiente orden: página de inicio, página de noticias, página de noticias, página de noticias, página de noticias y página de noticias.

Tenga en cuenta que File Reporter está configurado para almacenar los resultados en un archivo llamado " loop-test.dat " en el directorio actual.
^

Controlador de una sola vez

El controlador lógico de una sola vez le dice a JMeter que procese los controladores dentro de él solo una vez por subproceso, y pase por alto cualquier solicitud debajo de él durante las iteraciones posteriores a través del plan de prueba.

El controlador de una sola vez ahora se ejecutará siempre durante la primera iteración de cualquier controlador principal en bucle. Por lo tanto, si el controlador de solo una vez se coloca bajo un controlador de bucle especificado para repetir 5 veces, entonces el controlador de solo una vez se ejecutará solo en la primera iteración a través del controlador de bucle (es decir, cada 5 veces).

Tenga en cuenta que esto significa que el controlador de una sola vez seguirá comportándose como se esperaba anteriormente si se coloca en un grupo de subprocesos (se ejecuta solo una vez por prueba por subproceso), pero ahora el usuario tiene más flexibilidad en el uso del controlador de una sola vez.

Para las pruebas que requieren un inicio de sesión, considere colocar la solicitud de inicio de sesión en este controlador, ya que cada subproceso solo necesita iniciar sesión una vez para establecer una sesión.

Captura de pantalla del panel de control de Once Only Controller
Captura de pantalla del panel de control de Once Only Controller

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Ejemplo de una sola vez

Descargue este ejemplo (ver Figura 5). En este ejemplo, creamos un plan de prueba que tiene dos subprocesos que envían una solicitud HTTP. Cada subproceso envía una solicitud a la página de inicio, seguida de tres solicitudes a la página de error. Aunque configuramos el grupo de subprocesos para iterar tres veces, cada subproceso de JMeter solo envía una solicitud a la página de inicio porque esta solicitud vive dentro de un controlador de una sola vez.

Figura 5. Ejemplo de controlador de una sola vez
Figura 5. Ejemplo de controlador de una sola vez

Cada subproceso de JMeter enviará las solicitudes en el siguiente orden: página de inicio, página de error, página de error, página de error.

Tenga en cuenta que File Reporter está configurado para almacenar los resultados en un archivo llamado " loop-test.dat " en el directorio actual.

^

Controlador intercalado

Si agrega controladores generativos o lógicos a un controlador intercalado, JMeter alternará entre cada uno de los otros controladores para cada iteración de bucle.

Captura de pantalla del panel de control del controlador Interleave
Captura de pantalla del panel de control del controlador Interleave

Parámetros

Atributo
Descripción
Requerido
nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
ignorar bloques de subcontrolador
Si está marcado, el controlador intercalado tratará a los subcontroladores como elementos de solicitud única y solo permitirá una solicitud por controlador a la vez.
No
Intercalar a través de hilos
Si está marcado, el controlador intercalado alternará entre cada uno de sus controladores secundarios para cada iteración del bucle, pero en todos los subprocesos, por ejemplo, en una configuración con 4 subprocesos y 3 controladores secundarios, en la primera iteración, el subproceso 1 ejecutará el primer subproceso, el subproceso 2 ejecutará el segundo subproceso. , subproceso 3 tercer hijo, subproceso 4 primer hijo, en la próxima iteración cada subproceso ejecutará el siguiente controlador secundario
No
Ejemplo de entrelazado simple

Descargue este ejemplo (ver Figura 1). En este ejemplo, configuramos el Grupo de subprocesos para que tenga dos subprocesos y un número de bucles de cinco, para un total de diez solicitudes por subproceso. Consulte la siguiente tabla para conocer la secuencia en que JMeter envía las solicitudes HTTP.

Figura 1 - Ejemplo 1 del controlador intercalado
Figura 1 - Ejemplo 1 del controlador intercalado
Iteración de bucleCada subproceso de JMeter envía estas solicitudes HTTP
1Página de noticias
1Página de registro
2Página de preguntas frecuentes
2Página de registro
3Página de Gump
3Página de registro
4Debido a que no hay más solicitudes en el controlador,

JMeter comienza de nuevo y envía la primera solicitud HTTP, que es la página de noticias.
4Página de registro
5Página de preguntas frecuentes
5Página de registro
Ejemplo útil de entrelazado

Descargue otro ejemplo (ver Figura 2). En este ejemplo, configuramos el Grupo de subprocesos para tener un solo subproceso y un número de bucles de ocho. Observe que el plan de prueba tiene un controlador intercalado externo con dos controladores intercalados dentro.


        Figura 2 - Ejemplo de controlador intercalado 2
Figura 2 - Ejemplo de controlador intercalado 2

El Interleave Controller externo alterna entre los dos internos. Luego, cada Interleave Controller interno alterna entre cada una de las solicitudes HTTP. Cada subproceso de JMeter enviará las solicitudes en el siguiente orden: página de inicio, intercalado, página de error, intercalado, página de CVS, intercalado y página de preguntas frecuentes, intercalado.

Tenga en cuenta que File Reporter está configurado para almacenar los resultados en un archivo llamado " interleave-test2.dat " en el directorio actual.


        Figura 3 - Ejemplo de controlador intercalado 3
Figura 3 - Ejemplo de controlador intercalado 3

Si los dos controladores intercalados debajo del controlador intercalado principal fueran controladores simples, entonces el orden sería: Página de inicio, Página CVS, Intercalado, Página de errores, Página de preguntas frecuentes, Intercalado.

Sin embargo, si se marcó " ignorar los bloques del subcontrolador " en el controlador intercalado principal, entonces el orden sería: página de inicio, intercalado, página de errores, intercalado, página CVS, intercalado y página de preguntas frecuentes, intercalado.

^

Controlador aleatorio

El Controlador Lógico Aleatorio actúa de manera similar al Controlador Intercalado, excepto que en lugar de ir en orden a través de sus subcontroladores y muestreadores, elige uno al azar en cada pasada.

Las interacciones entre múltiples controladores pueden generar un comportamiento complejo. Esto es particularmente cierto en el caso del controlador aleatorio. Experimente antes de asumir qué resultados dará cualquier interacción dada
Captura de pantalla del panel de control del controlador aleatorio
Captura de pantalla del panel de control del controlador aleatorio

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
ignorar bloques de subcontrolador
Si está marcado, el controlador intercalado tratará a los subcontroladores como elementos de solicitud única y solo permitirá una solicitud por controlador a la vez.
No
^

Controlador de orden aleatorio

El controlador de orden aleatorio se parece mucho a un controlador simple en el sentido de que ejecutará cada elemento secundario como máximo una vez, pero el orden de ejecución de los nodos será aleatorio.

Captura de pantalla del panel de control del controlador de orden aleatorio
Captura de pantalla del panel de control del controlador de orden aleatorio

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
^

Controlador de rendimiento

El controlador de rendimiento permite al usuario controlar la frecuencia con la que se ejecuta. Hay dos modos:

  • porcentaje de ejecución
  • ejecuciones totales
Porcentaje de ejecuciones
hace que el controlador ejecute un cierto porcentaje de las iteraciones a través del plan de prueba.
Ejecuciones totales
hace que el controlador deje de ejecutarse después de que haya ocurrido un cierto número de ejecuciones.
Al igual que el controlador de una sola vez, esta configuración se restablece cuando se reinicia un controlador de bucle principal.

Este controlador tiene un nombre incorrecto, ya que no controla el rendimiento. Consulte el Temporizador de rendimiento constante para conocer un elemento que se puede usar para ajustar el rendimiento.
Captura de pantalla del panel de control de Throughput Controller
Captura de pantalla del panel de control del controlador de rendimiento
El controlador de rendimiento puede generar un comportamiento muy complejo cuando se combina con otros controladores, en particular con controladores intercalados o aleatorios como padres (también muy útiles).

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Estilo de ejecución
Si el controlador se ejecutará en modo de ejecuciones porcentuales o ejecuciones totales.
Rendimiento
Un número. Para el modo de ejecución porcentual, un número de 0 a 100 que indica el porcentaje de veces que se ejecutará el controlador. " 50 " significa que el controlador se ejecutará durante la mitad de las iteraciones a través del plan de prueba. Para el modo de ejecución total, el número indica el número total de veces que ejecutará el controlador.
Por usuario
Si está marcado, por usuario hará que el controlador calcule si debe ejecutarse por usuario (por subproceso). Si no está marcada, el cálculo será global para todos los usuarios. Por ejemplo, si usa el modo de ejecución total y desmarca " por usuario ", entonces el número dado para el rendimiento será el número total de ejecuciones realizadas. Si se marca " por usuario ", entonces el número total de ejecuciones sería el número de usuarios multiplicado por el número dado para el rendimiento.
No
^

Controlador de tiempo de ejecución

El controlador de tiempo de ejecución controla cuánto tiempo se ejecutarán sus hijos. El controlador ejecutará a sus hijos hasta que se excedan los tiempos de ejecución configurados.

Captura de pantalla del panel de control del controlador de tiempo de ejecución
Captura de pantalla del panel de control del controlador de tiempo de ejecución

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol y se usa para nombrar la transacción.
Tiempo de ejecución (segundos)
Tiempo de ejecución deseado en segundos. 0 significa que no se ejecuta.
^

Si controlador

El controlador If permite al usuario controlar si los elementos de prueba debajo de él (sus hijos) se ejecutan o no.

De forma predeterminada, la condición se evalúa solo una vez en la entrada inicial, pero tiene la opción de evaluarla para cada elemento ejecutable contenido en el controlador.

La mejor opción (la predeterminada) es marcar ¿Interpretar condición como expresión variable? , luego en el campo de condición tienes 2 opciones:

  • Opción 1: Usar una variable que contenga verdadero o falso
    Si desea probar si la última muestra fue exitosa, puede usar ${JMeterThread.last_sample_ok}
    Si el controlador usa variable
    Si el controlador usa variable
  • Opción 2: use una función ( se recomienda ${__jexl3()} ) para evaluar una expresión que debe devolver verdadero o falso
    Si el controlador usa la expresión
    Si el controlador usa la expresión
Por ejemplo, anteriormente se podía usar la condición: ${__jexl3(${VAR} == 23)} y esto se evaluaría como verdadero / falso , el resultado luego se pasaría a JavaScript, que luego devolvería verdadero / falso . Si se selecciona la opción Expresión variable, la expresión se evalúa y compara con " verdadera ", sin necesidad de utilizar JavaScript.

Para probar si una variable no está definida (o es nula), haga lo siguiente, suponga que var se llama myVar , la expresión será:
"${miVar}" == "\${miVar}"
O usar:
"${miVar}" != "\${miVar}"
para probar si una variable está definida y no es nula.
Si desmarca ¿ Interpretar la condición como expresión variable? , Si Controller usará javascript internamente para evaluar la condición que tiene una penalización de rendimiento que puede ser muy grande y hacer que su prueba sea menos escalable.
Si el controlador usa javascript
Si el controlador usa javascript
Captura de pantalla del panel de control de If Controller
Captura de pantalla del panel de control de If Controller

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Condición (JavaScript predeterminado)
De forma predeterminada, la condición se interpreta como un código JavaScript que devuelve " verdadero " o " falso ", pero esto se puede anular (ver a continuación)
¿Interpretar la condición como expresión variable?
Si se selecciona, la condición debe ser una expresión que se evalúe como " verdadera " (se ignoran las mayúsculas y minúsculas). Por ejemplo, ${FOUND} o ${__jexl3(${VAR} > 100)} . A diferencia del caso de JavaScript, la condición solo se verifica para ver si coincide con " verdadero " (se ignora el caso).
Se recomienda marcar esto y usar la función __jexl3 o __groovy en Condición para las actuaciones
Evaluar para todos los niños
¿Debe evaluarse la condición para todos los niños? Si no está marcada, la condición solo se evalúa en la entrada.
Ejemplos (JavaScript)
  • ${CONTADOR} < 10
  • "${VAR}" == "abcd"
Si hay un error al interpretar el código, se asume que la condición es falsa y se registra un mensaje en jmeter.log .
Tenga en cuenta que se recomienda evitar el uso del modo JavaScript para el rendimiento.

Cuando use __groovy , tenga cuidado de no usar el reemplazo de variables en la cadena, de lo contrario, si usa una variable que cambia, la secuencia de comandos no se puede almacenar en caché. En su lugar, obtenga la variable usando: vars.get("myVar"). Vea los ejemplos de Groovy a continuación.
Ejemplos (Expresión variable)
  • ${__groovy(vars.get("myVar") != "Invalid" )} (Groovy check myVar no es igual a Invalid)
  • ${__groovy(vars.get("myInt").toInteger() <=4 )} (Groovy check myInt es menor o igual a 4)
  • ${__groovy(vars.get("myMissing") != null )} (Groovy verifique si la variable myMissing no está configurada)
  • ${__jexl3(${CONTAR} < 10)}
  • ${RESULTADO}
  • ${JMeterThread.last_sample_ok} (verifique si la última muestra tuvo éxito)
^

Mientras que controlador

El controlador while ejecuta a sus hijos hasta que la condición es " falsa ".

JMeter expondrá el índice de bucle como una variable llamada __jm__<Nombre de su elemento>__idx . Entonces, por ejemplo, si su controlador While se llama WC, entonces puede acceder al índice de bucle a través de ${__jm__WC__idx} . El índice comienza en 0

Posibles valores de condición:

  • en blanco: sale del ciclo cuando falla la última muestra en el ciclo
  • LAST : sale del bucle cuando falla la última muestra del bucle. Si la última muestra justo antes del ciclo falló, no ingrese el ciclo.
  • De lo contrario, salga (o no ingrese) del bucle cuando la condición sea igual a la cadena " falso "
La condición puede ser cualquier variable o función que finalmente se evalúe como la cadena " falso ". Esto permite el uso de __jexl3 , función __groovy , propiedades o variables según sea necesario.

Tenga en cuenta que la condición se evalúa dos veces, una antes de comenzar a muestrear niños y otra al final del muestreo de niños, por lo que poner funciones no idempotentes en Condición (como __contador ) puede presentar problemas.

Por ejemplo:
  • ${VAR} - donde VAR se establece en falso por algún otro elemento de prueba
  • ${__jexl3(${C}==10)}
  • ${__jexl3("${VAR2}"=="abcd")}
  • ${_P(propiedad)} - donde la propiedad se establece en " falso " en otro lugar
Captura de pantalla del panel de control del controlador while
Captura de pantalla del panel de control del controlador while

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol y se usa para nombrar la transacción.
No
Condición
en blanco, LAST o variable/función
No
^

Controlador de interruptores

El Switch Controller actúa como el Interleave Controller en el sentido de que ejecuta uno de los elementos subordinados en cada iteración, pero en lugar de ejecutarlos en secuencia, el controlador ejecuta el elemento definido por el valor del switch.

El valor del interruptor también puede ser un nombre.

Si el valor del interruptor está fuera de rango, ejecutará el elemento cero, que por lo tanto actúa como valor predeterminado para el caso numérico. También ejecuta el elemento cero si el valor es la cadena vacía.

Si el valor no es numérico (y no está vacío), Switch Controller busca el elemento con el mismo nombre (las mayúsculas y minúsculas son significativas). Si ninguno de los nombres coincide, se selecciona el elemento denominado " predeterminado " (mayúsculas y minúsculas no significativas). Si no hay un valor predeterminado, entonces no se selecciona ningún elemento y el controlador no ejecutará nada.

Captura de pantalla del panel de control del controlador de interruptores
Captura de pantalla del panel de control del controlador de interruptores

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Cambiar valor
El número (o nombre) del elemento subordinado que se va a invocar. Los elementos están numerados desde 0. El valor predeterminado es 0
No
^

Para cada controlador

Un controlador ForEach recorre los valores de un conjunto de variables relacionadas. Cuando agrega muestras (o controladores) a un controlador ForEach, cada muestra (o controlador) se ejecuta una o más veces, donde durante cada ciclo la variable tiene un nuevo valor. La entrada debe constar de varias variables, cada una extendida con un guión bajo y un número. Cada una de estas variables debe tener un valor. Entonces, por ejemplo, cuando la variable de entrada tiene el nombre inputVar , se deberían haber definido las siguientes variables:

  • entradaVar_1 = Wendy
  • inputVar_2 = charles
  • inputVar_3 = pedro
  • inputVar_4 = juan

Nota: el separador " _ " ahora es opcional.

Cuando la variable de retorno se proporciona como " returnVar ", la colección de muestreadores y controladores bajo el controlador ForEach se ejecutará 4 veces consecutivas, y la variable de retorno tendrá los valores anteriores respectivos, que luego se pueden usar en los muestreadores.

JMeter expondrá el índice de bucle como una variable llamada __jm__<Nombre de su elemento>__idx . Entonces, por ejemplo, si su controlador de bucle se llama FEC, puede acceder al índice de bucle a través de ${__jm__FEC__idx} . El índice comienza en 0

Es especialmente adecuado para ejecutarse con el posprocesador de expresiones regulares. Esto puede "crear" las variables de entrada necesarias a partir de los datos de resultado de una solicitud anterior. Al omitir el separador " _ ", el controlador ForEach se puede usar para recorrer los grupos usando la variable de entrada refName_g , y también puede recorrer todos los grupos en todas las coincidencias usando una variable de entrada de la forma refName_${C }_g , donde C es una variable de contador.

El controlador ForEach no ejecuta ninguna muestra si inputVar_1 es nulo . Este sería el caso si la expresión regular no arrojara coincidencias.
Captura de pantalla del panel de control de ForEach Controller
Captura de pantalla del panel de control de ForEach Controller

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Prefijo de variable de entrada
Prefijo para los nombres de las variables que se utilizarán como entrada. El valor predeterminado es una cadena vacía como prefijo.
No
Índice de inicio para bucle
Índice de inicio (exclusivo) para las variables de bucle (el primer elemento está en el índice de inicio + 1)
No
Índice final para bucle
Índice final (inclusivo) para bucle sobre variables
No
Variable de salida
El nombre de la variable que se puede utilizar en el bucle para su sustitución en los muestreadores. El valor predeterminado es un nombre de variable vacío, que probablemente no sea el deseado.
No
Separador de uso
Si no está marcado, se omite el separador " _ ".
Para cada ejemplo

Descargue este ejemplo (ver Figura 7). En este ejemplo, creamos un plan de prueba que envía una solicitud HTTP particular solo una vez y envía otra solicitud HTTP a cada enlace que se puede encontrar en la página.

Figura 7 - Ejemplo de controlador ForEach
Figura 7 - Ejemplo de controlador ForEach

Configuramos el Grupo de subprocesos para un solo subproceso y un valor de recuento de bucles de uno. Puede ver que agregamos una solicitud HTTP al grupo de subprocesos y otra solicitud HTTP al controlador ForEach.

Después de la primera solicitud HTTP, se agrega un extractor de expresiones regulares, que extrae todos los enlaces html de la página de retorno y los coloca en la variable inputVar.

En el bucle ForEach, se agrega una muestra HTTP que solicita todos los enlaces que se extrajeron de la primera página HTML devuelta.

Para cada ejemplo

Aquí hay otro ejemplo que puede descargar. Esto tiene dos expresiones regulares y controladores ForEach. El primer RE coincide, pero el segundo no, por lo que el segundo controlador ForEach no ejecuta muestras.

Figura 8 - Ejemplo 2 del controlador ForEach
Figura 8 - Ejemplo 2 del controlador ForEach

El grupo de subprocesos tiene un solo subproceso y un número de bucles de dos.

El ejemplo 1 utiliza JavaTest Sampler para devolver la cadena " abcd ".

Regex Extractor usa la expresión (\w)\s que coincide con una letra seguida de un espacio y devuelve la letra (no el espacio). Cualquier coincidencia tiene como prefijo la cadena " inputVar ".

El controlador ForEach extrae todas las variables con el prefijo " inputVar_ " y ejecuta su muestra, pasando el valor en la variable " returnVar ". En este caso establecerá la variable a los valores " a " " b " y " c " a su vez.

For 1 Sampler es otro Java Sampler que utiliza la variable de retorno " returnVar " como parte de la etiqueta de muestra y como datos de muestra.

Sample 2 , Regex 2 y For 2 son casi idénticos, excepto que Regex se ha cambiado a " (\w)\sx ", que claramente no coincidirá. Por lo tanto , For 2 Sampler no se ejecutará.

^

Controlador de módulo

El controlador del módulo proporciona un mecanismo para sustituir fragmentos del plan de prueba en el plan de prueba actual en tiempo de ejecución.

Un fragmento de plan de prueba consta de un controlador y todos los elementos de prueba (muestras, etc.) que contiene. El fragmento se puede ubicar en cualquier grupo de subprocesos. Si el fragmento está ubicado en un grupo de subprocesos, su controlador se puede desactivar para evitar que el fragmento se ejecute excepto por el controlador del módulo. O puede almacenar los fragmentos en un grupo de subprocesos ficticio y deshabilitar todo el grupo de subprocesos.

Puede haber múltiples fragmentos, cada uno con una serie diferente de muestras debajo de ellos. El controlador del módulo se puede usar para cambiar fácilmente entre estos múltiples casos de prueba simplemente eligiendo el controlador apropiado en su cuadro desplegable. Esto proporciona comodidad para ejecutar muchos planes de prueba alternativos de forma rápida y sencilla.

Un nombre de fragmento se compone del nombre del controlador y todos sus nombres principales. Por ejemplo:

Plan de prueba/Protocolo: JDBC/Control/Controlador intercalado (Módulo 1)

Cualquier fragmento utilizado por el controlador del módulo debe tener un nombre único , ya que el nombre se utiliza para encontrar el controlador de destino cuando se vuelve a cargar un plan de prueba. Por esta razón, es mejor asegurarse de que el nombre del controlador se cambie del predeterminado, como se muestra en el ejemplo anterior; de lo contrario, se puede crear un duplicado accidentalmente cuando se agregan nuevos elementos al plan de prueba.

Captura de pantalla del panel de control del controlador del módulo
Captura de pantalla del panel de control del controlador del módulo

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
Módulo para ejecutar
El controlador del módulo proporciona una lista de todos los controladores cargados en la interfaz gráfica de usuario. Seleccione el que desea sustituir en tiempo de ejecución.
^

Incluir controlador

El controlador de inclusión está diseñado para utilizar un archivo JMX externo. Para usarlo, cree un Fragmento de prueba debajo del Plan de prueba y agregue los muestreadores, controladores, etc. que desee debajo. Luego guarde el plan de prueba. El archivo ahora está listo para incluirse como parte de otros planes de prueba.

Para mayor comodidad, también se puede agregar un grupo de subprocesos en el archivo JMX externo para fines de depuración. Se puede utilizar un controlador de módulo para hacer referencia al fragmento de prueba. El grupo de subprocesos se ignorará durante el proceso de inclusión.

Si la prueba utiliza un administrador de cookies o variables definidas por el usuario, estas deben colocarse en el plan de prueba de nivel superior, no en el archivo incluido; de lo contrario, no se garantiza que funcionen.

Este elemento no admite variables/funciones en el campo de nombre de archivo.
Sin embargo, si se define la propiedad includecontroller.prefix , el contenido se utiliza como prefijo de la ruta.
Cuando use el controlador de inclusión e incluya el mismo archivo JMX, asegúrese de nombrar el controlador de inclusión de manera diferente para evitar enfrentar el problema conocido Bug 50898 .

Si el archivo no se puede encontrar en la ubicación proporcionada por prefijo + nombre de archivo , el controlador intenta abrir el nombre de archivo relativo al directorio de inicio de JMX.

Captura de pantalla del panel de control del controlador de inclusión
Captura de pantalla del panel de control del controlador de inclusión

Parámetros

Atributo
Descripción
Requerido
Nombre del archivo
El archivo a incluir.
^

Controlador de transacciones

Transaction Controller genera una muestra adicional que mide el tiempo total necesario para realizar los elementos de prueba anidados.

Nota: cuando se marca la casilla de verificación " Incluir duración del temporizador y pre-postprocesadores en la muestra generada ", el tiempo incluye todo el procesamiento dentro del alcance del controlador, no solo las muestras.

Hay dos modos de funcionamiento:

  • se agrega una muestra adicional después de las muestras anidadas
  • se agrega una muestra adicional como padre de las muestras anidadas

El tiempo de muestra generado incluye todos los tiempos para los muestreadores anidados, excluyendo de forma predeterminada (desde 2.11) los temporizadores y el tiempo de procesamiento de los pre/postprocesadores, a menos que se marque la casilla de verificación " Incluir la duración del cronómetro y los pre-postprocesadores en la muestra generada ". Dependiendo de la resolución del reloj, puede ser un poco más largo que la suma de los muestreadores individuales más los temporizadores. El reloj puede funcionar después de que el controlador registró la hora de inicio, pero antes de que comience la primera muestra. Del mismo modo al final.

La muestra generada solo se considera correcta si todas sus submuestras lo son.

En el modo principal, las muestras individuales todavía se pueden ver en el Oyente de vista de árbol, pero ya no aparecen como entradas separadas en otros Oyentes. Además, las submuestras no aparecen en los archivos de registro CSV, pero se pueden guardar en archivos XML.

En el modo principal, se pueden agregar aserciones (etc.) al controlador de transacciones. Sin embargo, de forma predeterminada, se aplicarán tanto a las muestras individuales como a la muestra de transacción general. Para limitar el alcance de las afirmaciones, use un controlador simple para contener las muestras y agregue las afirmaciones al controlador simple. Actualmente, los controladores de modo principal no admiten correctamente los controladores de transacciones anidados de ningún tipo.
Captura de pantalla del panel de control de Transaction Controller
Captura de pantalla del panel de control de Transaction Controller

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol y se usa para nombrar la transacción.
Generar muestra principal
Si está marcada, la muestra se genera como padre de las otras muestras; de lo contrario, la muestra se genera como una muestra independiente.
Incluir la duración del temporizador y pre-postprocesadores en la muestra generada
Si incluir temporizador, retrasos previos y posteriores al procesamiento en la muestra generada. El valor predeterminado es falso
^

Controlador de grabación

El controlador de grabación es un marcador de posición que indica dónde debe grabar las muestras el servidor proxy. Durante la ejecución de prueba, no tiene ningún efecto, similar al controlador simple. Sin embargo, durante la grabación con HTTP(S) Test Script Recorder , todas las muestras grabadas se guardarán de forma predeterminada en el controlador de grabación.

Captura de pantalla del panel de control del controlador de grabación
Captura de pantalla del panel de control del controlador de grabación

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este controlador que se muestra en el árbol.
No
^

Controlador de Sección Crítica

El controlador de sección crítica garantiza que sus elementos secundarios (muestreadores/controladores, etc.) serán ejecutados por un solo subproceso, ya que se tomará un bloqueo con nombre antes de ejecutar los elementos secundarios del controlador.

Captura de pantalla del panel de control del controlador de secciones críticas
Captura de pantalla del panel de control del controlador de secciones críticas

La figura a continuación muestra un ejemplo del uso del controlador de sección crítica, en la figura a continuación, 2 controladores de sección crítica aseguran que:

  • DS2-${__threadNum} es ejecutado solo por un subproceso a la vez
  • DS4-${__threadNum} solo lo ejecuta un subproceso a la vez
Plan de prueba utilizando el controlador de sección crítica
Plan de prueba utilizando el controlador de sección crítica

Parámetros

Atributo
Descripción
Requerido
Nombre de bloqueo
Bloqueo que será tomado por el controlador, asegúrese de usar diferentes nombres de bloqueo para secciones no relacionadas
El controlador de sección crítica toma bloqueos solo dentro de una JVM, por lo que si usa pruebas distribuidas, asegúrese de que su caso de uso no se base en todos los subprocesos del bloqueo de todas las JVM.
^
^

18.3 Oyentes


La mayoría de los oyentes realizan varias funciones además de "escuchar" los resultados de las pruebas. También proporcionan medios para ver, guardar y leer los resultados de las pruebas guardadas.

Tenga en cuenta que los oyentes se procesan al final del ámbito en el que se encuentran.

El guardado y lectura de los resultados de las pruebas es genérico. Los diversos oyentes tienen un panel en el que se puede especificar el archivo en el que se escribirán (o leerán) los resultados. De forma predeterminada, los resultados se almacenan como archivos XML, normalmente con una extensión " .jtl ". Almacenar como CSV es la opción más eficiente, pero es menos detallada que XML (la otra opción disponible).

Los oyentes no procesan datos de muestra en el modo CLI, pero los datos sin procesar se guardarán si se ha configurado un archivo de salida. Para analizar los datos generados por una ejecución de CLI, debe cargar el archivo en el Listener apropiado.

Para leer los resultados existentes y mostrarlos, utilice el botón Examinar del panel de archivos para abrir el archivo.

Si desea borrar los datos actuales antes de cargar un nuevo archivo, use el elemento de menú Ejecutar  →  Borrar ( Ctrl  +  Shift  +  E ) o Ejecutar  →  Borrar todo ( Ctrl  +  E ) antes de cargar el archivo.

Los resultados se pueden leer desde archivos en formato XML o CSV. Al leer archivos de resultados CSV, el encabezado (si está presente) se usa para determinar qué campos están presentes. Para interpretar correctamente un archivo CSV sin encabezado, se deben establecer las propiedades apropiadas en jmeter.properties .

Los archivos XML escritos por JMeter tienen la versión 1.0 declarada en el encabezado, mientras que el archivo real se serializa con las reglas 1.1. (Esto se hace por razones de compatibilidad histórica; consulte el error 59973 y el error 58679 ). Esto hace que los analizadores XML estrictos fallen. Considere usar analizadores XML no estrictos para leer archivos JTL.

El nombre del archivo puede contener referencias a funciones y/o variables. Sin embargo, las referencias a variables no funcionan en el modo cliente-servidor (las funciones funcionan bien). Esto se debe a que el archivo se crea en el cliente y el cliente no ejecuta la prueba localmente, por lo que no configura las variables.

Los oyentes pueden usar mucha memoria si hay muchas muestras. La mayoría de los oyentes actualmente guardan una copia de cada muestra en su alcance, además de:

  • Escritor de datos simple
  • Oyente BeanShell/JSR223
  • Visualizador de correo
  • Informe resumido

Los siguientes oyentes ya no necesitan guardar copias de cada muestra. En su lugar, se agregan las muestras con el mismo tiempo transcurrido. Ahora se necesita menos memoria, especialmente si la mayoría de las muestras solo toman uno o dos segundos como máximo.

  • Informe agregado
  • Gráfico agregado

Para minimizar la cantidad de memoria necesaria, use Simple Data Writer y use el formato CSV.

Las variables de JMeter se pueden guardar en los archivos de salida. Esto solo se puede especificar mediante una propiedad. Consulte las variables de muestra de oyentes para obtener más información.

Para obtener detalles completos sobre la configuración de los elementos predeterminados que se guardarán, consulte la documentación de Configuración predeterminada del oyente . Para obtener detalles sobre el contenido de los archivos de salida, consulte el formato de registro CSV o el formato de registro XML .

Las entradas en jmeter.properties se utilizan para definir los valores predeterminados; estos se pueden anular para oyentes individuales mediante el botón Configurar, como se muestra a continuación. La configuración en jmeter.properties también se aplica al agente de escucha que se agrega mediante el indicador de línea de comando -l .

La siguiente figura muestra un ejemplo del panel de configuración del archivo de resultados

Panel de configuración del archivo de resultados
Panel de configuración del archivo de resultados

Parámetros

Atributo
Descripción
Requerido
Nombre del archivo
Nombre del archivo que contiene los resultados de la muestra. El nombre del archivo se puede especificar utilizando un nombre de ruta relativo o absoluto. Las rutas relativas se resuelven en relación con el directorio de trabajo actual (que por defecto es el directorio bin/ ). JMeter también admite rutas relativas al directorio que contiene el plan de prueba actual (archivo JMX). Si el nombre de la ruta comienza con " ~/ " (o lo que sea que esté en la propiedad jmeter.save.saveservice.base_prefix JMeter), se supone que la ruta es relativa a la ubicación del archivo JMX.
No
Navegar …
Botón de búsqueda de archivos
No
errores
Seleccione esto para escribir/leer solo los resultados con errores
No
Éxitos
Seleccione esto para escribir/leer solo los resultados sin errores. Si no se selecciona Errores ni Éxitos , se procesan todos los resultados.
No
Configurar
Botón Configurar, ver más abajo
No

Ejemplo de configuración para guardar resultados

Los oyentes se pueden configurar para guardar diferentes elementos en los archivos de registro de resultados (JTL) utilizando la ventana emergente de configuración como se muestra a continuación. Los valores predeterminados se definen como se describe en la documentación de configuración predeterminada de escucha . Los elementos con ( CSV ) después del nombre solo se aplican al formato CSV; los elementos con ( XML ) solo se aplican al formato XML. Actualmente, el formato CSV no se puede utilizar para guardar elementos que incluyan saltos de línea.

Tenga en cuenta que las cookies, el método y la cadena de consulta se guardan como parte de la opción " Datos de muestra".

Captura de pantalla del panel de control de la configuración de guardado de resultados de muestra
Captura de pantalla del panel de control de la configuración de guardado de resultados de muestra
^

Resultados del gráfico

Los resultados del gráfico NO DEBEN UTILIZARSE durante la prueba de carga, ya que consume muchos recursos (memoria y CPU). Úselo solo para pruebas funcionales o durante la depuración y validación del plan de prueba.

El oyente Graph Results genera un gráfico simple que traza todos los tiempos de muestra. En la parte inferior del gráfico, la muestra actual (negro), el promedio actual de todas las muestras (azul), la desviación estándar actual (rojo) y la tasa de rendimiento actual (verde) se muestran en milisegundos.

El número de rendimiento representa el número real de solicitudes por minuto que manejó el servidor. Este cálculo incluye cualquier retraso que haya agregado a su prueba y el propio tiempo de procesamiento interno de JMeter. La ventaja de hacer el cálculo de esta manera es que este número representa algo real: su servidor, de hecho, manejó esa cantidad de solicitudes por minuto, y puede aumentar la cantidad de subprocesos y/o disminuir las demoras para descubrir el rendimiento máximo de su servidor. Mientras que si realizó cálculos que excluyeron los retrasos y el procesamiento de JMeter, no estaría claro qué podría concluir a partir de ese número.

Captura de pantalla del panel de control de resultados de gráficos
Captura de pantalla del panel de control de resultados de gráficos

La siguiente tabla describe brevemente los elementos del gráfico. Se pueden encontrar más detalles sobre el significado preciso de los términos estadísticos en la web, por ejemplo, Wikipedia, o consultando un libro sobre estadísticas.

  • Datos : trace los valores de datos reales
  • Promedio - trace el Promedio
  • Mediana : trace la mediana (valor medio)
  • Desviación : trace la desviación estándar (una medida de la variación)
  • Rendimiento : represente el número de muestras por unidad de tiempo

Las cifras individuales en la parte inferior de la pantalla son los valores actuales. " Última muestra " es el tiempo de muestra actual transcurrido, que se muestra en el gráfico como " Datos ".

El valor que se muestra en la parte superior izquierda del gráfico es el máximo del percentil 90 del tiempo de respuesta.

^

Resultados de la afirmación

Los resultados de la aserción NO DEBEN UTILIZARSE durante la prueba de carga, ya que consume muchos recursos (memoria y CPU). Úselo solo para pruebas funcionales o durante la depuración y validación del plan de prueba.

El visualizador de resultados de aserción muestra la etiqueta de cada muestra tomada. También informa fallas de cualquier aserción que sea parte del plan de prueba.

Captura de pantalla del panel de control de los resultados de la aserción
Captura de pantalla del panel de control de resultados de aserción
^

Ver árbol de resultados

Ver el árbol de resultados NO DEBE UTILIZARSE durante la prueba de carga, ya que consume muchos recursos (memoria y CPU). Úselo solo para pruebas funcionales o durante la depuración y validación del plan de prueba.
Ver árbol de resultados muestra un árbol de todas las respuestas de muestra, lo que le permite ver la respuesta de cualquier muestra. Además de mostrar la respuesta, puede ver el tiempo que tomó obtener esta respuesta y algunos códigos de respuesta. Tenga en cuenta que el panel Solicitud solo muestra los encabezados agregados por JMeter. No muestra ningún encabezado (como Host ) que pueda agregar la implementación del protocolo HTTP.

Hay varias formas de ver la respuesta, que se pueden seleccionar mediante un cuadro desplegable en la parte inferior del panel izquierdo.

renderizadorDescripción
Probador de CSS/JQuery El CSS/JQuery Tester solo funciona para respuestas de texto. Muestra el texto sin formato en el panel superior. El botón " Probar " permite al usuario aplicar el CSS/JQuery al panel superior y los resultados se mostrarán en el panel inferior.
El motor de expresión CSS/JQuery puede ser JSoup o Jodd, la sintaxis de estas 2 implementaciones difiere ligeramente.
Por ejemplo, el Selector a[class=sectionlink] con el atributo href aplicado a la página de funciones de JMeter actual da el siguiente resultado:
Recuento de coincidencias: 74
Coincidencia[1]=#funciones
Partido[2]=#qué_puede_hacer
Partido[3]=#dónde
Partido[4]=#cómo
Partido[5]=#función_ayudante
Coincidencia[6]=#funciones
Coincidencia[7]=#__regexFunción
Coincidencia[8]=#__regexFunction_parms
Partido[9]=#__contador
… y así …

Documento La vista Documento mostrará el texto extraído de varios tipos de documentos como Microsoft Office (Word, Excel, PowerPoint 97-2003, 2007-2010 (openxml), Apache OpenOffice (writer, calc, impress), HTML, gzip, jar/zip archivos (lista de contenido) y algunos metadatos en archivos "multimedia" como mp3, mp4, flv, etc. La lista completa de formatos compatibles está disponible en la página de formato Apache Tika.
Un requisito para la vista Documento es descargar el paquete binario de Apache Tika ( tika-app-xxjar ) y colocarlo en el directorio JMETER_HOME/lib .
Si el documento tiene más de 10 MB, no se mostrará. Para cambiar este límite, establezca la propiedad de JMeter document.max_size (la unidad es un byte) o establezca en 0 para eliminar el límite.
HTML La vista HTML intenta representar la respuesta como HTML. Es probable que el HTML renderizado se compare mal con la vista que se obtendría en cualquier navegador web; sin embargo, proporciona una aproximación rápida que es útil para la evaluación inicial de resultados.
No se descargan imágenes, hojas de estilo, etc.
HTML (descargar recursos) Si se selecciona la opción de vista HTML (descargar recursos) , el renderizador puede descargar imágenes, hojas de estilo, etc. a las que hace referencia el código HTML.
Fuente HTML formateada Si se selecciona la opción de vista con formato fuente HTML , el renderizador mostrará el código fuente HTML formateado y limpiado por Jsoup .
JSON La vista JSON mostrará la respuesta en estilo de árbol (también maneja JSON incrustado en JavaScript).
Probador de rutas JSON La vista JSON Path Tester le permitirá probar sus expresiones JSON-PATH y ver los datos extraídos de una respuesta en particular.
JSON JMESPath Tester La vista JSON JMESPath Tester le permitirá probar sus expresiones JMESPath y ver los datos extraídos de una respuesta particular.
Probador de expresiones regulares La vista Regexp Tester solo funciona para respuestas de texto. Muestra el texto sin formato en el panel superior. El botón " Probar " permite al usuario aplicar la expresión regular al panel superior y los resultados se mostrarán en el panel inferior.
El motor de expresiones regulares es el mismo que se usa en el Extractor de expresiones regulares.
Por ejemplo, el RE (JMeter\w*).* aplicado a la página de inicio de JMeter actual da el siguiente resultado:
Número de partidos: 26
Partido[1][0]=JMeter - Apache JMeter</título>
Partido[1][1]=JMeter
Coincidencia[2][0]=JMeter" title="JMeter" border="0"/></a>
Partido[2][1]=JMetro
Match[3][0]=JMeterCommitters">Contribuidores</a>
Partido[3][1]=JMeterCommitters
… y así …

El primer número entre [] es el número de coincidencia; el segundo número es el grupo. El grupo [0] es lo que coincida con todo el RE. El grupo [1] es lo que coincida con el primer grupo, es decir, (JMeter\w*) en este caso. Consulte la Figura 9b (a continuación).
Texto La vista Texto predeterminada muestra todo el texto contenido en la respuesta. Tenga en cuenta que esto solo funcionará si el tipo de contenido de la respuesta se considera texto. Si el tipo de contenido comienza con cualquiera de los siguientes, se considera binario; de lo contrario, se considera texto.
imagen/
audio/
video/

XML La vista XML mostrará la respuesta en estilo de árbol. Cualquier nodo DTD o nodo Prolog no aparecerá en el árbol; sin embargo, la respuesta puede contener esos nodos. Puede hacer clic con el botón derecho en cualquier nodo y expandir o contraer todos los nodos debajo de él.
Probador de XPath XPath Tester solo funciona para respuestas de texto. Muestra el texto sin formato en el panel superior. El botón " Probar " permite al usuario aplicar la consulta XPath al panel superior y los resultados se mostrarán en el panel inferior.
Probador de extractor de límites El Boundary Extractor Tester solo funciona para respuestas de texto. Muestra el texto sin formato en el panel superior. El botón " Probar " permite al usuario aplicar la consulta del extractor de límites al panel superior y los resultados se mostrarán en el panel inferior.

Desplazarse automáticamente? opción de permiso para mostrar el último nodo en la selección de árbol

A partir de la versión 3.2, el número de entradas en la Vista está restringido al valor de la propiedad view.results.tree.max_results , que tiene un valor predeterminado de 500 entradas. El comportamiento anterior se puede restaurar estableciendo la propiedad en 0 . Tenga cuidado, ya que esto podría consumir mucha memoria.

Con la opción Buscar , la mayoría de las vistas también permiten buscar los datos mostrados; el resultado de la búsqueda se resaltará en la pantalla de arriba. Por ejemplo, la siguiente captura de pantalla del panel de control muestra un resultado de la búsqueda de " Java ". Tenga en cuenta que la búsqueda opera en el texto visible, por lo que puede obtener resultados diferentes al buscar en las vistas Texto y HTML.
Nota: La expresión regular utiliza el motor Java (no el motor ORO como la vista Regular Expression Extractor o Regexp Tester).

Si no se proporciona ningún tipo de contenido , el contenido no se mostrará en ninguno de los paneles de Datos de respuesta. Puede usar Guardar respuestas en un archivo para guardar los datos en este caso. Tenga en cuenta que los datos de respuesta seguirán estando disponibles en el resultado de la muestra, por lo que aún se puede acceder a ellos mediante posprocesadores.

Si los datos de respuesta superan los 200 000, no se mostrarán. Para cambiar este límite, establezca la propiedad de JMeter view.results.tree.max_size . También puede guardar la respuesta completa en un archivo usando Guardar respuestas en un archivo .

Se pueden crear renderizadores adicionales. La clase debe implementar la interfaz org.apache.jmeter.visualizers.ResultRenderer y/o extender la clase abstracta org.apache.jmeter.visualizers.SamplerResultTab , y el código compilado debe estar disponible para JMeter (por ejemplo, agregándolo a lib/ directorio externo ).

Captura de pantalla del panel de control del árbol de resultados de vista
Captura de pantalla del panel de control del árbol de resultados de vista

El Panel de control (arriba) muestra un ejemplo de una pantalla HTML.
La Figura 9 (abajo) muestra un ejemplo de una pantalla XML.
La Figura 9a (abajo) muestra un ejemplo de una pantalla de probador Regexp.
La Figura 9b (abajo) muestra un ejemplo de una pantalla de Documento.

Figura 9 Ejemplo de pantalla XML
Figura 9 Ejemplo de pantalla XML
Figura 9a Ejemplo de pantalla de prueba Regexp
Figura 9a Ejemplo de pantalla de prueba Regexp
Figura 9b Visualización del documento de muestra (aquí PDF)
Figura 9b Visualización del documento de muestra (aquí PDF)
^

Informe agregado

El informe agregado crea una fila de tabla para cada solicitud con nombre diferente en su prueba. Para cada solicitud, totaliza la información de respuesta y proporciona el recuento de solicitudes, el mínimo, el máximo, el promedio, la tasa de error, el rendimiento aproximado (solicitud/segundo) y el rendimiento de Kilobytes por segundo. Una vez que se realiza la prueba, el rendimiento es el real durante toda la prueba.

El rendimiento se calcula desde el punto de vista del objetivo del muestreador (por ejemplo, el servidor remoto en el caso de muestras HTTP). JMeter tiene en cuenta el tiempo total durante el cual se han generado las solicitudes. Si hay otros muestreadores y temporizadores en el mismo subproceso, aumentarán el tiempo total y, por lo tanto, reducirán el valor de rendimiento. Por lo tanto, dos muestreadores idénticos con nombres diferentes tendrán la mitad del rendimiento de dos muestreadores con el mismo nombre. Es importante elegir correctamente los nombres de las muestras para obtener los mejores resultados del informe agregado.

El cálculo de los valores de la mediana y la línea del 90 % (percentil 90 ) requiere memoria adicional. JMeter ahora combina muestras con el mismo tiempo transcurrido, por lo que se utiliza mucha menos memoria. Sin embargo, para las muestras que toman más de unos pocos segundos, la probabilidad es que menos muestras tengan tiempos idénticos, en cuyo caso se necesitará más memoria. Tenga en cuenta que puede usar este oyente después para volver a cargar un archivo de resultados CSV o XML, que es la forma recomendada de evitar impactos en el rendimiento. Consulte el Informe resumido para ver un Listener similar que no almacena muestras individuales y, por lo tanto, necesita una memoria constante.

A partir de JMeter 2.12, puede configurar los 3 valores de percentil que desea calcular, esto se puede hacer configurando las propiedades:
  • added_rpt_pct1 : predeterminado en el percentil 90
  • added_rpt_pct2 : por defecto es el percentil 95
  • added_rpt_pct3 : por defecto es el percentil 99
  • Etiqueta - La etiqueta de la muestra. Si se selecciona "¿ Incluir el nombre del grupo en la etiqueta? ", el nombre del grupo de subprocesos se agrega como prefijo. Esto permite clasificar etiquetas idénticas de diferentes grupos de hilos por separado si es necesario.
  • # Samples - El número de muestras con la misma etiqueta
  • Promedio : el tiempo promedio de un conjunto de resultados
  • Mediana : la mediana es el tiempo en medio de un conjunto de resultados. El 50 % de las muestras no tomó más de este tiempo; el resto tomó al menos el mismo tiempo.
  • Línea del 90 %: el 90 % de las muestras no tomó más de este tiempo. Las muestras restantes tomaron al menos tanto tiempo como este. ( percentil 90 )
  • Línea del 95 %: el 95 % de las muestras no tomó más de este tiempo. Las muestras restantes tardaron al menos tanto como esto. ( percentil 95 )
  • Línea del 99 %: el 99 % de las muestras no tomó más de este tiempo. Las muestras restantes tardaron al menos tanto como esto. ( percentil 99 )
  • Min - El tiempo más corto para las muestras con la misma etiqueta
  • Max: el tiempo más largo para las muestras con la misma etiqueta
  • Error % - Porcentaje de solicitudes con errores
  • Rendimiento : el rendimiento se mide en solicitudes por segundo/minuto/hora. La unidad de tiempo se elige de modo que la tasa mostrada sea al menos 1,0. Cuando el rendimiento se guarda en un archivo CSV, se expresa en solicitudes/segundo, es decir, 30,0 solicitudes/minuto se guardan como 0,5.
  • KB/s recibidos : el rendimiento medido en kilobytes recibidos por segundo
  • KB/s enviados : el rendimiento medido en kilobytes enviados por segundo

Los tiempos están en milisegundos.

Captura de pantalla del panel de control del informe agregado
Captura de pantalla del panel de control del informe agregado

La siguiente figura muestra un ejemplo de selección de la casilla de verificación " Incluir nombre de grupo ".

Muestra "
Ejemplo de pantalla " Incluir nombre de grupo "
^

Ver resultados en tabla

Este visualizador crea una fila para cada resultado de muestra. Al igual que Ver árbol de resultados , este visualizador usa mucha memoria.

De forma predeterminada, solo muestra las muestras principales (principales); no muestra las submuestras (muestras secundarias). JMeter tiene una casilla de verificación " ¿Muestras secundarias? ". Si se selecciona, se muestran las submuestras en lugar de las muestras principales.

Captura de pantalla del panel de control de la vista de resultados en la tabla
Captura de pantalla del Panel de control de Ver resultados en la tabla
^

Escritor de datos simple

Este oyente puede registrar los resultados en un archivo, pero no en la interfaz de usuario. Está destinado a proporcionar un medio eficiente para registrar datos al eliminar la sobrecarga de la GUI. Cuando se ejecuta en modo CLI, el indicador -l se puede usar para crear un archivo de datos. Los campos a guardar están definidos por las propiedades de JMeter. Consulte el archivo jmeter.properties para obtener más información.
Captura de pantalla del panel de control de Simple Data Writer
Captura de pantalla del panel de control de Simple Data Writer
^

Gráfico agregado

El gráfico agregado es similar al informe agregado. La principal diferencia es que el gráfico agregado proporciona una manera fácil de generar gráficos de barras y guardar el gráfico como un archivo PNG.
Captura de pantalla del panel de control del gráfico agregado
Captura de pantalla del panel de control del gráfico agregado

La siguiente figura muestra un ejemplo de configuración para dibujar este gráfico.

Configuración de gráficos agregados
Configuración de gráficos agregados
Tenga en cuenta: todos estos parámetros no se guardan en el script JMeter JMX.

Parámetros

Atributo
Descripción
Requerido
Configuración de columnas
  • Columnas para mostrar: Elija la(s) columna(s) para mostrar en el gráfico.
  • Color de los rectángulos: haga clic en el rectángulo de color derecho para abrir un cuadro de diálogo emergente para elegir un color personalizado para la columna.
  • Color de primer plano Permite cambiar el color del texto del valor.
  • Fuente de valor: permite definir la configuración de fuente para el texto.
  • ¿Dibujar barra de contornos? Para dibujar o no la línea de borde en el gráfico de barras
  • ¿Mostrar agrupación de números? Mostrar o no la agrupación de números en las etiquetas del eje Y.
  • ¿Etiquetas de valor verticales? Cambiar la orientación de la etiqueta de valor. (El valor predeterminado es horizontal)
  • Selección de etiqueta de columna: filtrar por etiqueta de resultado. Se puede usar una expresión regular, por ejemplo: .*Transacción.*
    Antes de mostrar el gráfico, haga clic en el botón Aplicar filtro para actualizar los datos internos.
Título
Defina el título del gráfico en el encabezado del gráfico. El valor vacío es el valor predeterminado: " Gráfico agregado ". El botón Sincronizar con nombre define el título con la etiqueta del oyente. Y defina la configuración de fuente para el título del gráfico
No
Tamaño del gráfico
Calcule el tamaño del gráfico por el ancho y el alto según el tamaño de la ventana del JMeter actual. Utilice los campos Ancho y Alto para definir un tamaño personalizado. La unidad es el píxel.
No
Configuración del eje X
Defina la longitud máxima de la etiqueta del eje X (en píxeles).
No
Configuración del eje Y
Defina un valor máximo personalizado para el eje Y.
No
Leyenda
Definir la configuración de ubicación y fuente para la leyenda del gráfico
^

Gráfico de tiempo de respuesta

El gráfico de tiempo de respuesta dibuja un gráfico de líneas que muestra la evolución del tiempo de respuesta durante la prueba, para cada solicitud etiquetada. Si existen muchas muestras para la misma marca de tiempo, se muestra el valor medio.
Captura de pantalla del panel de control del gráfico de tiempo de respuesta
Captura de pantalla del panel de control del gráfico de tiempo de respuesta

La siguiente figura muestra un ejemplo de configuración para dibujar este gráfico.

Configuración del gráfico de tiempo de respuesta
Configuración del gráfico de tiempo de respuesta
Tenga en cuenta: todos estos parámetros se guardan en el archivo JMeter .jmx .

Parámetros

Atributo
Descripción
Requerido
Intervalo (ms)
El tiempo en milisegundos para el intervalo del eje X. Las muestras se agrupan de acuerdo con este valor. Antes de mostrar el gráfico, haga clic en el botón Aplicar intervalo para actualizar los datos internos.
Selección de etiquetas de muestra
Filtrar por etiqueta de resultado. Se puede usar una expresión regular, ej. .*Transacción.* . Antes de mostrar el gráfico, haga clic en el botón Aplicar filtro para actualizar los datos internos.
No
Título
Defina el título del gráfico en el encabezado del gráfico. El valor vacío es el valor predeterminado: " Gráfico de tiempo de respuesta ". El botón Sincronizar con nombre define el título con la etiqueta del oyente. Y defina la configuración de fuente para el título del gráfico
No
Configuración de línea
Defina el ancho de la línea. Defina el tipo de cada punto de valor. Elija ninguno para tener una línea sin marca
Tamaño del gráfico
Calcule el tamaño del gráfico por el ancho y el alto según el tamaño de la ventana del JMeter actual. Utilice los campos Ancho y Alto para definir un tamaño personalizado. La unidad es el píxel.
No
Configuración del eje X
Personalice el formato de fecha de la etiqueta del eje X. La sintaxis es la API Java SimpleDateFormat .
No
Configuración del eje Y
Defina un valor máximo personalizado para el eje Y en milisegundos. Definir el incremento para la escala (en ms) Mostrar o no la agrupación de números en las etiquetas del eje Y.
No
Leyenda
Definir la configuración de ubicación y fuente para la leyenda del gráfico
^

Visualizador de correo

El visualizador de correo se puede configurar para enviar correo electrónico si una ejecución de prueba recibe demasiadas respuestas fallidas del servidor.

Captura de pantalla para Panel de control de Mailer Visualizer
Captura de pantalla del panel de control de Mailer Visualizer

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
De
Dirección de correo electrónico desde la que enviar mensajes.
destinatario(s)
Dirección de correo electrónico a la que enviar mensajes, separados por comas.
Asunto de éxito
Línea de asunto del correo electrónico para mensajes de éxito.
No
Límite de éxito
Una vez que se supera este número de respuestas exitosas después de haber alcanzado previamente el límite de fallas , se envía un correo electrónico de éxito. Por lo tanto, el remitente solo enviará mensajes en una secuencia de falla-éxito-falla-éxito, etc.
Sujeto de falla
Línea de asunto del correo electrónico para mensajes fallidos.
No
Límite de fallas
Una vez que se supera este número de respuestas fallidas, se envía un correo electrónico de falla, es decir, establezca el recuento en 0 para enviar un correo electrónico en la primera falla.
Anfitrión
Dirección IP o nombre de host del servidor SMTP (redirector de correo electrónico).
No
Puerto
Puerto del servidor SMTP (predeterminado en 25 ).
No
Acceso
Inicio de sesión utilizado para autenticarse.
No
Clave
Contraseña utilizada para autenticarse.
No
Seguridad de conexión
Tipo de cifrado para autenticación SMTP (SSL, TLS o ninguno).
No
Correo de prueba
Pulse este botón para enviar un correo de prueba
No
fallas
Un campo que mantiene un total acumulado de la cantidad de fallas recibidas hasta el momento.
No
^

Oyente BeanShell

BeanShell Listener permite el uso de BeanShell para procesar muestras para guardar, etc.

Para obtener detalles completos sobre el uso de BeanShell, consulte el sitio web de BeanShell.

Se recomienda encarecidamente la migración a JSR223 Listener + Groovy por motivos de rendimiento, compatibilidad con nuevas funciones de Java y mantenimiento limitado de la biblioteca BeanShell.

El elemento de prueba admite los métodos ThreadListener y TestListener . Estos deben definirse en el archivo de inicialización. Consulte el archivo BeanShellListeners.bshrc para ver definiciones de ejemplo.

Captura de pantalla del panel de control de BeanShell Listener
Captura de pantalla del panel de control de BeanShell Listener

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol. El nombre se almacena en la variable de script Label
Restablecer bsh.Interpreter antes de cada llamada
Si se selecciona esta opción, el intérprete se recreará para cada muestra. Esto puede ser necesario para algunos scripts de ejecución prolongada. Para obtener más información, consulte Prácticas recomendadas: secuencias de comandos BeanShell .
Parámetros
Parámetros para pasar al script BeanShell. Los parámetros se almacenan en las siguientes variables:
Parámetros
cadena que contiene los parámetros como una sola variable
bsh.args
Matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script BeanShell para ejecutar. El nombre del archivo se almacena en la variable de script FileName
No
Guion
El script BeanShell a ejecutar. El valor de retorno es ignorado.
Sí (a menos que se proporcione un archivo de script)

Antes de invocar el script, se configuran algunas variables en el intérprete BeanShell:

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - ( JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
    
  • props - (JMeterProperties - clase java.util.Properties ) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
  • sampleResult , prev - ( SampleResult ) - da acceso al SampleResult anterior
  • sampleEvent ( SampleEvent ) da acceso al evento de muestra actual

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

Si se define la propiedad beanshell.listener.init , se usa para cargar un archivo de inicialización, que se puede usar para definir métodos, etc. para usar en el script BeanShell.

^

Informe resumido

El informe de resumen crea una fila de tabla para cada solicitud con nombre diferente en su prueba. Esto es similar al Informe agregado , excepto que usa menos memoria.

El rendimiento se calcula desde el punto de vista del objetivo del muestreador (por ejemplo, el servidor remoto en el caso de muestras HTTP). JMeter tiene en cuenta el tiempo total durante el cual se han generado las solicitudes. Si hay otros muestreadores y temporizadores en el mismo subproceso, aumentarán el tiempo total y, por lo tanto, reducirán el valor de rendimiento. Por lo tanto, dos muestreadores idénticos con nombres diferentes tendrán la mitad del rendimiento de dos muestreadores con el mismo nombre. Es importante elegir correctamente las etiquetas de muestra para obtener los mejores resultados del Informe.

  • Etiqueta - La etiqueta de la muestra. Si se selecciona "¿ Incluir el nombre del grupo en la etiqueta? ", el nombre del grupo de subprocesos se agrega como prefijo. Esto permite clasificar etiquetas idénticas de diferentes grupos de hilos por separado si es necesario.
  • # Samples - El número de muestras con la misma etiqueta
  • Promedio : el tiempo promedio transcurrido de un conjunto de resultados
  • Min : el tiempo transcurrido más bajo para las muestras con la misma etiqueta
  • Max : el tiempo transcurrido más largo para las muestras con la misma etiqueta
  • estándar desarrollo - la desviación estándar del tiempo transcurrido de la muestra
  • Error % - Porcentaje de solicitudes con errores
  • Rendimiento : el rendimiento se mide en solicitudes por segundo/minuto/hora. La unidad de tiempo se elige de modo que la tasa mostrada sea al menos 1.0 . Cuando el rendimiento se guarda en un archivo CSV, se expresa en solicitudes/segundo, es decir, 30,0 solicitudes/minuto se guardan como 0,5 .
  • KB/s recibidos : el rendimiento medido en kilobytes por segundo
  • KB/s enviados : el rendimiento medido en kilobytes por segundo
  • Promedio Bytes : tamaño promedio de la respuesta de la muestra en bytes.

Los tiempos están en milisegundos.

Captura de pantalla del panel de control del informe resumido
Captura de pantalla del panel de control del informe resumido

La siguiente figura muestra un ejemplo de selección de la casilla de verificación " Incluir nombre de grupo ".

Muestra "
Ejemplo de pantalla " Incluir nombre de grupo "
^

Guardar respuestas en un archivo

Este elemento de prueba se puede colocar en cualquier parte del plan de prueba. Para cada muestra en su ámbito, creará un archivo de los Datos de respuesta. El uso principal para esto es en la creación de pruebas funcionales, pero también puede ser útil cuando la respuesta es demasiado grande para mostrarse en Ver resultados del árbol de escucha. El nombre del archivo se crea a partir del prefijo especificado, más un número (a menos que esté deshabilitado, consulte a continuación). La extensión del archivo se crea a partir del tipo de documento, si se conoce. Si no se conoce, la extensión del archivo se establece en ' desconocido'. Si la numeración está deshabilitada y la adición de un sufijo está deshabilitada, el prefijo del archivo se toma como el nombre completo del archivo. Esto permite generar un nombre de archivo fijo si es necesario. El nombre del archivo generado se almacena en la respuesta de muestra y se puede guardar en el archivo de salida del registro de prueba si es necesario.

La muestra actual se guarda primero, seguida de cualquier submuestra (muestras secundarias). Si se proporciona un nombre de variable, los nombres de los archivos se guardan en el orden en que aparecen las submuestras. Vea abajo.

Captura de pantalla del Panel de control de Guardar respuestas en un archivo
Captura de pantalla del Panel de control de Guardar respuestas en un archivo

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Prefijo de nombre de archivo (puede incluir carpetas)
Prefijo para los nombres de archivo generados; esto puede incluir un nombre de directorio. Las rutas relativas se resuelven en relación con el directorio de trabajo actual (que por defecto es el directorio bin/ ). JMeter también admite rutas relativas al directorio que contiene el plan de prueba actual (archivo JMX). Si el nombre de la ruta comienza con " ~/ " (o lo que sea que esté en la propiedad jmeter.save.saveservice.base_prefix JMeter), se supone que la ruta es relativa a la ubicación del archivo JMX.
Si las carpetas principales en el prefijo no existen, JMeter las creará y detendrá la prueba si falla.
Tenga en cuenta que el prefijo del nombre de archivo no debe contener datos relacionados con el subproceso, por lo tanto, no use ninguna variable ( ${varName} ) o funciones como ${__threadNum} en este campo
Nombre de variable que contiene el nombre del archivo guardado
Nombre de una variable en la que guardar el nombre del archivo generado (para que pueda usarse más adelante en el plan de prueba). Si hay submuestras, se agrega un sufijo numérico al nombre de la variable. Por ejemplo, si el nombre de la variable es NOMBRE DE ARCHIVO, el nombre del archivo de muestra principal se guarda en la variable NOMBRE DE ARCHIVO y los nombres de archivo de las muestras secundarias se guardan en NOMBRE DE ARCHIVO1 , NOMBRE DE ARCHIVO2 , etc.
No
Longitud mínima del número de secuencia
Si " No agregar número al prefijo " no está marcado, los números agregados al prefijo se rellenarán con 0 para que el prefijo tenga un tamaño de este valor. El valor predeterminado es 0 .
No
Guardar solo respuestas fallidas
Si se selecciona, solo se guardan las respuestas fallidas
Guardar solo respuestas exitosas
Si se selecciona, solo se guardan las respuestas exitosas
No agregue número al prefijo
Si se selecciona, no se agrega ningún número al prefijo. Si selecciona esta opción, asegúrese de que el prefijo sea único o el archivo se puede sobrescribir.
No agregue sufijo de tipo de contenido
Si se selecciona, no se agrega ningún sufijo. Si selecciona esta opción, asegúrese de que el prefijo sea único o el archivo se puede sobrescribir.
Agregar marca de tiempo
Si se selecciona, la fecha se incluirá en el sufijo del archivo con el siguiente formato aaaaMMdd-HHmm_
No guardar Transaction Controller SampleResult
Si se selecciona, se ignorará SamplerResult generado por Transaction Controller
^

Oyente JSR223

El JSR223 Listener permite que el código de script JSR223 se aplique a los resultados de la muestra.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Idioma
El lenguaje JSR223 a utilizar
Parámetros
Parámetros a pasar al script. Los parámetros se almacenan en las siguientes variables:
Parámetros
cadena que contiene los parámetros como una sola variable
argumentos
Matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script para ejecutar, si se usa una ruta de archivo relativa, será relativa al directorio al que hace referencia la propiedad del sistema " user.dir "
No
Caché de compilación de scripts
Cadena única en el plan de prueba que JMeter usará para almacenar en caché el resultado de la compilación del script si el idioma utilizado es compatible con la interfaz compilable (Groovy es uno de estos, java, beanshell y javascript no lo son).
Consulte la nota en la propiedad JSR223 Sampler Java System si está utilizando Groovy sin marcar esta opción
No
Guion
El script a ejecutar.
Sí (a menos que se proporcione un archivo de script)

Antes de invocar el script, se configuran algunas variables. Tenga en cuenta que estas son variables JSR223, es decir, se pueden usar directamente en el script.

Iniciar sesión
( Registrador ): se puede usar para escribir en el archivo de registro
Etiqueta
la etiqueta de cadena
Nombre del archivo
el nombre del archivo de script (si lo hay)
Parámetros
los parámetros (como una cadena)
argumentos
los parámetros como una matriz de cadenas (dividida en espacios en blanco)
ctx
( JMeterContext ) - da acceso al contexto
vars
( JMeterVariables ) - da acceso de lectura/escritura a las variables:
vars.get(clave);
vars.put(clave,valor);
vars.putObject("OBJ1",nuevo Objeto());
vars.getObject("OBJ2");
accesorios
(JMeterProperties - clase java.util.Properties ) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
muestraResultado , anterior
( SampleResult ) - da acceso a SampleResult
evento de muestra
( SampleEvent ) - da acceso al SampleEvent
dechado
( Sampler )- da acceso a la última muestra
AFUERA
System.out - por ejemplo, OUT.println("mensaje")

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

^

Generar resultados resumidos

Este elemento de prueba se puede colocar en cualquier parte del plan de prueba. Genera un resumen de la ejecución de la prueba hasta el momento en el archivo de registro y/o salida estándar. Se muestran los totales acumulados y diferenciales. La salida se genera cada n segundos (predeterminado 30 segundos) en el límite de tiempo adecuado, de modo que se sincronizarán varias ejecuciones de prueba al mismo tiempo.
Dado que una línea de resumen/diferencial se escribe solo si se emiten muestras, es posible que no se respete el intervalo de generación si su prueba no tiene una muestra generada dentro del intervalo.
Consulte el archivo jmeter.properties para conocer los elementos de configuración del resúmen:
# Defina la siguiente propiedad para iniciar automáticamente un resúmen con ese nombre
# (se aplica solo al modo CLI)
#resumen.name=resumen
#
# intervalo entre resúmenes (en segundos) por defecto 3 minutos
#resumen.intervalo=30
#
# Escribir mensajes en el archivo de registro
#resumen.log=true
#
# Escribir mensajes en System.out
#resumen.out=true
Este elemento está diseñado principalmente para ejecuciones por lotes (CLI). La salida se parece a lo siguiente:
etiqueta + 16 en 0:00:12 = 1,3/s Promedio: 1608 Min: 1163 Max: 2009 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta + 82 en 0:00:30 = 2,7/s Promedio: 1518 Min: 1003 Max: 2020 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 98 en 0:00:42 = 2,3/s Promedio: 1533 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 85 en 0:00:30 = 2,8/s Promedio: 1505 Min: 1008 Max: 2005 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 183 en 0:01:13 = 2,5/s Promedio: 1520 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 79 en 0:00:30 = 2,7/s Promedio: 1578 Min: 1089 Max: 2012 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 262 en 0:01:43 = 2,6/s Promedio: 1538 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 80 en 0:00:30 = 2,7/s Promedio: 1531 Min: 1013 Max: 2014 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 342 en 0:02:12 = 2,6/s Promedio: 1536 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 83 en 0:00:31 = 2,7/s Promedio: 1512 Min: 1003 Max: 1982 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 425 en 0:02:43 = 2,6/s Promedio: 1531 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 83 en 0:00:29 = 2,8/s Promedio: 1487 Min: 1023 Max: 2013 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 508 en 0:03:12 = 2,6/s Promedio: 1524 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 78 en 0:00:30 = 2,6/s Promedio: 1594 Min: 1013 Max: 2016 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 586 en 0:03:43 = 2,6/s Promedio: 1533 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 80 en 0:00:30 = 2,7/s Promedio: 1516 Min: 1013 Max: 2005 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 666 en 0:04:12 = 2,6/s Promedio: 1531 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 86 en 0:00:30 = 2,9/s Promedio: 1449 Min: 1004 Max: 2017 Err: 0 (0,00%) Activo: 5 Iniciado: 5 Finalizado: 0
etiqueta = 752 en 0:04:43 = 2,7/s Promedio: 1522 Min: 1003 Max: 2020 Err: 0 (0,00 %)
etiqueta + 65 en 0:00:24 = 2,7/s Promedio: 1579 Min: 1007 Max: 2003 Err: 0 (0,00%) Activo: 0 Iniciado: 5 Finalizado: 5
etiqueta = 817 en 0:05:07 = 2,7/s Promedio: 1526 Min: 1003 Max: 2020 Err: 0 (0,00 %)
La " etiqueta " es el nombre del elemento. El "+" significa que la línea es una línea delta, es decir, muestra los cambios desde la última salida.
El "=" significa que la línea es una línea total, es decir, muestra el total acumulado.
Las entradas en el archivo de registro de JMeter también incluyen marcas de tiempo. El ejemplo " 817 en 0:05:07 = 2,7/s " significa que hubo 817 muestras grabadas en 5 minutos y 7 segundos, y eso da como resultado 2,7 muestras por segundo.
Los tiempos Avg (Promedio), Min (Mínimo) y Max (Máximo) están en milisegundos.
" Err " significa número de errores (también se muestra como porcentaje).
Las dos últimas líneas aparecerán al final de una prueba. No se sincronizarán con el límite de tiempo adecuado. Tenga en cuenta que los deltas inicial y final pueden ser menores que el intervalo (en el ejemplo anterior, esto es 30 segundos). El primer delta generalmente será más bajo, ya que JMeter se sincroniza con el límite del intervalo. El último delta será más bajo, ya que la prueba generalmente no terminará en un límite de intervalo exacto.

La etiqueta se utiliza para agrupar los resultados de las muestras. Entonces, si tiene varios grupos de subprocesos y desea resumirlos todos, use la misma etiqueta o agregue el resumen al plan de prueba (para que todos los grupos de subprocesos estén dentro del alcance). Se pueden implementar diferentes agrupaciones de resumen utilizando etiquetas adecuadas y agregando los resúmenes a las partes apropiadas del plan de prueba.

En el modo CLI, de forma predeterminada, se configura un oyente de generación de resultados resumidos llamado " resumen ". Si ya ha agregado uno a su plan de prueba, asegúrese de nombrarlo de otra manera; de muestras totales + muestras ubicadas bajo el escucha Padre de Generar resultados resumidos).
Esto no es un error, sino una elección de diseño que permite resumir entre grupos de subprocesos.
Captura de pantalla del panel de control de generar resultados resumidos
Captura de pantalla del panel de control de generar resultados resumidos

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol. Aparece como la " etiqueta " en la salida. Los detalles de todos los elementos con la misma etiqueta se agregarán juntos.
^

Visualizador de Aserción de Comparación

El visualizador de aserción de comparación muestra los resultados de cualquier elemento de aserción de comparación .
Captura de pantalla del panel de control del visualizador de aserción de comparación
Captura de pantalla del panel de control del visualizador de aserción de comparación

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
^

Oyente de fondo

El agente de escucha de backend es un agente de escucha asíncrono que le permite conectar implementaciones personalizadas de BackendListenerClient . De forma predeterminada, se proporciona una implementación de Graphite.
Captura de pantalla del Panel de control de Backend Listener
Captura de pantalla del Panel de control de Backend Listener

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Implementación de escucha de back-end
Clase de la implementación BackendListenerClient .
Tamaño de la cola asíncrona
Tamaño de la cola que contiene SampleResults mientras se procesan de forma asíncrona.
Parámetros
Parámetros de la implementación BackendListenerClient .

Los siguientes parámetros se aplican a la implementación de GraphiteBackendListenerClient :

Parámetros

Atributo
Descripción
Requerido
GraphiteMetricsSender
org.apache.jmeter.visualizers.backend.graphite.TextGraphiteMetricsSender u org.apache.jmeter.visualizers.backend.graphite.PickleGraphiteMetricsSender
host de grafito
Host de servidor Graphite o InfluxDB (con el complemento Graphite habilitado)
puerto de grafito
Puerto de servidor Graphite o InfluxDB (con el complemento Graphite habilitado), el valor predeterminado es 2003 . Nota PickleGraphiteMetricsSender (puerto 2004 ) solo puede comunicarse con el servidor Graphite.
rootMetricsPrefix
Prefijo de métricas enviadas al backend. El valor predeterminado es " jmeter ". Tenga en cuenta que JMeter no agrega un separador entre el prefijo raíz y el nombre de muestra, por lo que actualmente se necesita el punto final.
solo resumen
Solo envía un resumen sin detalles. El valor predeterminado es verdadero .
muestrariosLista
Define los nombres (etiquetas) de los resultados de las muestras que se enviarán al back-end. Si useRegexpForSamplersList=false , esta es una lista de nombres separados por punto y coma. Si useRegexpForSamplersList=true , esta es una expresión regular que se comparará con los nombres.
useRegexpForSamplersList
Considere samplersList como una expresión regular para seleccionar las muestras para las que desea informar las métricas al backend. El valor predeterminado es falso .
percentiles
Los percentiles que desea enviar al backend. Un percentil puede contener una parte fraccionaria, por ejemplo, 12,5 . (El separador siempre es ".") La lista debe estar separada por punto y coma. Generalmente 3 o 4 valores deberían ser suficientes.

Consulte también Resultados en tiempo real para obtener más detalles.

Tablero de Grafana
Tablero de Grafana

Desde JMeter 3.2, una implementación que permite escribir directamente en InfluxDB con un esquema personalizado. Se llama InfluxdbBackendListenerClient . Los siguientes parámetros se aplican a la implementación de InfluxdbBackendListenerClient :

Parámetros

Atributo
Descripción
Requerido
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
InfluxdbUrl
URL de entrada (ejemplo: http://influxHost:8086/write?db=jmeter )
influjodbToken
Token de autenticación InfluxDB 2 (ejemplo: HE9yIdAPzWJDspH_tCc2UvdKZpX== ); desde 5.2.
No
solicitud
Nombre de la aplicación probada. Este valor se almacena en la medición de ' eventos ' como una etiqueta llamada ' aplicación '
medición
Medición según la referencia del protocolo de línea de entrada . El valor predeterminado es " jmeter ".
solo resumen
Solo envía un resumen sin detalles. El valor predeterminado es verdadero .
muestrasRegex
Expresión regular que se comparará con los nombres de las muestras y se enviará al back-end.
título de prueba
Nombre de la prueba. El valor predeterminado es Nombre de prueba . Este valor se almacena en la medición de ' eventos ' como un campo llamado ' texto '. JMeter genera automáticamente al inicio y al final de la prueba una anotación con este valor que termina con 'iniciado' y 'terminado'
etiquetas de eventos
Grafana permite mostrar la etiqueta para cada anotación. Puedes llenarlos aquí. Este valor se almacena en la medición de ' eventos ' como una etiqueta denominada ' etiquetas '.
No
percentiles
Los percentiles que desea enviar al backend. Un percentil puede contener una parte fraccionaria, por ejemplo 12,5 (el separador siempre es " . "). La lista debe estar separada por punto y coma. Generalmente, tres o cuatro valores deberían ser suficientes.
TAG_Lo que quieras
Puede agregar tantas etiquetas personalizadas como desee. Para cada uno de ellos, cree una nueva línea y prefije su nombre con " TAG_ " .
No

Consulte también los resultados en tiempo real y las anotaciones de Influxdb en Grafana para obtener más detalles. También hay una subsección sobre cómo configurar el oyente para InfluxDB v2 .

Desde JMeter 5.4, una implementación que escribe todos los resultados de muestra en InfluxDB. Se llama InfluxDBRawBackendListenerClient . Vale la pena señalar que esto utilizará más recursos que InfluxdbBackendListenerClient , tanto de JMeter como de InfluxDB debido al aumento de datos y escrituras individuales. Los siguientes parámetros se aplican a la implementación de InfluxDBRawBackendListenerClient :

Parámetros

Atributo
Descripción
Requerido
influxdbMetricsSender
org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender
InfluxdbUrl
URL de entrada (por ejemplo, http://influxHost:8086/write?db=jmeter o, para la nube, https://eu-central-1-1.aws.cloud2.influxdata.com/api/v2/write?org =org-id&depósito=jmeter)
influjodbToken
Token de autenticación InfluxDB 2 (por ejemplo, HE9yIdAPzWJDspH_tCc2UvdKZpX==)
No
medición
Medición según la referencia del protocolo de línea de entrada . El valor predeterminado es " jmeter ".
^
^

18.4 Elementos de configuración


Los elementos de configuración se pueden usar para establecer valores predeterminados y variables para su uso posterior por parte de los muestreadores. Tenga en cuenta que estos elementos se procesan al comienzo del ámbito en el que se encuentran, es decir, antes de cualquier muestra en el mismo ámbito.

Configuración del conjunto de datos CSV

CSV Data Set Config se usa para leer líneas de un archivo y dividirlas en variables. Es más fácil de usar que las funciones __CSVRead() y __StringFromFile() . Es muy adecuado para manejar un gran número de variables y también es útil para probar con valores "aleatorios" y únicos.

La generación de valores aleatorios únicos en tiempo de ejecución es costosa en términos de CPU y memoria, por lo tanto, cree los datos antes de la prueba. Si es necesario, los datos "aleatorios" del archivo se pueden usar junto con un parámetro de tiempo de ejecución para crear diferentes conjuntos de valores de cada ejecución, por ejemplo, usando concatenación, que es mucho más económico que generar todo en tiempo de ejecución.

JMeter permite cotizar valores; esto permite que el valor contenga un delimitador. Si " permitir datos entrecomillados " está habilitado, un valor puede estar entre comillas dobles. Estos se eliminan. Para incluir comillas dobles dentro de un campo entre comillas, utilice dos comillas dobles. Por ejemplo:

1,"2,3","4""5" =>
1
2,3
4"5

JMeter admite archivos CSV que tienen una línea de encabezado que define los nombres de las columnas. Para habilitar esto, deje el campo " Nombres de variables " vacío. Se debe proporcionar el delimitador correcto.

JMeter admite archivos CSV con datos entrecomillados que incluyen líneas nuevas.

De forma predeterminada, el archivo solo se abre una vez y cada subproceso utilizará una línea diferente del archivo. Sin embargo, el orden en que se pasan las líneas a los subprocesos depende del orden en que se ejecutan, que puede variar entre iteraciones. Las líneas se leen al comienzo de cada iteración de prueba. El nombre de archivo y el modo se resuelven en la primera iteración.

Consulte la descripción del modo Compartir a continuación para obtener opciones adicionales. Si desea que cada subproceso tenga su propio conjunto de valores, deberá crear un conjunto de archivos, uno para cada subproceso. Por ejemplo test1.csv , test2.csv , ..., test n .csv . Use el nombre de archivo test${__threadNum}.csv y establezca el " Modo de compartir " en " Subproceso actual ".

Las variables del conjunto de datos CSV se definen al comienzo de cada iteración de prueba. Como esto es después de que se completa el procesamiento de configuración, no se pueden usar para algunos elementos de configuración, como JDBC Config, que procesan su contenido en el momento de la configuración (consulte el error 40394 ). Sin embargo, las variables funcionan en HTTP Auth Manager, como el nombre de usuario , etc. se procesan en tiempo de ejecución.

Como caso especial, la cadena " \t " (sin comillas) en el campo delimitador se trata como una tabulación.

Cuando se alcanza el final del archivo ( EOF ), y la opción de reciclaje es verdadera , la lectura comienza nuevamente con la primera línea del archivo.

Si la opción de reciclaje es falsa y stopThread es falso , todas las variables se establecen en <EOF> cuando se alcanza el final del archivo. Este valor se puede cambiar configurando la propiedad JMeter csvdataset.eofstring .

Si la opción Reciclar es falsa y Detener subproceso es verdadero , al llegar a EOF se detendrá el subproceso.

Captura de pantalla del panel de control de la configuración del conjunto de datos CSV
Captura de pantalla del panel de control de la configuración del conjunto de datos CSV

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Nombre del archivo
Nombre del archivo a leer. Los nombres de archivo relativos se resuelven con respecto a la ruta del plan de prueba activo. Para las pruebas distribuidas, el archivo CSV debe almacenarse en el sistema host del servidor en el directorio relativo correcto donde se inicia el servidor JMeter. También se admiten nombres de archivo absolutos, pero tenga en cuenta que es poco probable que funcionen en modo remoto, a menos que el servidor remoto tenga la misma estructura de directorios. Si se hace referencia al mismo archivo físico de dos maneras diferentes, por ejemplo, csvdata.txt y ./csvdata.txt , estos se tratan como archivos diferentes. Si el sistema operativo no distingue entre mayúsculas y minúsculas, csvData.TXT también se abriría por separado.
Codificación de archivos
La codificación que se utilizará para leer el archivo, si no es el valor predeterminado de la plataforma.
No
Nombres de variables
Lista de nombres de variables. Los nombres deben estar separados por el carácter delimitador. Se pueden citar usando comillas dobles. JMeter admite líneas de encabezado CSV: si el campo de nombre de variable está vacío, la primera línea del archivo se lee e interpreta como la lista de nombres de columna.
No
Use la primera línea como nombres de variables
Ignore la primera línea del archivo CSV, solo se usará si Nombres de variables no está vacío, si Nombres de variables está vacío, la primera línea debe contener los encabezados.
No
delimitador
Delimitador que se utilizará para dividir los registros en el archivo. Si hay menos valores en la línea que variables, las variables restantes no se actualizan, por lo que conservarán su valor anterior (si lo hay).
¿Permitir datos citados?
¿Debe el archivo CSV permitir que se cite los valores? Si está habilitado, los valores se pueden encerrar entre " , comillas dobles, lo que permite que los valores contengan un delimitador.
¿Reciclar en EOF?
¿Se debe volver a leer el archivo desde el principio al llegar a EOF ? (el valor predeterminado es verdadero )
¿Detener hilo en EOF?
¿Debería detenerse el subproceso en EOF , si Recycle es falso? (el valor predeterminado es falso )
Modo de uso compartido
  • Todos los subprocesos : (predeterminado) el archivo se comparte entre todos los subprocesos.
  • Grupo de subprocesos actual : cada archivo se abre una vez para cada grupo de subprocesos en el que aparece el elemento
  • Subproceso actual : cada archivo se abre por separado para cada subproceso
  • Identificador : todos los subprocesos que comparten el mismo identificador comparten el mismo archivo. Entonces, por ejemplo, si tiene 4 grupos de subprocesos, podría usar una identificación común para dos o más de los grupos para compartir el archivo entre ellos. O puede usar el número de subproceso para compartir el archivo entre los mismos números de subproceso en diferentes grupos de subprocesos.
^

Valores predeterminados de solicitud de FTP

Captura de pantalla del panel de control de los valores predeterminados de solicitud de FTP
Captura de pantalla del panel de control de los valores predeterminados de solicitud de FTP
^

Administrador de caché DNS

El elemento DNS Cache Manager permite probar aplicaciones que tienen varios servidores detrás de balanceadores de carga (CDN, etc.), cuando el usuario recibe contenido de diferentes IP. De forma predeterminada, JMeter utiliza la caché de DNS de JVM. Es por eso que solo un servidor del clúster recibe carga. DNS Cache Manager resuelve los nombres de cada subproceso por separado en cada iteración y guarda los resultados de la resolución en su DNS Cache interno, que es independiente de las cachés DNS de JVM y OS.

Se puede usar una asignación para hosts estáticos para simular algo como el archivo /etc/hosts . Estas entradas tendrán preferencia sobre la resolución personalizada. El uso de resolución de DNS personalizado debe estar habilitado si desea utilizar esta asignación.

Uso de tabla de host estática

Digamos que tiene un servidor de prueba, al que desea acceder con un nombre, que (todavía) no está configurado en sus servidores DNS. Para nuestro ejemplo, sería www.example.com para el nombre del servidor, al que desea acceder en la IP del servidor a123.another.example.org .

Puede cambiar su estación de trabajo y agregar una entrada a su archivo /etc/hosts , o el equivalente para su sistema operativo, o agregar una entrada a la tabla de hosts estáticos del Administrador de caché de DNS.

Escriba www.example.com en la primera columna ( Host ) y a123.another.example.org en la segunda columna ( Hostname or IP address ). Como implica el nombre de la segunda columna, incluso podría usar la dirección IP de su servidor de prueba allí.

La dirección IP del servidor de prueba se buscará mediante el solucionador de DNS personalizado. Cuando no se proporciona ninguno, se utilizará el sistema de resolución de DNS del sistema.

Ahora puede usar www.example.com en sus muestras de HTTPClient4 y las solicitudes se realizarán contra a123.another.example.org con todos los encabezados configurados en www.example.com .

Captura de pantalla del panel de control del administrador de caché de DNS
Captura de pantalla del panel de control de DNS Cache Manager
DNS Cache Manager está diseñado para usarse en la raíz de Thread Group o Test Plan. No lo coloque como elemento secundario de una muestra HTTP en particular
DNS Cache Manager solo funciona con solicitudes HTTP mediante la implementación de HTTPClient4.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Borrar caché cada iteración
Si se selecciona, la caché de DNS de cada subproceso se borra cada vez que se inicia una nueva iteración.
No
Utilizar sistema de resolución de DNS
Se utilizará la resolución DNS del sistema. Para un trabajo correcto, edite $JAVA_HOME/jre/lib/security/java.security y agregue networkaddress.cache.ttl =0
N / A
Usar resolución de DNS personalizada
Se utilizará un sistema de resolución de DNS personalizado (de la biblioteca dnsjava).
N / A
Nombre de host o la dirección IP
Lista de servidores DNS a utilizar. Si está vacío, se utilizará el DNS de configuración de red.
No
Añadir botón
Agregue una entrada a la tabla de servidores DNS.
N / A
Botón Eliminar
Elimina la entrada de la tabla actualmente seleccionada.
N / A
Host y nombre de host o dirección IP
Asignación de nombres de host a una entrada de host estática que se resolverá utilizando el solucionador de DNS personalizado.
No
Agregar botón de host estático
Agregue una entrada a la tabla de hosts estáticos.
N / A
Eliminar botón de host estático
Elimine el host estático actualmente seleccionado en la tabla.
N / A
^

Administrador de autorizaciones HTTP

El Administrador de autorización le permite especificar uno o más inicios de sesión de usuario para páginas web que están restringidas mediante la autenticación del servidor. Ve este tipo de autenticación cuando usa su navegador para acceder a una página restringida, y su navegador muestra un cuadro de diálogo de inicio de sesión. JMeter transmite la información de inicio de sesión cuando encuentra este tipo de página.

Es posible que los encabezados de autorización no se muestren en la pestaña " Solicitud " del oyente de vista de árbol . La implementación de Java realiza una autenticación preventiva, pero no devuelve el encabezado de autorización cuando JMeter obtiene los encabezados. La implementación de HttpComponents (HC 4.5.X) por defecto es preventiva desde 3.2 y se mostrará el encabezado. Para deshabilitar esto, configure los valores como se muestra a continuación, en cuyo caso la autenticación solo se realizará en respuesta a un desafío.

En el archivo jmeter.properties establezca httpclient4.auth.preemptive=false

Nota: la configuración anterior solo se aplica a la muestra de HttpClient.
Al buscar una coincidencia con una URL, JMeter verifica cada entrada por turno y se detiene cuando encuentra la primera coincidencia. Por lo tanto, las URL más específicas deberían aparecer primero en la lista, seguidas de las menos específicas. Se ignorarán las URL duplicadas. Si desea usar diferentes nombres de usuario/contraseñas para diferentes hilos, puede usar variables. Estos se pueden configurar utilizando un elemento de configuración de conjunto de datos CSV (por ejemplo).
Captura de pantalla del panel de control del administrador de autorización HTTP
Captura de pantalla del Panel de control del Administrador de autorización HTTP
Si hay más de un Administrador de autorizaciones en el ámbito de un muestreador, actualmente no hay forma de especificar cuál se utilizará.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
¿Borrar autenticación en cada iteración?
Utilizado por la autenticación Kerberos. Si está marcado, la autenticación se realizará en cada iteración del ciclo del grupo de subprocesos principales incluso si ya se ha realizado en una anterior. Esto suele ser útil si cada iteración del grupo de subprocesos principales representa el comportamiento de un usuario virtual.
URL base
Una URL parcial o completa que coincide con una o más URL de solicitud HTTP. Como ejemplo, digamos que especifica una URL base de " http://localhost/restricted/ " con un nombre de usuario de " jmeter " y una contraseña de " jmeter ". Si envía una solicitud HTTP a la URL " http://localhost/restricted/ant/myPage.html ", el Administrador de autorización envía la información de inicio de sesión para el usuario denominado " jmeter ".
Nombre de usuario
El nombre de usuario a autorizar.
Clave
La contraseña para el usuario. (Nota: esto se almacena sin cifrar en el plan de prueba)
Dominio
El dominio que se usará para NTLM.
No
Reino
El reino que se usará para NTLM.
No
Mecanismo
Tipo de autenticación a realizar. JMeter puede realizar diferentes tipos de autenticaciones basadas en Http Samplers usados:
Java
BÁSICO
HttpCliente 4
BÁSICO , COMPENDIO y Kerberos
No
The Realm solo se aplica a la muestra de HttpClient.

Configuración de Kerberos:

Para configurar Kerberos, debe configurar al menos dos propiedades del sistema JVM:

  • -Djava.security.krb5.conf=krb5.conf
  • -Djava.security.auth.login.config=jaas.conf

También puede configurar esas dos propiedades en el archivo bin/system.properties . Mire los dos archivos de configuración de muestra ( krb5.conf y jaas.conf ) ubicados en la carpeta bin de JMeter para obtener referencias a más documentación y modifíquelos para que coincidan con su configuración de Kerberos.

La delegación de credenciales está deshabilitada de forma predeterminada para SPNEGO. Si desea habilitarlo, puede hacerlo configurando la propiedad kerberos.spnego.delegate_cred en true .

Al generar un SPN para la autenticación Kerberos SPNEGO, IE y Firefox omitirán el número de puerto de la URL. Chrome tiene una opción ( --enable-auth-negotiate-port ) para incluir el número de puerto si difiere de los estándar ( 80 y 443 ). Ese comportamiento se puede emular configurando la siguiente propiedad JMeter como se muestra a continuación.

En jmeter.properties o user.properties , configure:

  • kerberos.spnego.strip_port=false

Control S:
  • Botón Agregar : agrega una entrada a la tabla de autorizaciones.
  • Botón Eliminar : elimina la entrada de la tabla seleccionada actualmente.
  • Botón Cargar : cargue una tabla de autorizaciones previamente guardada y agregue las entradas a las entradas de la tabla de autorizaciones existentes.
  • Botón Guardar como : guarda la tabla de autorizaciones actual en un archivo.
Cuando guarda el plan de prueba, JMeter guarda automáticamente todas las entradas de la tabla de autorización, incluidas las contraseñas, que no están cifradas.
Ejemplo de autorización

Descarga este ejemplo. En este ejemplo, creamos un plan de prueba en un servidor local que envía tres solicitudes HTTP, dos que requieren un inicio de sesión y la otra está abierta para todos. Consulte la figura 10 para ver la composición de nuestro Plan de prueba. En nuestro servidor, tenemos un directorio restringido llamado " secreto ", que contiene dos archivos, " index.html " e " index2.html ". Creamos una identificación de inicio de sesión llamada " kevin ", que tiene una contraseña de " spot ". Entonces, en nuestro Administrador de autorizaciones, creamos una entrada para el directorio restringido y un nombre de usuario y contraseña (ver figura 11). Las dos solicitudes HTTP denominadas " SecretPage1 " y " SecretPage2 "/secret/index.html " y " /secret/index2.html ". La otra solicitud HTTP, denominada " NoSecretPage ", realiza una solicitud a " /index.html ".

Figura 10 - Plan de prueba
Figura 10 - Plan de prueba
Figura 11 - Panel de control del administrador de autorizaciones
Figura 11 - Panel de control del administrador de autorizaciones

Cuando ejecutamos el plan de prueba, JMeter busca en la tabla de autorización la URL que está solicitando. Si la URL base coincide con la URL, entonces JMeter pasa esta información junto con la solicitud.

Puede descargar el Plan de prueba, pero dado que está diseñado como una prueba para nuestro servidor local, no podrá ejecutarlo. Sin embargo, puede usarlo como referencia para construir su propio plan de prueba.
^

Administrador de caché HTTP

El Administrador de caché HTTP se utiliza para agregar la funcionalidad de almacenamiento en caché a las solicitudes HTTP dentro de su alcance para simular la función de caché del navegador. Cada subproceso de usuario virtual tiene su propio caché. De forma predeterminada, Cache Manager almacenará hasta 5000 elementos en caché por subproceso de usuario virtual, utilizando el algoritmo LRU. Utilice la propiedad " maxSize " para modificar este valor. Tenga en cuenta que cuanto más aumente este valor, más memoria consumirá HTTP Cache Manager, así que asegúrese de adaptar la opción -Xmx JVM en consecuencia.

Si una muestra tiene éxito (es decir, tiene el código de respuesta 2xx ), los valores de Última modificación y Etag (y Expirado , si corresponde) se guardan para la URL. Antes de ejecutar la siguiente muestra, el muestreador verifica si hay una entrada en el caché y, de ser así, se establecen los encabezados condicionales If-Last-Modified y If-None-Match para la solicitud.

Además, si se selecciona la opción " Usar encabezado Cache-Control/Expires ", el valor de Cache-Control / Expires se compara con la hora actual. Si la solicitud es una solicitud GET y la marca de tiempo es futura, la muestra regresa inmediatamente, sin solicitar la URL del servidor remoto. Esto está destinado a emular el comportamiento del navegador. Tenga en cuenta que si el encabezado Cache-Control es " no-cache ", la respuesta se almacenará en caché como precaducada, por lo que generará una solicitud GET condicional. Si Cache-Control tiene cualquier otro valor, el " max-age" La opción de caducidad se procesa para calcular la duración de la entrada; si falta, se usará el encabezado de caducidad; si también falta la entrada, se almacenará en caché como se especifica en RFC 2616, sección 13.2.4, usando la hora de última modificación y la fecha de respuesta.

Si el documento solicitado no ha cambiado desde que se almacenó en caché, el cuerpo de la respuesta estará vacío. Del mismo modo, si la fecha de vencimiento es en el futuro. Esto puede causar problemas para las aserciones.
Captura de pantalla del panel de control del administrador de caché HTTP
Captura de pantalla del panel de control del administrador de caché HTTP

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Borrar caché cada iteración
Si se selecciona, la memoria caché se borra al comienzo del subproceso.
Use el encabezado Cache Control/Expires al procesar solicitudes GET
Ver descripción arriba.
Número máximo de elementos en caché
Ver descripción arriba.
^

El elemento Administrador de cookies tiene dos funciones:
primero, almacena y envía cookies como un navegador web. Si tiene una solicitud HTTP y la respuesta contiene una cookie, el Administrador de cookies almacena automáticamente esa cookie y la utilizará para todas las solicitudes futuras a ese sitio web en particular. Cada subproceso de JMeter tiene su propia "área de almacenamiento de cookies". Entonces, si está probando un sitio web que usa una cookie para almacenar información de sesión, cada subproceso de JMeter tendrá su propia sesión. Tenga en cuenta que dichas cookies no aparecen en la pantalla del Administrador de cookies, pero se pueden ver mediante el Escuchador del árbol de resultados de vista .

JMeter verifica que las cookies recibidas sean válidas para la URL. Esto significa que las cookies de dominio cruzado no se almacenan. Si tiene un comportamiento defectuoso o desea que se utilicen cookies de dominio cruzado, defina la propiedad de JMeter " CookieManager.check.cookies=false ".

Las cookies recibidas se pueden almacenar como variables de subprocesos de JMeter. Para guardar cookies como variables, defina la propiedad " CookieManager.save.cookies=true ". Además, los nombres de las cookies tienen el prefijo " COOKIE_ " antes de almacenarse (esto evita la corrupción accidental de las variables locales). Para volver al comportamiento original, defina la propiedad " CookieManager.name.prefix= " (uno o más espacios). Si está habilitado, el valor de una cookie con el nombre TEST se puede denominar ${COOKIE_TEST} .

En segundo lugar, puede agregar manualmente una cookie al Administrador de cookies. Sin embargo, si hace esto, la cookie será compartida por todos los subprocesos de JMeter.

Tenga en cuenta que dichas cookies se crean con un tiempo de caducidad lejano en el futuro

Las cookies con valores nulos se ignoran de forma predeterminada. Esto se puede cambiar configurando la propiedad JMeter: CookieManager.delete_null_cookies=false . Tenga en cuenta que esto también se aplica a las cookies definidas manualmente; dichas cookies se eliminarán de la pantalla cuando se actualice. Tenga en cuenta también que el nombre de la cookie debe ser único: si se define una segunda cookie con el mismo nombre, reemplazará a la primera.

Captura de pantalla del Panel de control del Administrador de cookies HTTP
Captura de pantalla del Panel de control del Administrador de cookies HTTP
Si hay más de un administrador de cookies en el ámbito de una muestra, actualmente no hay forma de especificar cuál se utilizará. Además, una cookie almacenada en un administrador de cookies no está disponible para ningún otro administrador, así que use varios Administradores de cookies con cuidado.
Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Borrar cookies en cada iteración
Si se selecciona, todas las cookies definidas por el servidor se borran cada vez que se ejecuta el ciclo principal del grupo de subprocesos. Cualquier cookie definida en la GUI no se borra.
Política de cookies
La política de cookies que se utilizará para gestionar las cookies. " estándar " es el valor predeterminado desde 3.0 y debería funcionar en la mayoría de los casos. Consulte las especificaciones de cookies y las implementaciones de CookieSpec [Nota: " ignoreCookies " equivale a omitir CookieManager.]
Implementación
HC4CookieHandler (API HttpClient 4.5.X). El valor predeterminado es HC4CookieHandler desde 3.0.
[Nota: si tiene un sitio web para probar con dirección IPv6, elija HC4CookieHandler (compatible con IPv6)]
Cookies definidas por el usuario
Esto le da la oportunidad de usar cookies codificadas que serán utilizadas por todos los subprocesos durante la ejecución de la prueba.
El " dominio " es el nombre de host del servidor (sin http:// ); el puerto se ignora actualmente.
No (desalentado, a menos que sepa lo que está haciendo)
Añadir botón
Agregue una entrada a la tabla de cookies.
N / A
Botón Eliminar
Elimina la entrada de la tabla actualmente seleccionada.
N / A
Botón Cargar
Cargue una tabla de cookies previamente guardada y agregue las entradas a las entradas de la tabla de cookies existentes.
N / A
Botón Guardar como
Guarde la tabla de cookies actual en un archivo (no guarda las cookies extraídas de las respuestas HTTP).
N / A
^

Valores predeterminados de solicitud HTTP

Este elemento le permite establecer valores predeterminados que utilizan sus controladores de solicitud HTTP. Por ejemplo, si está creando un plan de prueba con 25 controladores de solicitud HTTP y todas las solicitudes se envían al mismo servidor, puede agregar un solo elemento de valores predeterminados de solicitud HTTP con el campo " Nombre del servidor o IP " completado. Luego , cuando agregue los 25 controladores de solicitud HTTP, deje el campo " Nombre del servidor o IP " vacío. Los controladores heredarán este valor de campo del elemento Valores predeterminados de solicitud HTTP.

Todos los valores de los puertos se tratan por igual; una muestra que no especifica un puerto utilizará el puerto predeterminado de solicitud HTTP, si se proporciona uno.
Captura de pantalla del panel de control de los valores predeterminados de solicitud HTTP
Captura de pantalla del panel de control de los valores predeterminados de solicitud HTTP
Campos de configuración avanzada de solicitud HTTP
Campos de configuración avanzada de solicitud HTTP

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Servidor
Nombre de dominio o dirección IP del servidor web. Por ejemplo , www.ejemplo.com . [No incluya el prefijo http:// .
No
Puerto
Puerto que escucha el servidor web.
No
Tiempo de espera de conexión
El tiempo de conexión expiro. Número de milisegundos de espera para que se abra una conexión.
No
Tiempo de espera de respuesta
Tiempo de espera de respuesta. Número de milisegundos para esperar una respuesta.
No
Implementación
Java , HTTPClient4 . Si no se especifica, el valor predeterminado depende del valor de la propiedad JMeter jmeter.httpsampler , en su defecto, se utiliza la implementación de Java .
No
Protocolo
HTTP o HTTPS .
No
Codificación de contenido
La codificación que se utilizará para la solicitud.
No
Sendero
La ruta al recurso (por ejemplo, /servlets/myServlet ). Si el recurso requiere parámetros de cadena de consulta, agréguelos a continuación en la sección " Enviar parámetros con la solicitud ". Tenga en cuenta que la ruta es la predeterminada para la ruta completa, no un prefijo que se aplique a las rutas especificadas en las pantallas de solicitud HTTP.
No
Enviar parámetros con la solicitud
La cadena de consulta se generará a partir de la lista de parámetros que proporcione. Cada parámetro tiene un nombre y un valor . La cadena de consulta se generará de la manera correcta, según la elección del " Método " que haya realizado (es decir, si elige GET , la cadena de consulta se agregará a la URL; si elige POST , se enviará por separado). Además, si envía un archivo mediante un formulario de varias partes, la cadena de consulta se creará utilizando las especificaciones del formulario de varias partes.
No
Servidor (proxy)
Nombre de host o dirección IP de un servidor proxy para realizar la solicitud. [No incluya el prefijo http:// .]
No
Puerto
Puerto que escucha el servidor proxy.
No, a menos que se especifique el nombre de host del proxy
Nombre de usuario
(Opcional) nombre de usuario para el servidor proxy.
No
Clave
(Opcional) contraseña para el servidor proxy. (Nota: esto se almacena sin cifrar en el plan de prueba)
No
Recuperar todos los recursos incrustados de archivos HTML
Dígale a JMeter que analice el archivo HTML y envíe solicitudes HTTP/HTTPS para todas las imágenes, subprogramas Java, archivos JavaScript, CSS, etc. a los que se hace referencia en el archivo.
No
Usar grupo concurrente
Utilice un conjunto de conexiones simultáneas para obtener recursos incrustados.
No
Tamaño
Tamaño del grupo para conexiones simultáneas utilizadas para obtener recursos incrustados.
No
Las URL deben coincidir:
Si está presente, debe ser una expresión regular que se use para comparar con cualquier URL incrustada que se encuentre. Entonces, si solo desea descargar recursos incrustados desde http://example.invalid/ , use la expresión: http://example\.invalid/.*
No
Las URL no deben coincidir:
Si está presente, debe ser una expresión regular que se utilice para filtrar cualquier URL incrustada que se encuentre. Entonces, si no desea descargar archivos PNG o SVG de ninguna fuente, use la expresión: .*\.(?i:svg|png)
No
Nota: los botones de opción solo tienen dos estados: activado o desactivado. Esto hace que sea imposible anular la configuración de manera consistente: ¿apagado significa apagado o significa usar el valor predeterminado actual? JMeter usa este último (de lo contrario, los valores predeterminados no funcionarían en absoluto). Entonces, si el botón está apagado, un elemento posterior puede activarlo, pero si el botón está activado, un elemento posterior no puede desactivarlo.
^

Administrador de encabezados HTTP

El Administrador de encabezados le permite agregar o anular encabezados de solicitud HTTP.

JMeter ahora admite múltiples administradores de encabezado . Las entradas del encabezado se fusionan para formar la lista de la muestra. Si una entrada que se fusionará coincide con un nombre de encabezado existente, reemplaza la entrada anterior. Esto permite configurar un conjunto predeterminado de encabezados y aplicar ajustes a muestras particulares. Tenga en cuenta que un valor vacío para un encabezado no elimina un encabezado existente, simplemente reemplaza su valor.

Captura de pantalla del panel de control del administrador de encabezado HTTP
Captura de pantalla del panel de control del administrador de encabezado HTTP

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Nombre (encabezado)
Nombre del encabezado de la solicitud. Dos encabezados de solicitud comunes con los que puede experimentar son " User-Agent " y " Referer ".
No (debe tener al menos uno, sin embargo)
Valor
Solicitar valor de encabezado.
No (debe tener al menos uno, sin embargo)
Añadir botón
Agregue una entrada a la tabla de encabezado.
N / A
Botón Eliminar
Elimina la entrada de la tabla actualmente seleccionada.
N / A
Botón Cargar
Cargue una tabla de encabezado previamente guardada y agregue las entradas a las entradas de la tabla de encabezado existente.
N / A
Botón Guardar como
Guarde la tabla de encabezado actual en un archivo.
N / A
Ejemplo de administrador de encabezado

Descarga este ejemplo. En este ejemplo, creamos un plan de prueba que le dice a JMeter que anule el encabezado de solicitud predeterminado " User-Agent " y use una cadena de agente particular de Internet Explorer en su lugar. (ver figuras 12 y 13).

Figura 12 - Plan de prueba
Figura 12 - Plan de prueba
Figura 13 - Panel de control del administrador de encabezado
Figura 13 - Panel de control del administrador de encabezado
^

Valores predeterminados de solicitud de Java

El componente Java Request Defaults le permite establecer valores predeterminados para las pruebas de Java. Consulte la solicitud de Java .

Captura de pantalla del panel de control de los valores predeterminados de solicitud de Java
Captura de pantalla del panel de control de los valores predeterminados de solicitud de Java
^

Configuración de conexión JDBC

Crea una conexión de base de datos (utilizada por JDBC Request Sampler) a partir de la configuración de conexión JDBC suministrada. La conexión se puede agrupar opcionalmente entre subprocesos. De lo contrario, cada subproceso obtiene su propia conexión. El JDBC Sampler utiliza el nombre de configuración de la conexión para seleccionar la conexión adecuada. El grupo utilizado es DBCP, consulte Parámetros de configuración de BasicDataSource
Captura de pantalla del panel de control de la configuración de la conexión JDBC
Captura de pantalla del panel de control de la configuración de la conexión JDBC

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de la configuración de conexión que se muestra en el árbol.
No
Nombre de variable para el grupo creado
El nombre de la variable a la que está vinculada la conexión. Se pueden utilizar varias conexiones, cada una vinculada a una variable diferente, lo que permite a JDBC Samplers seleccionar la conexión adecuada.
Cada nombre debe ser diferente. Si hay dos elementos de configuración con el mismo nombre, solo se guardará uno. JMeter registra un mensaje si se detecta un nombre duplicado.
Número máximo de conexiones
Número máximo de conexiones permitidas en el grupo. En la mayoría de los casos, establezca esto en cero (0) . Esto significa que cada subproceso tendrá su propio grupo con una única conexión, es decir, las conexiones no se comparten entre subprocesos.
Si realmente desea utilizar la agrupación compartida (¿por qué?), establezca el recuento máximo en el mismo número de subprocesos para asegurarse de que los subprocesos no se esperen entre sí.
Espera máxima (ms)
El grupo arroja un error si se excede el período de tiempo de espera en el proceso de intentar recuperar una conexión, consulte BasicDataSource.html#getMaxWaitMillis
Tiempo entre ejecuciones de desalojo (ms)
El número de milisegundos para dormir entre ejecuciones del subproceso de expulsión de objetos inactivos. Cuando no es positivo, no se ejecutará ningún subproceso de desalojo de objetos inactivos. (Predeterminado a " 60000 ", 1 minuto). Consulte BasicDataSource.html#getTimeBetweenEvictionRunsMillis
Confirmación automática
Active o desactive la confirmación automática para las conexiones.
Aislamiento de transacciones
Nivel de aislamiento de transacciones
Piscina preiniciada
El conjunto de conexiones se puede inicializar instantáneamente. Si se establece en False (predeterminado), los muestreadores de solicitudes de JDBC que utilizan este grupo pueden medir tiempos de respuesta más altos para las primeras consultas, ya que se incluye el tiempo de establecimiento de la conexión para todo el grupo.
No
Declaraciones SQL de inicio separadas por una nueva línea
Una colección de instrucciones SQL que se usarán para inicializar las conexiones físicas cuando se creen por primera vez. Estas declaraciones se ejecutan solo una vez, cuando la fábrica de conexiones configurada crea la conexión.
No
Prueba mientras está inactivo
Pruebe las conexiones inactivas del grupo, consulte BasicDataSource.html#getTestWhileIdle . Se utilizará Consulta de validación para probarlo.
Tiempo de inactividad mínimo desalojable suave (ms)
Cantidad mínima de tiempo que una conexión puede permanecer inactiva en el grupo antes de que sea elegible para ser desalojada por el desalojador de objetos inactivos, con la condición adicional de que al menos las conexiones minIdle permanezcan en el grupo. Consulte BasicDataSource.html#getSoftMinEvictableIdleTimeMillis . El valor predeterminado es 5000 (5 segundos)
Consulta de validación
Una consulta simple utilizada para determinar si la base de datos sigue respondiendo. El valor predeterminado es el método ' isValid() ' del controlador jdbc, que es adecuado para muchas bases de datos. Sin embargo, algunos pueden requerir una consulta diferente; por ejemplo, se podría usar Oracle algo como ' SELECCIONAR 1 DE DUAL '.

La lista de consultas de validación se puede configurar con la propiedad jdbc.config.check.query y son por defecto:

hsqldb
seleccione 1 de INFORMACION_ESQUEMA.SYSTEM_USUARIOS
Oráculo
seleccione 1 de doble
DB2
seleccione 1 de sysibm.sysdummy1
MySQL o MariaDB
seleccione 1
Microsoft SQL Server (controlador MS JDBC)
seleccione 1
postgresql
seleccione 1
Ingres
seleccione 1
derby
valores 1
H2
seleccione 1
pájaro de fuego
seleccione 1 de rdb $ base de datos
exasol
seleccione 1
Tenga en cuenta que esta consulta de validación se usa en la creación del grupo para validarla incluso si " Probar mientras está inactivo " sugiere que la consulta solo se usaría en conexiones inactivas. Este es el comportamiento DBCP.
No
URL de la base de datos
Cadena de conexión JDBC para la base de datos.
Clase de controlador JDBC
Nombre completo de la clase de conductor. (Debe estar en el classpath de JMeter; es más fácil copiar el archivo .jar en el directorio /lib de JMeter ).

La lista de las clases de controlador jdbc preconfiguradas se puede configurar con la propiedad jdbc.config.jdbc.driver.class y son, de forma predeterminada:

hsqldb
org.hsqldb.jdbc.JDBCDriver
Oráculo
oracle.jdbc.OracleDriver
DB2
com.ibm.db2.jcc.DB2Driver
mysql
com.mysql.jdbc.Driver
Microsoft SQL Server (controlador MS JDBC)
com.microsoft.sqlserver.jdbc.SQLServerDriver o com.microsoft.jdbc.sqlserver.SQLServerDriver
postgresql
org.postgresql.Driver
Ingres
com.ingres.jdbc.IngresDriver
derby
org.apache.derby.jdbc.ClientDriver
H2
org.h2.Controlador
pájaro de fuego
org.firebirdsql.jdbc.FBDriver
derbi apache
org.apache.derby.jdbc.ClientDriver
MariaDB
org.mariadb.jdbc.Driver
SQLite
org.sqlite.JDBC
Sybase AES
net.sourceforge.jtds.jdbc.Driver
exasol
com.exasol.jdbc.EXADriver
Nombre de usuario
Nombre del usuario para conectarse como.
No
Clave
Contraseña para conectarse. (Nota: esto se almacena sin cifrar en el plan de prueba)
No
Propiedades de conexión
Propiedades de conexión para configurar al establecer la conexión (como internal_logon=sysdba para Oracle, por ejemplo)
No

Diferentes bases de datos y controladores JDBC requieren diferentes configuraciones de JDBC. La URL de la base de datos y la clase del controlador JDBC están definidas por el proveedor de la implementación de JDBC.

Algunas configuraciones posibles se muestran a continuación. Verifique los detalles exactos en la documentación del controlador JDBC.

Si JMeter informa que no hay un controlador adecuado , esto podría significar:

  • No se encontró la clase de controlador. En este caso, habrá un mensaje de registro como DataSourceElement: no se pudo cargar el controlador: {nombre de clase} java.lang.ClassNotFoundException: {nombre de clase}
  • Se encontró la clase de controlador, pero la clase no admite la cadena de conexión. Esto podría deberse a un error de sintaxis en la cadena de conexión o porque se utilizó un nombre de clase incorrecto.

Si el servidor de la base de datos no se está ejecutando o no se puede acceder a él, JMeter informará una java.net.ConnectException .

A continuación se dan algunos ejemplos de bases de datos y sus parámetros.

mysql
Clase de conductor
com.mysql.jdbc.Driver
URL de la base de datos
jdbc:mysql://host[:puerto]/nombrebd
postgresql
Clase de conductor
org.postgresql.Driver
URL de la base de datos
jdbc:postgresql:{nombrebd}
Oráculo
Clase de conductor
oracle.jdbc.OracleDriver
URL de la base de datos
jdbc:oracle:thin:@//host:puerto/servicio O jdbc:oracle:thin:@(descripción=(dirección=(host={mc-name})(protocolo=tcp)(puerto={port-no} ))(datos_de_conexión=(sid={sid})))
Ingreso (2006)
Clase de conductor
ingres.jdbc.IngresDriver
URL de la base de datos
jdbc:ingres://host:puerto/db[;attr=valor]
Microsoft SQL Server (controlador MS JDBC)
Clase de conductor
com.microsoft.sqlserver.jdbc.SQLServerDriver
URL de la base de datos
jdbc:sqlserver://host:puerto;DatabaseName=dbname
derbi apache
Clase de conductor
org.apache.derby.jdbc.ClientDriver
URL de la base de datos
jdbc:derby://servidor[:puerto]/nombreDeBaseDeDatos[;URLAttributes=valor[;…]]
MariaDB
Clase de conductor
org.mariadb.jdbc.Driver
URL de la base de datos
jdbc:mariadb://host[:puerto]/dbname[;URLAttributes=valor[;…]]
Exasol (consulte también la documentación del controlador JDBC )
Clase de conductor
com.exasol.jdbc.EXADriver
URL de la base de datos
jdbc:exa:host[:puerto][;schema=SCHEMA_NAME][;prop_x=value_x]
Es posible que lo anterior no sea correcto; consulte la documentación del controlador JDBC correspondiente.
^

Configuración del almacén de claves

El elemento de configuración del almacén de claves le permite configurar cómo se cargará el almacén de claves y qué claves utilizará. Este componente generalmente se usa en escenarios de HTTPS en los que no desea tener en cuenta la inicialización del almacén de claves en el tiempo de respuesta.

Para usar este elemento, primero debe configurar un Java Key Store con los certificados de cliente que desea probar, para hacer eso:

  1. Cree sus certificados con la utilidad Java keytool o a través de su PKI
  2. Si fue creado por PKI, importe sus claves en Java Key Store convirtiéndolas a un formato aceptable por JKS
  3. Luego haga referencia al archivo de almacén de claves a través de las dos propiedades de JVM (o agréguelas en system.properties ):
    • -Djavax.net.ssl.keyStore=ruta_al_almacén de claves
    • -Djavax.net.ssl.keyStorePassword=contraseña_del_almacén de claves

Para usar PKCS11 como fuente de la tienda, debe establecer javax.net.ssl.keyStoreType en PKCS11 y javax.net.ssl.keyStore en NONE .

Captura de pantalla del panel de control de la configuración del almacén de claves
Captura de pantalla del panel de control de la configuración del almacén de claves

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Precarga
Si precargar Keystore o no. Establecerlo en verdadero suele ser la mejor opción.
Alias ​​de certificado de retención de nombre de variable
Nombre de la variable que contendrá el alias a utilizar para la autenticación por certificado de cliente. El valor de la variable se completará a partir del conjunto de datos CSV, por ejemplo. En la captura de pantalla, " certificat_ssl " también será una variable en el conjunto de datos CSV. El valor predeterminado es clientCertAliasVarName.
Falso
Índice de inicio de alias
El índice de la primera clave que se usará en Keystore, basado en 0.
Índice final de alias
El índice de la última clave que se usará en Keystore, basado en 0. Cuando utilice el " nombre de variable que contiene el alias del certificado ", asegúrese de que sea lo suficientemente grande para que todas las claves se carguen al inicio. El valor predeterminado es -1, lo que significa cargar todo.
Para hacer que JMeter use más de un certificado, debe asegurarse de que:
  • https.use.cached.ssl.context=false se establece en jmeter.properties o user.properties
  • Utiliza la implementación HTTPClient 4 para la solicitud HTTP
^

Elemento de configuración de inicio de sesión

El elemento de configuración de inicio de sesión le permite agregar o anular la configuración de nombre de usuario y contraseña en los muestreadores que usan nombre de usuario y contraseña como parte de su configuración.

Captura de pantalla del panel de control del elemento de configuración de inicio de sesión
Captura de pantalla del panel de control del elemento de configuración de inicio de sesión

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Nombre de usuario
El nombre de usuario predeterminado a utilizar.
No
Clave
La contraseña predeterminada a utilizar. (Nota: esto se almacena sin cifrar en el plan de prueba)
No
^

Valores predeterminados de solicitud LDAP

El componente Valores predeterminados de solicitud de LDAP le permite establecer valores predeterminados para las pruebas de LDAP. Consulte la Solicitud LDAP .

Captura de pantalla del panel de control de los valores predeterminados de solicitud de LDAP
Captura de pantalla del panel de control de los valores predeterminados de solicitud de LDAP
^

Valores predeterminados de solicitud extendida de LDAP

El componente Valores predeterminados de solicitud extendida de LDAP le permite establecer valores predeterminados para pruebas de LDAP extendidas. Consulte la solicitud ampliada de LDAP .

Captura de pantalla del panel de control de los valores predeterminados de solicitud extendida de LDAP
Captura de pantalla del panel de control de los valores predeterminados de solicitud extendida de LDAP
^

Configuración del muestreador TCP

TCP Sampler Config proporciona datos predeterminados para TCP Sampler

Captura de pantalla del panel de control de TCP Sampler Config
Captura de pantalla del panel de control de TCP Sampler Config

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Nombre de clase TCPClient
Nombre de la clase TCPClient. El valor predeterminado es la propiedad tcp.handler , en su defecto TCPClientImpl .
No
Nombre del servidor o IP
Nombre o IP del servidor TCP
Número de puerto
Puerto a utilizar
Conexión de reutilización
Si se selecciona, la conexión se mantiene abierta. De lo contrario, se cierra cuando se han leído los datos.
Conexión cercana
Si se selecciona, la conexión se cerrará después de ejecutar el muestreador.
SO_LINGER
Habilite/desactive SO_LINGER con el tiempo de demora especificado en segundos cuando se crea un socket. Si establece el valor " SO_LINGER " en 0 , puede evitar que un gran número de sockets permanezcan sentados con un estado TIME_WAIT .
No
Valor de byte de fin de línea (EOL)
Valor de byte para el final de la línea, configúrelo en un valor fuera del rango de -128 a +127 para omitir la verificación de EOL. También puede establecer esto en el archivo jmeter.properties con la propiedad tcp.eolByte . Si establece esto en TCP Sampler Config y en el archivo jmeter.properties al mismo tiempo, se utilizará el valor de configuración en TCP Sampler Config.
No
Tiempo de espera de conexión
Tiempo de espera de conexión (milisegundos, 0 deshabilita).
No
Tiempo de espera de respuesta
Tiempo de espera de respuesta (milisegundos, 0 deshabilita).
No
Establecer retraso de nodo
¿Debe establecerse la propiedad nodelay?
Texto para enviar
Texto a enviar
^

Variables definidas por el usuario

El elemento Variables definidas por el usuario le permite definir un conjunto inicial de variables , al igual que en el Plan de prueba .

Tenga en cuenta que todos los elementos de UDV en un plan de prueba, sin importar dónde se encuentren, se procesan al principio.
Por lo tanto, no puede hacer referencia a variables que se definen como parte de una ejecución de prueba, por ejemplo, en un posprocesador.

Los UDV no deben usarse con funciones que generan resultados diferentes cada vez que se llaman. Solo el resultado de la primera llamada de función se guardará en la variable. Sin embargo, los UDV se pueden usar con funciones como __P() , por ejemplo:

ANFITRIÓN ${__P(anfitrión, host local)}

que definiría la variable " HOST " para tener el valor de la propiedad JMeter " host ", por defecto a " localhost " si no está definido.

Para definir variables durante una ejecución de prueba, consulte Parámetros de usuario . Los UDV se procesan en el orden en que aparecen en el Plan, de arriba a abajo.

Para simplificar, se sugiere que los UDV se coloquen solo al comienzo de un grupo de subprocesos (o tal vez debajo del plan de prueba).

Una vez que se han procesado el plan de prueba y todos los UDV, el conjunto de variables resultante se copia en cada subproceso para proporcionar el conjunto de variables inicial.

Si un elemento de tiempo de ejecución, como un preprocesador de parámetros de usuario o un extractor de expresiones regulares, define una variable con el mismo nombre que una de las variables de UDV, esto reemplazará el valor inicial y todos los demás elementos de prueba en el subproceso verán el valor actualizado. valor.

Captura de pantalla del panel de control de variables definidas por el usuario
Captura de pantalla del panel de control de variables definidas por el usuario
Si tiene más de un grupo de subprocesos, asegúrese de usar nombres diferentes para valores diferentes, ya que los UDV se comparten entre grupos de subprocesos. Además, las variables no están disponibles para su uso hasta después de que se haya procesado el elemento, por lo que no puede hacer referencia a las variables que están definidas en el mismo elemento. Puede hacer referencia a variables definidas en UDV anteriores o en el plan de prueba.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Variables definidas por el usuario
Pares de nombre/valor de variable. La cadena debajo de la columna " Nombre " es lo que necesitará colocar dentro de los corchetes en construcciones ${…} para usar las variables más adelante. El ${…} completo será reemplazado por la cadena en la columna " Valor ".
^

Variable aleatoria

El elemento de configuración de variable aleatoria se utiliza para generar cadenas numéricas aleatorias y almacenarlas en variable para su uso posterior. Es más simple que usar Variables definidas por el usuario junto con la función __Random() .

La variable de salida se construye usando el generador de números aleatorios y luego el número resultante se formatea usando la cadena de formato. El número se calcula usando la fórmula mínimo+Aleatorio.nextInt(máximo-mínimo+1) . Random.nextInt() requiere un entero positivo. Esto significa que máximo-mínimo , es decir, el rango, debe ser inferior a 2147483647 ; sin embargo, los valores mínimo y máximo pueden ser valores largos siempre que el rango sea correcto.

Como el valor aleatorio se evalúa al comienzo de cada iteración, probablemente no sea una buena idea usar una variable que no sea una propiedad como valor para el mínimo o el máximo. Sería cero en la primera iteración.
Captura de pantalla para Panel de control de variable aleatoria
Captura de pantalla del panel de control de variable aleatoria

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Nombre de la variable
El nombre de la variable en la que almacenar la cadena aleatoria.
cadena de formato
La cadena de formato java.text.DecimalFormat que se utilizará. Por ejemplo, " 000 ", que generará números con al menos 3 dígitos, o " USER_000 ", que generará una salida de la forma USER_nnn . Si no se especifica, el valor predeterminado es generar el número usando Long.toString()
No
Valor mínimo
El valor mínimo ( largo ) del número aleatorio generado.
Valor máximo
El valor máximo ( largo ) del número aleatorio generado.
Semilla aleatoria
La semilla para el generador de números aleatorios. Si usa el mismo valor inicial con Por subproceso establecido en true , obtendrá el mismo valor para cada subproceso según la clase Random . Si no se establece ninguna semilla, se utilizará el constructor predeterminado de Random.
No
¿Por subproceso (usuario)?
Si es False , el generador se comparte entre todos los subprocesos del grupo de subprocesos. Si es True , entonces cada subproceso tiene su propio generador aleatorio.
^

Contador

Permite al usuario crear un contador al que se puede hacer referencia en cualquier parte del grupo de subprocesos. La configuración del contador permite al usuario configurar un punto de partida, un máximo y el incremento. El contador realizará un ciclo desde el inicio hasta el máximo, y luego comenzará de nuevo con el inicio, continuando así hasta que finalice la prueba.

El contador usa un largo para almacenar el valor, por lo que el rango es de -2^63 a 2^63-1 .

Captura de pantalla de Panel de control del contador
Captura de pantalla del panel de control del contador

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Valor inicial
El valor inicial del contador. El contador igualará este valor durante la primera iteración (el valor predeterminado es 0).
No
Incremento
Cuánto incrementar el contador después de cada iteración (el valor predeterminado es 0, lo que significa que no hay incremento).
Valor máximo
Si el contador supera el máximo, se restablece al valor inicial . El valor predeterminado es Largo.MAX_VALUE
No
Formato
Formato opcional, por ejemplo, 000 formateará como 001 , 002 , etc. Esto se pasa a DecimalFormat , por lo que se puede usar cualquier formato válido. Si hay un problema al interpretar el formato, se ignora. [El formato predeterminado se genera usando Long.toString() ]
No
Nombre de la variable exportada
Este será el nombre de la variable bajo el cual estará disponible el valor del contador. Si lo nombra counterA , puede acceder a él usando ${counterA} como se explica en los valores definidos por el usuario (de manera predeterminada, crea una variable de cadena vacía a la que se puede acceder usando ${} pero esto es muy desaconsejable)
No
Contador de seguimiento independiente para cada usuario
En otras palabras, ¿es este un contador global o cada usuario obtiene su propio contador? Si no se marca, el contador es global (es decir, el usuario n.º 1 obtendrá el valor " 1 " y el usuario n.º 2 obtendrá el valor " 2 " en la primera iteración). Si está marcado, cada usuario tiene un contador independiente.
No
Restablecer contador en cada iteración de grupo de subprocesos
Esta opción solo está disponible cuando se realiza un seguimiento del contador por usuario; si está marcada, el contador se restablecerá al valor de inicio en cada iteración del grupo de subprocesos. Esto puede ser útil cuando Counter está dentro de un Loop Controller.
No
^

Elemento de configuración simple

El elemento de configuración simple le permite agregar o anular valores arbitrarios en muestras. Puede elegir el nombre del valor y el valor en sí. Aunque algunos usuarios aventureros pueden encontrar un uso para este elemento, está aquí principalmente para desarrolladores como una GUI básica que pueden usar mientras desarrollan nuevos componentes de JMeter.

Captura de pantalla del panel de control del elemento de configuración simple
Captura de pantalla del panel de control del elemento de configuración simple

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Nombre del parámetro
El nombre de cada parámetro. Estos valores son internos al funcionamiento de JMeter y generalmente no están documentados. Solo aquellos familiarizados con el código conocerán estos valores.
Valor del parámetro
El valor que se aplicará a ese parámetro.
^

Configuración de origen de MongoDB (DEPRECATED)

Crea una conexión MongoDB (utilizada por MongoDB Script Sampler) a partir de la configuración de conexión suministrada. Cada hilo tiene su propia conexión. El JDBC Sampler utiliza el nombre de configuración de la conexión para seleccionar la conexión adecuada.

Luego puede acceder al objeto com.mongodb.DB en Beanshell o JSR223 Test Elements a través del elemento MongoDBHolder usando este código

importar com.mongodb.DB;
importar org.apache.jmeter.protocol.mongodb.config.MongoDBHolder;
DB db = MongoDBHolder.getDBFromSource("valor de la propiedad MongoDB Source",
            "valor de la propiedad Nombre de la base de datos");
…
    
Captura de pantalla del panel de control de MongoDB Source Config (DEPRECATED)
Captura de pantalla del panel de control de MongoDB Source Config (DEPRECATED)

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de la configuración de conexión que se muestra en el árbol.
No
Lista de direcciones del servidor
Servidores de base de datos Mongo
Fuente MongoDB
El nombre de la variable a la que está vinculada la conexión.
Cada nombre debe ser diferente. Si hay dos elementos de configuración con el mismo nombre, solo se guardará uno.
sigue intentando
Si es verdadero , el controlador seguirá intentando conectarse al mismo servidor en caso de que no se pueda establecer el socket.
Hay una cantidad máxima de tiempo para seguir intentándolo, que es de 15 segundos de forma predeterminada.
Esto puede ser útil para evitar que se generen algunas excepciones cuando un servidor está inactivo temporalmente al bloquear las operaciones.
También puede ser útil suavizar la transición a un nuevo nodo principal (para que se elija un nuevo nodo principal dentro del tiempo de reintento).
Tenga en cuenta que al usar esta bandera
  • para un conjunto de réplicas, el controlador intentará conectarse al antiguo nodo principal para ese momento, en lugar de conmutar por error al nuevo de inmediato
  • esto no evita que se generen excepciones en las operaciones de lectura/escritura en el socket, que debe manejar la aplicación.
Incluso si este indicador es falso, el controlador ya tiene mecanismos para recrear automáticamente conexiones rotas y volver a intentar las operaciones de lectura.
El valor predeterminado es falso .
No
Conexiones máximas por host
No
El tiempo de conexión expiro
El tiempo de espera de la conexión en milisegundos.
Se usa únicamente cuando se establece una nueva conexión . Socket.connect(java.net.SocketAddress, int)
El valor predeterminado es 0 y significa que no hay tiempo de espera.
No
Tiempo máximo de reintento
La cantidad máxima de tiempo en milisegundos para volver a intentar abrir la conexión con el mismo servidor.
El valor predeterminado es 0 , lo que significa usar los 15 predeterminados si autoConnectRetry está activado.
No
Tiempo máximo de espera
El tiempo de espera máximo en milisegundos que un subproceso puede esperar para que una conexión esté disponible.
El valor predeterminado es 120 000 .
No
Tiempo de espera del zócalo
El tiempo de espera del socket en milisegundos. Se utiliza para las operaciones de lectura y escritura del socket de E/S. Socket.setSoTimeout(int)
El valor predeterminado es 0 y significa que no hay tiempo de espera.
No
Socket mantener vivo
Esta bandera controla la función de mantener vivo el socket que mantiene viva una conexión a través de los cortafuegos . Socket.setKeepAlive(boolean)
El valor predeterminado es falso .
No
ThreadsAllowedToBlockForConnectionMultiplier
Este multiplicador, multiplicado por la configuración de connectionsPerHost, proporciona la cantidad máxima de subprocesos que pueden estar esperando que una conexión esté disponible desde el grupo.
Todos los subprocesos posteriores obtendrán una excepción de inmediato.
Por ejemplo, si connectionsPerHost es 10 y threadsAllowedToBlockForConnectionMultiplier es 5 , hasta 50 subprocesos pueden esperar una conexión.
El valor predeterminado es 5 .
No
Preocupación de escritura: seguro
Si es verdadero , el controlador utilizará WriteConcern de WriteConcern.SAFE para todas las operaciones.
Si se especifica w , wtimeout , fsync o j , esta configuración se ignora.
El valor predeterminado es falso .
No
Preocupación de escritura: Fsync
El valor fsync de WriteConcern global .
El valor predeterminado es falso .
No
Preocupación de escritura: Esperar el diario
El valor j de WriteConcern global .
El valor predeterminado es falso .
No
Preocupación de escritura: esperar a los servidores
El valor w de WriteConcern global .
El valor predeterminado es 0 .
No
Inquietud de escritura: tiempo de espera excedido
El valor wtimeout de WriteConcern global .
El valor predeterminado es 0 .
No
Preocupación de escritura: Continuar en caso de error
Si las inserciones por lotes deben continuar después del primer error
No
^
^

Configuración de conexión de pernos

Crea un grupo de conexiones de Bolt (utilizado por Bolt Request Sampler) a partir de la configuración de conexión suministrada.
Captura de pantalla del panel de control de la configuración de conexión de pernos
Captura de pantalla del panel de control de la configuración de conexión de pernos

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de esta muestra que se muestra en el árbol.
No
Comentarios
Texto libre para detalles adicionales.
No
URI de perno
URI de la base de datos.
Nombre de usuario
Cuenta de usuario.
No
Clave
Credenciales de usuario.
No
^
^

18.5 Aserciones

Las aserciones se utilizan para realizar comprobaciones adicionales en los muestreadores y se procesan después de cada muestreador en el mismo ámbito. Para asegurarse de que una afirmación se aplique solo a una muestra en particular, agréguela como elemento secundario de la muestra.

Nota: A menos que se documente lo contrario, las afirmaciones no se aplican a las submuestras (muestras secundarias), solo a la muestra principal. En el caso de JSR223 y BeanShell Assertions, el script puede recuperar submuestras utilizando el método prev.getSubResults() que devuelve una matriz de SampleResults. La matriz estará vacía si no hay ninguno.

Las afirmaciones se pueden aplicar a la muestra principal, a las submuestras o a ambas. El valor predeterminado es aplicar la aserción solo a la muestra principal. Si la afirmación admite esta opción, habrá una entrada en la GUI similar a la siguiente:

Ámbito de aserción
Ámbito de aserción
o lo siguiente
Ámbito de aserción
Ámbito de aserción

Si un submuestreador falla y la muestra principal tiene éxito, la muestra principal se establecerá en estado fallido y se agregará un resultado de afirmación. Si se utiliza la opción de variable JMeter, se supone que se relaciona con la muestra principal y cualquier falla se aplicará solo a la muestra principal.

La variable JMeterThread.last_sample_ok se actualiza a " verdadero " o " falso " después de que se hayan ejecutado todas las aserciones para una muestra.

Aserción de respuesta

El panel de control de aserción de respuesta le permite agregar cadenas de patrones para compararlas con varios campos de la solicitud o respuesta. Las cadenas de patrón son:

  • Contiene , coincide con: expresiones regulares de estilo Perl5
  • Equals , Substring : texto sin formato, distingue entre mayúsculas y minúsculas

Puede encontrar un resumen de los caracteres de coincidencia de patrones en Expresiones regulares de ORO Perl5.

También puede elegir si se espera que las cadenas coincidan con la respuesta completa o si se espera que la respuesta solo contenga el patrón. Puede adjuntar múltiples aserciones a cualquier controlador para mayor flexibilidad.

Tenga en cuenta que la cadena de patrón no debe incluir los delimitadores adjuntos, es decir, use Price: \d+ no /Price: \d+/ .

De forma predeterminada, el patrón está en modo multilínea, lo que significa que el metacarácter " . " no coincide con la nueva línea. En el modo de varias líneas, " ^ " y " $ " coinciden con el inicio o el final de cualquier línea en cualquier parte de la cadena, no solo con el inicio y el final de toda la cadena. Tenga en cuenta que \s coincide con la nueva línea. El caso también es significativo. Para anular esta configuración, se puede usar la sintaxis de expresión regular extendida . Por ejemplo:

(?i)
ignorar caso
(?s)
tratar el destino como una sola línea, es decir, " . " coincide con la nueva línea
(?es)
tanto lo anterior
Estos se pueden usar en cualquier lugar dentro de la expresión y permanecerán vigentes hasta que se anulen. P.ej
(?i)Pastel de manzana(?-i)
Coincide con " Apple Pie ", pero no con " Apple Pie " .
(?s)Manzana.+?Pastel
coincide con Apple seguido de Pie , que puede estar en una línea posterior.
Manzana(?s).+?Pastel
Lo mismo que arriba, pero probablemente sea más claro usar (?s) al principio.
Captura de pantalla del panel de control de aserción de respuesta
Captura de pantalla del panel de control de aserción de respuesta

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : solo se aplica a la muestra principal
  • Solo submuestras: solo se aplica a las submuestras
  • Muestra principal y submuestras : se aplica a ambas.
  • Nombre de la variable JMeter a usar : la aserción se debe aplicar al contenido de la variable nombrada
Campo a probar
Indica a JMeter qué campo de la Solicitud o Respuesta probar.
  • Respuesta de texto : el texto de respuesta del servidor, es decir, el cuerpo, sin incluir los encabezados HTTP.
  • Datos de la solicitud: el texto de la solicitud enviado al servidor, es decir, el cuerpo, sin incluir los encabezados HTTP.
  • Código de respuesta - por ejemplo, 200
  • Mensaje de respuesta - por ejemplo, OK
  • Encabezados de respuesta , incluidos los encabezados de conjunto de cookies (si corresponde)
  • Encabezados de solicitud
  • URL muestreada
  • Documento (texto) : el texto extraído de varios tipos de documentos a través de Apache Tika (consulte la sección Ver el documento del árbol de resultados ).
Ignorar estado
Indica a JMeter que establezca el estado en éxito inicialmente.

El éxito general de la muestra se determina combinando el resultado de la afirmación con el estado de respuesta existente. Cuando se selecciona la casilla de verificación Ignorar estado , el estado de respuesta se fuerza a correcto antes de evaluar la afirmación.

Las respuestas HTTP con estados en los rangos 4xx y 5xx normalmente se consideran fallidas. La casilla de verificación " Ignorar estado " se puede utilizar para establecer el estado como correcto antes de realizar más comprobaciones. Tenga en cuenta que esto tendrá el efecto de eliminar cualquier error de aserción anterior, así que asegúrese de que esto solo esté configurado en la primera aserción.
Reglas de coincidencia de patrones
Indica cómo se compara el texto que se está probando con el patrón.
  • Contiene : verdadero si el texto contiene el patrón de expresión regular
  • Coincidencias : verdadero si todo el texto coincide con el patrón de expresión regular
  • Es igual a: verdadero si todo el texto es igual a la cadena del patrón (se distingue entre mayúsculas y minúsculas)
  • Subcadena : verdadero si el texto contiene la cadena de patrón (se distingue entre mayúsculas y minúsculas)
Los patrones Equals y Substring son cadenas simples, no expresiones regulares. También se puede seleccionar NOT para invertir el resultado de la comprobación. O Aplique cada aserción en combinación O (si 1 patrón para probar coincide, la Afirmación estará bien) en lugar de Y (Todos los patrones deben coincidir para que la Afirmación esté bien).
Patrones para probar
Una lista de patrones a probar. Cada patrón se prueba por separado. Si un patrón falla, no se comprueban más patrones. No hay diferencia entre configurar una afirmación con múltiples patrones y configurar múltiples afirmaciones con un patrón cada una (suponiendo que las otras opciones sean las mismas).
Sin embargo, cuando se selecciona la casilla de verificación Ignorar estado , esto tiene el efecto de cancelar cualquier falla de aserción anterior; por lo tanto, asegúrese de que la casilla de verificación Ignorar estado solo se use en la primera aserción.
Mensaje de error personalizado
Le permite definir el mensaje de falla que reemplazará al generado
No

El patrón es una expresión regular de estilo Perl5, pero sin los corchetes que lo encierran.

Ejemplos de aserciones
Figura 14 - Plan de prueba
Figura 14 - Plan de prueba
Figura 15 - Panel de control de aserción con patrón
Figura 15 - Panel de control de aserción con patrón
Figura 16 - Resultados del detector de aserciones (aprobado)
Figura 16 - Resultados del detector de aserciones (aprobado)
Figura 17 - Resultados del oyente de aserción (Fallo)
Figura 17 - Resultados del oyente de aserción (Fallo)
^

Afirmación de duración

La afirmación de duración prueba que cada respuesta se recibió dentro de un período de tiempo determinado. Cualquier respuesta que tarde más que el número dado de milisegundos (especificado por el usuario) se marca como una respuesta fallida.

Captura de pantalla para Panel de control de aserción de duración
Captura de pantalla del panel de control de aserción de duración

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Duración en milisegundos
El número máximo de milisegundos que se permite cada respuesta antes de que se marque como fallida.
^

Afirmación de tamaño

La afirmación de tamaño prueba que cada respuesta contiene el número correcto de bytes. Puede especificar que el tamaño sea igual, mayor que, menor que o no igual a un número determinado de bytes.

Una respuesta vacía se trata como si fuera 0 bytes en lugar de informarse como un error.
Captura de pantalla para Panel de control de afirmación de tamaño
Captura de pantalla del panel de control de afirmación de tamaño

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : la afirmación solo se aplica a la muestra principal
  • Solo submuestras: la afirmación solo se aplica a las submuestras
  • Muestra principal y submuestras : la afirmación se aplica a ambas.
  • Nombre de la variable JMeter a usar : la aserción se debe aplicar al contenido de la variable nombrada
Tamaño en bytes
La cantidad de bytes que se usarán para probar el tamaño de la respuesta (o el valor de la variable JMeter).
Tipo de comparación
Si probar que la respuesta es igual, mayor que, menor que o no igual al número de bytes especificado.
^

Aserción XML

La aserción XML prueba que los datos de respuesta consisten en un documento XML formalmente correcto. No valida el XML basado en un DTD o esquema ni realiza ninguna otra validación.

Captura de pantalla para Panel de control de aserción XML
Captura de pantalla del panel de control de aserción XML

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
^

Afirmación BeanShell

La aserción BeanShell permite al usuario realizar una verificación de aserciones utilizando un script BeanShell.

Para obtener detalles completos sobre el uso de BeanShell, consulte el sitio web de BeanShell.

Se recomienda encarecidamente la migración a JSR223 Assertion + Groovy por motivos de rendimiento, compatibilidad con nuevas funciones de Java y mantenimiento limitado de la biblioteca BeanShell.

Tenga en cuenta que se utiliza un intérprete diferente para cada aparición independiente de la aserción en cada subproceso en un script de prueba, pero se utiliza el mismo intérprete para invocaciones posteriores. Esto significa que las variables persisten en las llamadas a la aserción.

Todas las afirmaciones se llaman desde el mismo subproceso que la muestra.

Si se define la propiedad " beanshell.assertion.init ", se pasa al intérprete como el nombre de un archivo fuente. Esto se puede utilizar para definir métodos y variables comunes. Hay un archivo de inicio de muestra en el directorio bin : BeanShellAssertion.bshrc

El elemento de prueba admite los métodos ThreadListener y TestListener . Estos deben definirse en el archivo de inicialización. Consulte el archivo BeanShellListeners.bshrc para ver definiciones de ejemplo.

Captura de pantalla del panel de control de la aserción BeanShell
Captura de pantalla del panel de control de la aserción BeanShell

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol. El nombre se almacena en la variable de script Label
Restablecer bsh.Interpreter antes de cada llamada
Si se selecciona esta opción, el intérprete se recreará para cada muestra. Esto puede ser necesario para algunos scripts de ejecución prolongada. Para obtener más información, consulte Prácticas recomendadas: secuencias de comandos BeanShell .
Parámetros
Parámetros para pasar al script BeanShell. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • bsh.args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script BeanShell para ejecutar. Esto anula el script. El nombre del archivo se almacena en la variable de script FileName
No
Guion
El script BeanShell a ejecutar. El valor de retorno es ignorado.
Sí (a menos que se proporcione un archivo de script)

Hay un script de muestra que puede probar.

Antes de invocar el script, se configuran algunas variables en el intérprete BeanShell. Estas son cadenas a menos que se indique lo contrario:

  • log : el objeto registrador . (p. ej.) log.warn("Mensaje"[,Lanzable])
  • SampleResult , anterior - el objeto SampleResult ; leer escribir
  • Respuesta - el Objeto de respuesta; leer escribir
  • Fallo - booleano; leer escribir; se utiliza para establecer el estado de la afirmación
  • mensaje de error : cadena; leer escribir; utilizado para configurar el mensaje de afirmación
  • ResponseData : el cuerpo de la respuesta (byte [])
  • Código de respuesta - por ejemplo, 200
  • Mensaje de respuesta - por ejemplo, OK
  • ResponseHeaders : contiene los encabezados HTTP
  • RequestHeaders : contiene los encabezados HTTP enviados al servidor
  • Etiqueta de muestra
  • SamplerData : datos que se enviaron al servidor
  • ctx - JMeterContext
  • vars - JMeterVariables - por ejemplo
    vars.get("VAR1");
    vars.put("VAR2","valor");
    vars.putObject("OBJ1",nuevo Objeto());
  • accesorios - JMeterProperties (clase java.util.Properties ) - por ejemplo
    props.get("INICIO.HMS");
    props.put("PROP1","1234");

Los siguientes métodos del objeto Respuesta pueden ser útiles:

  • setStopThread(booleano)
  • setStopTest(booleano)
  • Cadena getSampleLabel()
  • setSampleLabel(Cadena)
^

Afirmación MD5Hex

La afirmación MD5Hex permite al usuario verificar el hash MD5 de los datos de respuesta.

Captura de pantalla del panel de control de la aserción MD5Hex
Captura de pantalla del panel de control de la aserción MD5Hex

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
suma MD5
32 dígitos hexadecimales que representan el hash MD5 (caso no significativo)
^

Aserción HTML

La aserción HTML permite al usuario verificar la sintaxis HTML de los datos de respuesta utilizando JTidy.

Captura de pantalla para Panel de control de aserción HTML
Captura de pantalla del panel de control de aserción HTML

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
tipo de documento
omitir , auto , estricto o suelto
Formato
HTML , XHTML o XML
Solo errores
¿Solo tomar nota de los errores?
Umbral de error
Número de errores permitidos antes de clasificar la respuesta como fallida
Umbral de advertencia
Número de advertencias permitidas antes de clasificar la respuesta como fallida
Nombre del archivo
Nombre del archivo en el que se escribe el informe
No
^

Aserción XPath

La aserción XPath prueba un documento para ver si está bien formado, tiene la opción de validar contra un DTD o pasar el documento a través de JTidy y probar un XPath. Si ese XPath existe, la afirmación es verdadera. El uso de " / " coincidirá con cualquier documento bien formado y es la expresión XPath predeterminada. La aserción también admite expresiones booleanas, como " count(//*error)=2 ". Consulte http://www.w3.org/TR/xpath para obtener más información sobre XPath.

Algunas expresiones de muestra:
  • //title[text()='Text to match'] - coincide con <title>Text to match</title> en cualquier parte de la respuesta
  • /title[text()='Text to match'] - coincide con <title>Text to match</title> en el nivel raíz de la respuesta
Captura de pantalla del panel de control de la aserción XPath
Captura de pantalla del panel de control de la aserción XPath

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Usar Tidy (analizador tolerante)
Use Tidy, es decir, sea tolerante con los errores XML/HTML
Tranquilo
Establece la bandera Tidy Quiet
Si se selecciona ordenado
Reportar errores
Si se produce un error de Tidy, configure la afirmación en consecuencia
Si se selecciona ordenado
Mostrar advertencias
Establece la opción Tidy showWarnings
Si se selecciona ordenado
Usar espacios de nombres
¿Deben respetarse los espacios de nombres? (vea la nota a continuación sobre NAMESPACES)
Si ordenado no está seleccionado
Validar XML
Verifique el documento contra su esquema.
Si ordenado no está seleccionado
Ignorar espacios en blanco
Ignorar el espacio en blanco del elemento.
Si ordenado no está seleccionado
Obtener DTD externas
Si se selecciona, se recuperan las DTD externas.
Si ordenado no está seleccionado
Aserción XPath
XPath para que coincida con el documento.
Invertir aserción (fallará si se cumplen las condiciones anteriores)
Verdadero si una expresión XPath no coincide o devuelve falso
No
El analizador no tolerante puede ser bastante lento, ya que puede necesitar descargar la DTD, etc.
ESPACIOS DE NOMBRES
Como una ronda de trabajo para las limitaciones de espacio de nombres del analizador Xalan XPath (implementación en la que se basa JMeter), debe:
  • proporcione un archivo de propiedades (si, por ejemplo, su archivo se llama namespaces.properties ) que contiene asignaciones para los prefijos de espacio de nombres:
    prefijo1=http\://foo.apache.org
    prefijo2=http\://toto.apache.org
    …
    
  • haga referencia a este archivo en el archivo user.properties usando la propiedad:
    xpath.namespace.config=espacios de nombres.propiedades
^

Aserción XPath2

La aserción XPath2 comprueba la buena formación de un documento. El uso de " / " coincidirá con cualquier documento bien formado y es la expresión XPath2 predeterminada. La aserción también admite expresiones booleanas, como " count(//*error)=2 ".

Algunas expresiones de muestra:
  • //title[text()='Text to match'] - coincide con <title>Text to match</title> en cualquier parte de la respuesta
  • /title[text()='Text to match'] - coincide con <title>Text to match</title> en el nivel raíz de la respuesta
Captura de pantalla del panel de control de la aserción XPath2
Captura de pantalla del panel de control de la aserción XPath2

Parámetros

Atributo
Descripción
Requerido
Lista de alias de espacios de nombres
Lista de alias de espacios de nombres que desea usar para analizar el documento, una línea por declaración. Debe especificarlos de la siguiente manera: prefix=namespace . Esta implementación facilita el uso de espacios de nombres que con la versión anterior de XPathExtractor.
No
Aserción XPath2
XPath para que coincida con el documento.
Invertir aserción
Fallará si la expresión xpath devuelve verdadero o coincide, de lo contrario tendrá éxito
No
Lista de alias de espacio de nombres
Lista de alias de espacio de nombres prefijo = espacio de nombres completo (uno por línea)
No
^

Aserción de esquema XML

La aserción de esquema XML permite al usuario validar una respuesta contra un esquema XML.

Captura de pantalla del panel de control de aserción de esquema XML
Captura de pantalla del panel de control de aserción de esquema XML

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Nombre del archivo
Especificar nombre de archivo de esquema XML
^

Aserción JSR223

La aserción JSR223 permite utilizar el código de secuencia de comandos JSR223 para comprobar el estado de la muestra anterior.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Idioma
El lenguaje JSR223 a utilizar
Parámetros
Parámetros a pasar al script. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script para ejecutar, si se usa una ruta de archivo relativa, será relativa al directorio al que hace referencia la propiedad del sistema " user.dir "
No
Caché de compilación de scripts
Cadena única en el plan de prueba que JMeter utilizará para almacenar en caché el resultado de la compilación del script si el idioma utilizado es compatible con la interfaz compilable (Groovy es uno de estos, Java, BeanShell y JavaScript no lo son)
Consulte la nota en la propiedad JSR223 Sampler Java System si está utilizando Groovy sin marcar esta opción
No
Guion
El script a ejecutar.
Sí (a menos que se proporcione un archivo de script)

Las siguientes variables están configuradas para que las use el script:

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • Etiqueta : la etiqueta de cadena
  • Nombre de archivo : el nombre del archivo de script (si corresponde)
  • Parámetros : los parámetros (como una cadena)
  • args : los parámetros como una matriz de cadenas (divididos en espacios en blanco)
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - ( JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
    vars.getObject("OBJ2");
    
  • accesorios - (JMeterProperties - clase java.util.Properties ) - por ejemplo
    props.get("INICIO.HMS");
    props.put("PROP1","1234");
    
  • SampleResult , prev - ( SampleResult ) - da acceso al SampleResult anterior (si lo hay)
  • sampler - ( Sampler ) - da acceso a la muestra actual
  • OUT - System.out - por ejemplo, OUT.println("mensaje")
  • AssertionResult - ( AssertionResult ) - el resultado de la aserción

El script puede verificar varios aspectos del SampleResult . Si se detecta un error, el script debe usar AssertionResult.setFailureMessage("message") y AssertionResult.setFailure(true) .

Para obtener más detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

^

Comparar aserción

La aserción de comparación no debe usarse durante la prueba de carga, ya que consume muchos recursos (memoria y CPU). Úselo solo para pruebas funcionales o durante la depuración y validación del plan de prueba.
La aserción de comparación se puede utilizar para comparar resultados de muestra dentro de su ámbito. Se pueden comparar los contenidos o el tiempo transcurrido, y los contenidos se pueden filtrar antes de la comparación. Las comparaciones de aserciones se pueden ver en el visualizador de aserciones de comparación .
Captura de pantalla del panel de control de la aserción de comparación
Captura de pantalla del panel de control de la aserción de comparación

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Comparar contenido
Si comparar o no el contenido (datos de respuesta)
Comparar tiempo
Si el valor es ≥0, compruebe si la diferencia de tiempo de respuesta no es mayor que el valor. Es decir, si el valor es 0 , entonces los tiempos de respuesta deben ser exactamente iguales.
Filtros de comparación
Los filtros se pueden usar para eliminar cadenas de la comparación de contenido. Por ejemplo, si la página tiene una marca de tiempo, podría coincidir con: " Hora: \d\d:\d\d:\d\d " y reemplazarse con una hora fija ficticia " Hora: HH:MM: SS ".
No
^

Afirmación SMIME

La afirmación SMIME se puede utilizar para evaluar los resultados de la muestra del Mail Reader Sampler. Esta afirmación verifica si el cuerpo de un mensaje MIME está firmado o no. La firma también se puede verificar con un certificado de firmante específico. Como esta es una funcionalidad que la mayoría de los usuarios no necesariamente necesita, se deben descargar y agregar archivos jar adicionales a JMETER_HOME/lib :
  • bcmail-xxx.jar (Castillo hinchable SMIME/CMS)
  • bcprov-xxx.jar (Proveedor de castillo hinchable)
Estos deben descargarse de BouncyCastle.

Si usa Mail Reader Sampler , asegúrese de seleccionar " Almacenar el mensaje usando MIME (sin formato) ", de lo contrario, la afirmación no podrá procesar el mensaje correctamente.

Captura de pantalla del panel de control de la aserción SMIME
Captura de pantalla del panel de control de la afirmación SMIME

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Verificar firma
Si se selecciona, la aserción verificará si es una firma válida según los parámetros definidos en el cuadro Certificado de firmante .
Mensaje no firmado
Si esperar o no una firma en el mensaje
Certificado de firmante
" No Check " significa que no realizará la verificación de la firma. " Comprobar valores " se utiliza para verificar la firma con las entradas proporcionadas. Y " Archivo de certificado " realizará la verificación contra un archivo de certificado específico.
Posición del mensaje
La muestra de correo puede recuperar varios mensajes en una sola muestra. Utilice este campo para especificar qué mensaje se comprobará. Los mensajes se numeran desde 0 , por lo que 0 significa el primer mensaje. Los números negativos cuentan desde el ÚLTIMO mensaje; -1 significa ÚLTIMO, -2 significa penúltimo, etc.
^

Aserción JSON

Este componente te permite realizar validaciones de documentos JSON. Primero, analizará el JSON y fallará si los datos no son JSON. En segundo lugar, buscará la ruta especificada, utilizando la sintaxis de Jayway JsonPath 1.2.0 . Si no se encuentra la ruta, fallará. En tercer lugar, si se encontró la ruta JSON en el documento y se solicitó la validación contra el valor esperado, realizará la validación. Para el valor nulo , hay una casilla de verificación especial en la GUI. Tenga en cuenta que si la ruta devolverá un objeto de matriz, se repetirá y si se encuentra el valor esperado, la afirmación tendrá éxito. Para validar el uso de matriz vacía []cuerda. Además, si el parche devolverá un objeto de diccionario, se convertirá en una cadena antes de la comparación.

Captura de pantalla del panel de control de la aserción JSON
Captura de pantalla del panel de control de la aserción JSON

Parámetros

Atributo
Descripción
Requerido
Afirmar que existe la ruta JSON
Ruta al elemento JSON para afirmación.
Además afirmar valor
Seleccione la casilla de verificación si desea hacer afirmar con algún valor
No
Coincidencia como expresión regular
Seleccione la casilla de verificación si desea usar una expresión regular
No
Valor esperado
Valor para afirmación o expresión regular para coincidencia
No
Esperar nulo
Seleccione la casilla de verificación si espera nulo
No
Invertir aserción (fallará si se cumplen las condiciones anteriores)
Invertir aserción (fallará si se cumplen las condiciones anteriores)
No
^

Aserción JSON JMESPath

Este componente le permite realizar aserciones en el contenido de documentos JSON utilizando JMESPath . Primero, analizará el JSON y fallará si los datos no son JSON.
En segundo lugar, buscará la ruta especificada, utilizando la sintaxis JMESPath.
Si no se encuentra la ruta, fallará.
En tercer lugar, si se encontró la ruta JMES en el documento y se solicitó la validación contra el valor esperado, realizará esta verificación adicional. Si desea verificar la nulidad, use la casilla de verificación Esperar nulo .
Tenga en cuenta que la ruta no puede ser nula ya que la expresión JMESPath no se compilará y se producirá un error. Incluso si espera una respuesta vacía o nula, debe colocar una expresión JMESPath válida.

Captura de pantalla del panel de control de la aserción JSON JMESPath
Captura de pantalla del panel de control de la aserción JSON JMESPath

Parámetros

Atributo
Descripción
Requerido
Afirmar que JMESPath existe
Verifique que exista el elemento JMESPath to JSON
Además afirmar valor
Seleccione la casilla de verificación si verifica el JMESPath extraído contra uno esperado
No
Coincidencia como expresión regular
Seleccione la casilla de verificación si desea utilizar una expresión regular para hacer coincidir
No
Valor esperado
Valor a utilizar para la coincidencia exacta o la expresión regular si se marca Coincidir como expresión regular
No
Esperar nulo
Seleccione la casilla de verificación si espera que el valor sea nulo
No
Invertir aserción (fallará si se cumplen las condiciones anteriores)
Invertir aserción (fallará si se cumplen las condiciones anteriores)
No
^
^

18.6 Temporizadores

Desde la versión 3.1, se ha implementado una nueva función (en modo Beta a partir de JMeter 3.1 y sujeta a cambios) que proporciona la siguiente función.
Puede aplicar un factor de multiplicación en los retrasos de sueño calculados por el temporizador aleatorio configurando la propiedad timer.factor=float number donde float number es un número decimal positivo.
JMeter multiplicará este factor por el retraso de sueño calculado. Esta característica puede ser utilizada por:
Tenga en cuenta que los temporizadores se procesan antes que cada muestreador en el ámbito en el que se encuentran; si hay varios temporizadores en el mismo alcance, todos los temporizadores se procesarán antes que cada muestreador.
Los temporizadores solo se procesan junto con un muestreador. Un temporizador que no esté en el mismo alcance que una muestra no se procesará en absoluto.
Para aplicar un temporizador a una sola muestra, agregue el temporizador como un elemento secundario de la muestra. El temporizador se aplicará antes de que se ejecute el muestreador. Para aplicar un temporizador después de una muestra, agréguelo a la siguiente muestra o agréguelo como elemento secundario de una muestra de acción de control de flujo .

Temporizador constante

Si desea que cada subproceso se detenga durante la misma cantidad de tiempo entre solicitudes, use este temporizador.

Captura de pantalla para Panel de control de Constant Timer
Captura de pantalla del panel de control del temporizador constante

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol.
No
Retraso de subproceso
Número de milisegundos para hacer una pausa.
^

Temporizador aleatorio gaussiano

Este temporizador detiene cada solicitud de subproceso durante un período de tiempo aleatorio, y la mayoría de los intervalos de tiempo ocurren cerca de un valor particular. El retraso total es la suma del valor distribuido de Gauss (con una media de 0,0 y una desviación estándar de 1,0 ) multiplicado por el valor de desviación que especifique y el valor de compensación. Otra forma de explicarlo, en Gaussian Random Timer, la variación alrededor del desplazamiento constante tiene una distribución de curva Gaussiana.

Captura de pantalla del panel de control del temporizador aleatorio gaussiano
Captura de pantalla del panel de control del temporizador aleatorio gaussiano

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol
No
Desviación
Desviación en milisegundos.
Compensación de retardo constante
Número de milisegundos para pausar además del retraso aleatorio.
^

Temporizador aleatorio uniforme

Este temporizador detiene cada solicitud de subproceso durante un período de tiempo aleatorio, y cada intervalo de tiempo tiene la misma probabilidad de ocurrir. El retraso total es la suma del valor aleatorio y el valor de compensación.

Captura de pantalla del panel de control del temporizador aleatorio uniforme
Captura de pantalla del panel de control del temporizador aleatorio uniforme

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol.
No
Retraso aleatorio máximo
Número máximo aleatorio de milisegundos para hacer una pausa.
Compensación de retardo constante
Número de milisegundos para pausar además del retraso aleatorio.
^

Temporizador de rendimiento constante

Este temporizador introduce pausas variables, calculadas para mantener el rendimiento total (en términos de muestras por minuto) lo más cerca posible de una cifra determinada. Por supuesto, el rendimiento será menor si el servidor no es capaz de manejarlo, o si otros temporizadores o elementos de prueba que consumen mucho tiempo lo impiden.

NB aunque el temporizador se denomina temporizador de rendimiento constante, el valor de rendimiento no necesita ser constante. Se puede definir en términos de una llamada de función o variable, y el valor se puede cambiar durante una prueba. El valor se puede cambiar de varias maneras:

  • utilizando una variable de contador
  • usando una función __jexl3 , __groovy para proporcionar un valor cambiante
  • usando el servidor BeanShell remoto para cambiar una propiedad JMeter

Consulte Mejores prácticas para obtener más detalles.

Tenga en cuenta que el valor de rendimiento no debe cambiarse con demasiada frecuencia durante una prueba; el nuevo valor tardará un tiempo en aplicarse.

Captura de pantalla del panel de control del temporizador de rendimiento constante
Captura de pantalla del panel de control del temporizador de rendimiento constante

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol.
No
Rendimiento objetivo
Rendimiento que queremos que el temporizador intente generar.
Calcular el rendimiento basado en
  • solo este subproceso : cada subproceso intentará mantener el rendimiento objetivo. El rendimiento general será proporcional al número de subprocesos activos.
  • todos los subprocesos activos en el grupo de subprocesos actual : el rendimiento objetivo se divide entre todos los subprocesos activos del grupo. Cada subproceso se retrasará según sea necesario, según la última vez que se ejecutó.
  • todos los subprocesos activos : el rendimiento objetivo se divide entre todos los subprocesos activos en todos los grupos de subprocesos. Cada subproceso se retrasará según sea necesario, según la última vez que se ejecutó. En este caso, cada grupo de subprocesos necesitará un temporizador de rendimiento constante con la misma configuración.
  • todos los subprocesos activos en el grupo de subprocesos actual (compartido) : como se indicó anteriormente, pero cada subproceso se retrasa según la última vez que se ejecutó cualquier subproceso en el grupo.
  • todos los hilos activos (compartidos) - como arriba; cada subproceso se retrasa en función de cuándo se ejecutó por última vez.

Los algoritmos compartidos y no compartidos tienen como objetivo generar el rendimiento deseado y producirán resultados similares.
El algoritmo compartido debería generar una tasa de transacción general más precisa.
El algoritmo no compartido debería generar una distribución más uniforme de transacciones entre subprocesos.

^

Temporizador de rendimiento preciso

Este temporizador introduce pausas variables, calculadas para mantener el rendimiento total (por ejemplo, en términos de muestras por minuto) lo más cerca posible de una cifra dada. Por supuesto, el rendimiento será menor si el servidor no es capaz de manejarlo, o si otros temporizadores, o si no hay suficientes subprocesos, o elementos de prueba que consumen mucho tiempo lo impiden.

Aunque el temporizador se denomina Temporizador de rendimiento preciso, no tiene como objetivo producir exactamente la misma cantidad de muestras en intervalos de un segundo durante la prueba.

El temporizador funciona mejor para tarifas inferiores a 36000 solicitudes/hora, sin embargo, su kilometraje puede variar (consulte la sección de monitoreo a continuación si sus objetivos son muy diferentes).

La mejor ubicación de un temporizador de rendimiento preciso en un plan de prueba

Como sabrá, los temporizadores son heredados por todos los hermanos y sus elementos secundarios. Es por eso que uno de los mejores lugares para Precise Throughput Timer es debajo del primer elemento en un ciclo de prueba. Por ejemplo, puede agregar una muestra ficticia al principio y colocar el temporizador debajo de esa muestra ficticia.

horario producido

Precise Throughput Timer modela el horario de llegadas de Poisson . Ese cronograma a menudo ocurre en la vida real, por lo que tiene sentido usarlo para las pruebas de carga. Por ejemplo, naturalmente podría generar muestras que están muy juntas, por lo que podría revelar problemas de concurrencia. Incluso si logra generar llegadas de Poisson con Poisson Random Timer , sería susceptible a los problemas que se enumeran a continuación. Por ejemplo, las verdaderas llegadas de Poisson pueden tener una pausa indefinidamente larga y eso no es práctico para las pruebas de carga. Por ejemplo, las llegadas de Poisson "regulares" con una tasa de 1 por segundo podrían terminar con 50 muestras durante una prueba de 60 segundos de duración.

El temporizador de rendimiento constante converge a la tasa especificada, sin embargo, tiende a producir muestras a intervalos regulares.

Pico de aceleración y arranque

Puede usar enfoques de "aumento" o similares para evitar un pico al comienzo de la prueba. Por ejemplo, si configura el Grupo de subprocesos para que tenga 100 subprocesos y establece el Período de aceleración en 0 (o en un número pequeño), entonces todos los subprocesos se iniciarán al mismo tiempo y se producirá un aumento no deseado de la carga. . Además de eso, si configura el Período de aceleración demasiado alto, es posible que haya " muy pocos " subprocesos disponibles al principio para lograr la carga requerida.

Precise Throughput Timer programa las ejecuciones de forma aleatoria, por lo que se puede utilizar para generar una carga constante, y se recomienda configurar tanto el período de aceleración como el retraso en 0 .

Múltiples grupos de subprocesos que comienzan al mismo tiempo

Puede aparecer una variación del problema de aceleración cuando el plan de prueba incluye varios grupos de subprocesos . Para mitigar ese problema, generalmente se agrega un retraso "aleatorio" a cada grupo de subprocesos para que los subprocesos comiencen en diferentes momentos.

Precise Throughput Timer evita ese problema ya que programa las ejecuciones de forma aleatoria. No necesita agregar retrasos aleatorios adicionales para mitigar el pico de inicio

Número de iteraciones por hora

Uno de los requisitos básicos es emitir N muestras por M minutos. Que sean 60 iteraciones por hora. Los clientes comerciales no entenderían si informa los resultados de la prueba de carga con 57 ejecuciones "solo porque el azar fue aleatorio". Para generar 60 iteraciones por hora, debe configurar de la siguiente manera (otros parámetros podrían dejarse con sus valores predeterminados)

  • Rendimiento objetivo (muestras) : 60
  • Período de rendimiento (segundos) : 3600
  • Duración de la prueba (segundos) : 3600

Las dos primeras opciones establecen el rendimiento. Aunque 60/3600, 30/1800 y 120/7200 representan exactamente el mismo nivel de carga, elija el que represente mejor los requisitos comerciales. Por ejemplo, si el requisito es probar "60 muestras por hora", configure 60/3600. Si el requisito es probar "1 muestra por minuto", establezca 1/60.

La duración de la prueba (segundos) está ahí, por lo que el temporizador garantiza el número exacto de muestras para una duración de prueba determinada. Precise Throughput Timer crea un programa para las muestras en el inicio de la prueba. Por ejemplo, si desea realizar una prueba de 5 minutos con un rendimiento de 60 por hora, establecería la duración de la prueba (segundos) en 300. Esto permite configurar el rendimiento de una manera amigable para los negocios. Nota: La duración de la prueba (segundos) no limita la duración de la prueba. Es solo una pista para el temporizador.

Número de subprocesos y tiempos de reflexión

Uno de los errores comunes es ajustar la cantidad de subprocesos y los tiempos de reflexión para lograr el rendimiento deseado. Aunque podría funcionar, ese enfoque da como resultado una gran cantidad de tiempo dedicado a las ejecuciones de prueba. Es posible que deba ajustar los hilos y los retrasos nuevamente cuando llegue la nueva versión de la aplicación.

Precise Throughput Timer permite establecer un objetivo de rendimiento e ir a por él sin importar qué tan bien se desempeñe la aplicación. Para hacer eso, Precise Throughput Timer crea un programa en el inicio de la prueba, luego usa ese programa para liberar subprocesos. El principal impulsor de los tiempos de reflexión y la cantidad de subprocesos deben ser los requisitos comerciales, no el deseo de igualar el rendimiento de alguna manera.

Por ejemplo, si su aplicación es utilizada por ingenieros de soporte en un centro de llamadas. Suponga que hay 2 ingenieros en el centro de llamadas y el rendimiento objetivo es 1 por minuto. Suponga que el ingeniero tarda 4 minutos en leer y revisar la página web. Para ese caso, debe configurar 2 subprocesos en el grupo, usar 4 minutos para los retrasos de tiempo de reflexión y especificar 1 por minuto en Precise Throughput Timer . Por supuesto, daría como resultado algo alrededor de 2 muestras/4 minutos = 0,5 por minuto y el resultado de dicha prueba significa que "necesita más ingenieros de soporte en un centro de llamadas" o "necesita reducir el tiempo que le toma a un ingeniero realizar una tarea". ".

Probando tasas bajas y pruebas repetibles

La prueba a tasas bajas (por ejemplo, 60 por hora) requiere conocer el perfil de prueba deseado. Por ejemplo, si necesita inyectar carga a intervalos uniformes (por ejemplo, 60 segundos entre ellos), entonces será mejor que use el Temporizador de rendimiento constante . Sin embargo, si necesita tener un cronograma aleatorio (por ejemplo, para modelar usuarios reales que ejecutan informes), Precise Throughput Timer es su amigo.

Al comparar los resultados de múltiples pruebas de carga, es útil poder repetir exactamente el mismo perfil de prueba. Por ejemplo, si se invoca la acción X (por ejemplo, "Informe de ganancias") después de 5 minutos del inicio de la prueba, sería bueno replicar ese patrón para las ejecuciones de prueba posteriores. La replicación del mismo patrón de carga simplifica el análisis de los resultados de la prueba (por ejemplo, gráfico de porcentaje de CPU).

La semilla aleatoria (cambio de 0 a aleatorio) permite controlar el valor semilla que utiliza Precise Throughput Timer . De forma predeterminada, se inicializa con 0 y eso significa que se utiliza semilla aleatoria para cada ejecución de prueba. Si necesita tener un patrón de carga repetible, cambie la semilla aleatoria para que tenga un valor aleatorio. El consejo general es usar semilla distinta de cero, y "0 por defecto" es un límite de implementación.

Nota: cuando se utilizan varios grupos de subprocesos con las mismas tasas de rendimiento y la misma semilla distinta de cero, es posible que se disparen las muestras al mismo tiempo.

Pruebas de altas tasas y/o largas duraciones de prueba

Precise Throughput Timer genera el programa y lo guarda en la memoria. En la mayoría de los casos, no debería ser un problema, sin embargo, recuerde que es posible que desee mantener el programa por debajo de 1 000 000 de muestras. Se necesitan ~200 ms para generar un programa para 1 000 000 de muestras, y el programa consume 8 megabytes en el montón. El programa para 10 millones de entradas tarda 1-2 segundos en construirse y consume 80 megabytes en el montón.

Por ejemplo, si desea realizar una prueba de 2 semanas de duración con una tasa de 5000 por hora, entonces probablemente desee tener exactamente 5000 muestras por hora. Puede establecer la propiedad Duración de la prueba (segundos) del temporizador en 1 hora. Luego, el temporizador crearía un programa de 5000 muestras durante una hora, y cuando se agote el programa, el temporizador generará un programa para la siguiente hora.

Al mismo tiempo, puede configurar la duración de la prueba (segundos) en 2 semanas y el temporizador generará un programa con 168 000 muestras = 2 semanas * 5 000 muestras/hora = 2*7*24*500 . La programación tardaría ~30 ms en generarse y consumiría un poco más de 1 megabyte.

carga explosiva

Puede haber un caso en el que todas las muestras deban venir en pares, triples, etc. Ciertos casos pueden resolverse mediante el temporizador de sincronización , sin embargo, el temporizador de rendimiento preciso tiene una forma nativa de emitir solicitudes en paquetes. Este comportamiento está deshabilitado de forma predeterminada y se controla con la configuración de "Salidas por lotes".

  • Número de subprocesos en el lote (subprocesos) . Especifica el número de muestras en un lote. Tenga en cuenta que la cantidad total de muestras seguirá estando en línea con el rendimiento objetivo
  • Retraso entre subprocesos en el lote (ms) . Por ejemplo, si se establece en 42 y el tamaño del lote es 3, los subprocesos partirán en x, x+42ms, x+84ms

Tasa de carga variable

Aunque los valores de las propiedades (por ejemplo, el rendimiento) se pueden definir a través de expresiones, se recomienda mantener el valor más o menos igual durante la prueba, ya que se necesita tiempo para volver a calcular el nuevo programa para adaptar los nuevos valores.

Vigilancia

A medida que se genera el siguiente programa, Precise Throughput Timer registra un mensaje en jmeter.log : 2018-01-04 17:34:03,635 INFO oajtConstantPoissonProcessGenerator: Generado 21 tiempos (... 20 requeridos, tasa 1.0, duración 20, límite exacto 20000, i21) en 0 ms. First 15 events will be fired at: 1.1869653574244292 (+1.1869653574244292), 1.4691340403043207 (+0.2821686828798915), 3.638151706179226 (+2.169017665874905), 3.836357090410566 (+0.19820538423134026), 4.709330071408575 (+0.8729729809980085), 5.61330076999953 (+0.903970698590955), ... Esto muestra que la generación de horarios tomó 0 ms y muestra marcas de tiempo absolutas en segundos. En el caso anterior, la velocidad se estableció en 1 por segundo y las marcas de tiempo reales se convirtieron en 1,2 segundos, 1,5 segundos, 3,6 segundos, 3,8 segundos, 4,7 segundos, etc.

Captura de pantalla del panel de control del temporizador de rendimiento preciso
Captura de pantalla del panel de control del temporizador de rendimiento preciso

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol
No
Rendimiento objetivo (en muestras por 'período de rendimiento')
Número máximo de muestras que desea obtener por "período de rendimiento", incluidos todos los subprocesos del grupo, de todos los muestreadores afectados.
Período de rendimiento (segundos)
Período de rendimiento. Por ejemplo, si el "rendimiento" se establece en 42 y el "período de rendimiento" en 21 segundos, obtendrá 2 muestras por segundo.
Duración de la prueba (segundos)
Esto se utiliza para garantizar que obtendrá muestras de rendimiento*duración durante el período de tiempo de "duración de la prueba".
Número de hilos en el lote (hilos)
Si el valor supera 1, varios subprocesos salen del temporizador simultáneamente. El rendimiento promedio aún cumple con el valor de "rendimiento".
Retraso entre subprocesos en el lote (ms)
Por ejemplo, si se establece en 42 y el tamaño del lote es 3, los subprocesos partirán en x, x+42ms, x+84ms.
Semilla aleatoria (cambio de 0 a aleatorio)
Nota: es mejor que los diferentes temporizadores tengan diferentes valores de semilla. La semilla constante garantiza que el temporizador genere los mismos retrasos en cada inicio de prueba. El valor de "0" significa que el temporizador es realmente aleatorio (no repetible de una ejecución a otra).
^

Temporizador de sincronización

El propósito de SyncTimer es bloquear subprocesos hasta que se haya bloqueado una cantidad X de subprocesos, y luego se liberan todos a la vez. Por lo tanto, un SyncTimer puede crear grandes cargas instantáneas en varios puntos del plan de prueba.

Captura de pantalla del panel de control del temporizador de sincronización
Captura de pantalla del panel de control del temporizador de sincronización

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol.
No
Número de usuarios simultáneos para agrupar por
Número de subprocesos para liberar a la vez. Establecerlo en 0 es equivalente a establecerlo en Número de subprocesos en el grupo de subprocesos.
Tiempo de espera en milisegundos
Si se establece en 0 , el temporizador esperará a que la cantidad de subprocesos alcance el valor en " Número de usuarios simultáneos para agrupar ". Si es superior a 0 , el temporizador esperará al máximo " Tiempo de espera en milisegundos " para la cantidad de subprocesos. Si después del intervalo de tiempo de espera no se alcanza el número de usuarios en espera, el temporizador dejará de esperar. Predeterminado a 0
No
Si el tiempo de espera en milisegundos se establece en 0 y la cantidad de subprocesos nunca llega a " Número de usuarios simultáneos para agrupar por ", la prueba se detendrá infinitamente. Sólo una parada forzada lo detendrá. Establecer el tiempo de espera en milisegundos es una opción a considerar en este caso.
Sincronización de bloques de temporizador solo dentro de una JVM, por lo que si usa pruebas distribuidas, asegúrese de nunca establecer " Número de usuarios simultáneos para agrupar por " en un valor superior al número de usuarios de su grupo de subprocesos que contiene considerando 1 inyector solamente.
^

Temporizador BeanShell

El temporizador BeanShell se puede utilizar para generar un retraso.

Para obtener detalles completos sobre el uso de BeanShell, consulte el sitio web de BeanShell.

Se recomienda encarecidamente la migración a JSR223 Timer + Groovy por motivos de rendimiento, compatibilidad con nuevas funciones de Java y mantenimiento limitado de la biblioteca BeanShell.

El elemento de prueba admite los métodos ThreadListener y TestListener . Estos deben definirse en el archivo de inicialización. Consulte el archivo BeanShellListeners.bshrc para ver definiciones de ejemplo.

Captura de pantalla del panel de control del temporizador BeanShell
Captura de pantalla del panel de control de BeanShell Timer

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol. El nombre se almacena en la variable de script Label
No
Restablecer bsh.Interpreter antes de cada llamada
Si se selecciona esta opción, el intérprete se recreará para cada muestra. Esto puede ser necesario para algunos scripts de ejecución prolongada. Para obtener más información, consulte Prácticas recomendadas: secuencias de comandos BeanShell .
Parámetros
Parámetros para pasar al script BeanShell. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • bsh.args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script BeanShell para ejecutar. El nombre del archivo se almacena en la variable de script FileName . El valor devuelto se utiliza como el número de milisegundos de espera.
No
Guion
La secuencia de comandos BeanShell. El valor de retorno se utiliza como el número de milisegundos de espera.
Sí (a menos que se proporcione un archivo de script)

Antes de invocar el script, se configuran algunas variables en el intérprete BeanShell:

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - ( JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
    
  • props - (JMeterProperties - clase java.util.Properties) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - da acceso al SampleResult anterior (si lo hay)

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

Si se define la propiedad beanshell.timer.init , se usa para cargar un archivo de inicialización, que se puede usar para definir métodos, etc. para usar en el script BeanShell.

^

Temporizador JSR223

El temporizador JSR223 se puede usar para generar un retraso usando un lenguaje de secuencias de comandos JSR223,

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
ScriptIdioma
El lenguaje de scripting a utilizar.
Parámetros
Parámetros a pasar al script. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script para ejecutar, si se usa una ruta de archivo relativa, será relativa al directorio al que hace referencia " user.dir " Propiedad del sistema El valor devuelto se convierte en un entero largo y se usa como el número de milisegundos a esperar .
No
Caché de compilación de scripts
Cadena única en el plan de prueba que JMeter usará para almacenar en caché el resultado de la compilación del script si el idioma utilizado es compatible con la interfaz compilable (Groovy es uno de estos, java, beanshell y javascript no lo son)
Consulte la nota en la propiedad JSR223 Sampler Java System si está utilizando Groovy sin marcar esta opción
No
Guion
La secuencia de comandos. El valor de retorno se utiliza como el número de milisegundos de espera.
Sí (a menos que se proporcione un archivo de script)

Antes de invocar el script, se configuran algunas variables en el intérprete de scripts:

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - ( JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
  • props - (JMeterProperties - clase java.util.Properties) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler ) - el Sampler actual
  • Etiqueta : el nombre del temporizador
  • FileName : el nombre del archivo (si lo hay)
  • SALIDA - Sistema.fuera

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

^

Temporizador aleatorio Poisson

Este temporizador detiene cada solicitud de subproceso durante un período de tiempo aleatorio, y la mayoría de los intervalos de tiempo ocurren cerca de un valor particular. El retraso total es la suma del valor distribuido de Poisson y el valor de compensación.

Nota: si desea modelar las llegadas de Poisson, considere usar Precise Throughput Timer en su lugar.

Captura de pantalla para Panel de control de Poisson Random Timer
Captura de pantalla del panel de control de Poisson Random Timer

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol
No
lambda
Valor lambda en milisegundos.
Compensación de retardo constante
Número de milisegundos para pausar además del retraso aleatorio.
^
^

18.7 Preprocesadores


Los preprocesadores se utilizan para modificar los Samplers en su alcance.

Este modificador analiza la respuesta HTML del servidor y extrae enlaces y formularios. Se examinará una muestra de prueba de URL que pase por este modificador para ver si "coincide" con alguno de los enlaces o formularios extraídos de la respuesta inmediatamente anterior. Luego reemplazaría los valores en la muestra de prueba de URL con los valores apropiados del enlace o formulario coincidente. Las expresiones regulares de tipo Perl se utilizan para encontrar coincidencias.

Captura de pantalla del panel de control de HTML Link Parser
Captura de pantalla del panel de control de HTML Link Parser
Las coincidencias se realizan utilizando nombres de protocolo , host , ruta y parámetro . La muestra de destino no puede contener parámetros que no estén en los enlaces de respuesta.
Si usa pruebas distribuidas, asegúrese de cambiar el modo (consulte jmeter.properties ) para que no sea una eliminación, consulte el error 56376
Ejemplo de araña

Considere un ejemplo simple: supongamos que desea que JMeter se "arañe" a través de su sitio, presionando enlace tras enlace analizado desde el HTML devuelto por su servidor (esto no es realmente lo más útil que puede hacer, pero sirve como un buen ejemplo) . Crearía un Controlador simple y le agregaría el "Análisis de enlaces HTML". Luego, cree una solicitud HTTP y establezca el dominio en " .* ", y la ruta también. Esto hará que su muestra de prueba coincida con cualquier enlace que se encuentre en las páginas devueltas. Si desea restringir el rastreo a un dominio en particular, cambie el valor del dominio al que desee. Entonces, solo se seguirán los enlaces a ese dominio.

Ejemplo de encuesta

Un ejemplo más útil: dada una aplicación de sondeo web, es posible que tenga una página con varias opciones de sondeo como botones de radio para que el usuario seleccione. Digamos que los valores de las opciones de encuesta son muy dinámicos, tal vez generados por el usuario. Si desea que JMeter pruebe la encuesta, puede crear muestras de prueba con valores codificados de forma rígida o puede dejar que HTML Link Parser analice el formulario e inserte una opción de encuesta aleatoria en su muestra de prueba de URL. Para hacer esto, siga el ejemplo anterior, excepto que, al configurar las opciones de URL de su controlador Web Test, asegúrese de elegir " POST " como método. Ingrese valores codificados para el dominio , la ruta y cualquier parámetro de formulario adicional. Luego, para el parámetro real del botón de radio, ingrese el nombre (digamos que espoll_choice "), y luego " .* " para el valor de ese parámetro. Cuando el modificador examina esta muestra de prueba de URL, encontrará que "coincide" con el formulario de encuesta (y no debería coincidir con ningún otro formulario, dado que ha especificado todos los demás aspectos de la muestra de prueba de URL), y reemplazará los parámetros de su formulario con los parámetros coincidentes del formulario. Dado que la expresión regular " .* " coincidirá con cualquier cosa, el modificador probablemente tendrá una lista de botones de radio para elegir. Elegirá al azar y reemplazará el valor en su muestra de prueba de URL. Cada vez que se realice la prueba, se elegirá un nuevo valor aleatorio.

Figura 18 - Ejemplo de encuesta en línea
Figura 18 - Ejemplo de encuesta en línea
Una cosa importante para recordar es que debe crear una muestra de prueba inmediatamente antes que devolverá una página HTML con los enlaces y formularios que son relevantes para su muestra de prueba dinámica.
^

Modificador de reescritura de URL HTTP

Este modificador funciona de manera similar al Analizador de enlaces HTML, excepto que tiene un propósito específico por el cual es más fácil de usar que el Analizador de enlaces HTML y más eficiente. Para las aplicaciones web que utilizan la reescritura de URL para almacenar ID de sesión en lugar de cookies, este elemento se puede adjuntar en el nivel de ThreadGroup, como el Administrador de cookies HTTP . Simplemente déle el nombre del parámetro de identificación de la sesión, lo encontrará en la página y agregará el argumento a cada solicitud de ese ThreadGroup.

Alternativamente, este modificador se puede adjuntar a solicitudes seleccionadas y solo las modificará. Los usuarios inteligentes incluso determinarán que este modificador se puede usar para capturar valores que eluden el HTML Link Parser .

Captura de pantalla del panel de control del modificador de reescritura de URL HTTP
Captura de pantalla del panel de control del modificador de reescritura de URL HTTP

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo dado a este elemento en el árbol de prueba.
No
Nombre del argumento de sesión
El nombre del parámetro para obtener de la respuesta anterior. Este modificador encontrará el parámetro en cualquier lugar de la página y tomará el valor asignado, ya sea en un HREF o en un formulario.
Extensión de ruta
Algunas aplicaciones web reescriben las URL agregando un punto y coma más el parámetro de identificación de la sesión. Marque esta casilla si es así.
No
No use iguales en la extensión de la ruta
Algunas aplicaciones web reescriben las URL sin usar un signo " = " entre el nombre y el valor del parámetro (como Intershop Enfinity).
No
No use el signo de interrogación en la extensión de ruta
Evita que la cadena de consulta termine en la extensión de la ruta (como Intershop Enfinity).
No
¿Id. de sesión de caché?
¿Debería guardarse el valor del Id. de sesión para su uso posterior cuando el Id. de sesión no esté presente?
Codificación de URL
Valor de codificación de URL al escribir el parámetro
No
Si usa pruebas distribuidas, asegúrese de cambiar el modo (consulte jmeter.properties ) para que no sea una eliminación, consulte el error 56376 .
^

Parámetros de usuario

Permite al usuario especificar valores para variables de usuario específicas de subprocesos individuales.

Las variables de usuario también se pueden especificar en el plan de prueba, pero no son específicas para subprocesos individuales. Este panel le permite especificar una serie de valores para cualquier variable de usuario. Para cada hilo, a la variable se le asignará uno de los valores de la serie en secuencia. Si hay más subprocesos que valores, los valores se reutilizan. Por ejemplo, esto se puede usar para asignar una identificación de usuario distinta para que la use cada subproceso. Se puede hacer referencia a las variables de usuario en cualquier campo de cualquier componente de JMeter.

La variable se especifica haciendo clic en el botón Agregar variable en la parte inferior del panel y completando el nombre de la variable en la columna ' Nombre: '. Para agregar un nuevo valor a la serie, haga clic en el botón ' Agregar usuario ' y complete el valor deseado en la columna recién agregada.

Se puede acceder a los valores en cualquier componente de prueba en el mismo grupo de subprocesos, usando la sintaxis de función : ${variable} .

Consulte también el elemento de configuración del conjunto de datos CSV , que es más adecuado para una gran cantidad de parámetros.

Captura de pantalla del panel de control de parámetros de usuario
Captura de pantalla del panel de control de parámetros de usuario

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Actualizar una vez por iteración
Un indicador para indicar si el elemento Parámetros de usuario debe actualizar sus variables solo una vez por iteración. si incrusta funciones en UP, es posible que necesite un mayor control sobre la frecuencia con la que se actualizan los valores de las variables. Mantenga esta casilla marcada para asegurarse de que los valores se actualicen cada vez a través del controlador principal de la UP. Desmarque la casilla y UP actualizará los parámetros para cada solicitud de muestra realizada dentro de su alcance .
^

Preprocesador BeanShell

El preprocesador BeanShell permite aplicar código arbitrario antes de tomar una muestra.

Para obtener detalles completos sobre el uso de BeanShell, consulte el sitio web de BeanShell.

Se recomienda encarecidamente la migración a JSR223 PreProcessor + Groovy por motivos de rendimiento, compatibilidad con nuevas funciones de Java y mantenimiento limitado de la biblioteca BeanShell.

El elemento de prueba admite los métodos ThreadListener y TestListener . Estos deben definirse en el archivo de inicialización. Consulte el archivo BeanShellListeners.bshrc para ver definiciones de ejemplo.

Captura de pantalla del panel de control de BeanShell PreProcessor
Captura de pantalla del panel de control de BeanShell PreProcessor

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol. El nombre se almacena en la variable de script Label
No
Restablecer bsh.Interpreter antes de cada llamada
Si se selecciona esta opción, el intérprete se recreará para cada muestra. Esto puede ser necesario para algunos scripts de ejecución prolongada. Para obtener más información, consulte Prácticas recomendadas: secuencias de comandos BeanShell .
Parámetros
Parámetros para pasar al script BeanShell. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • bsh.args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script BeanShell para ejecutar. El nombre del archivo se almacena en la variable de script FileName
No
Guion
La secuencia de comandos BeanShell. El valor de retorno es ignorado.
Sí (a menos que se proporcione un archivo de script)

Antes de invocar el script, se configuran algunas variables en el intérprete BeanShell:

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - ( JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
  • props - (JMeterProperties - clase java.util.Properties) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - da acceso al SampleResult anterior (si lo hay)
  • sampler - ( Sampler )- da acceso a la muestra actual

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

Si se define la propiedad beanshell.preprocessor.init , se usa para cargar un archivo de inicialización, que se puede usar para definir métodos, etc. para usar en el script BeanShell.

^

Preprocesador JSR223

El preprocesador JSR223 permite aplicar el código de script JSR223 antes de tomar una muestra.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Idioma
El lenguaje JSR223 a utilizar
Parámetros
Parámetros a pasar al script. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script para ejecutar, si se usa una ruta de archivo relativa, será relativa al directorio al que hace referencia la propiedad del sistema " user.dir "
No
Caché de compilación de scripts
Cadena única en el plan de prueba que JMeter usará para almacenar en caché el resultado de la compilación del script si el idioma utilizado es compatible con la interfaz compilable (Groovy es uno de estos, java, beanshell y javascript no lo son)
Consulte la nota en la propiedad JSR223 Sampler Java System si está utilizando Groovy sin marcar esta opción
No
Guion
El script a ejecutar.
Sí (a menos que se proporcione un archivo de script)

Las siguientes variables JSR223 están configuradas para que las use el script:

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • Etiqueta : la etiqueta de cadena
  • FileName : el nombre del archivo de script (si lo hay)
  • Parámetros : los parámetros (como una cadena)
  • args : los parámetros como una matriz de cadenas (divididos en espacios en blanco)
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - ( JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - clase java.util.Properties) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - ( Sampler )- da acceso a la muestra actual
  • OUT - System.out - por ejemplo, OUT.println("mensaje")

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

^

Preprocesador JDBC

El preprocesador de JDBC le permite ejecutar alguna instrucción SQL justo antes de que se ejecute una muestra. Esto puede ser útil si su muestra JDBC requiere que algunos datos estén en la base de datos y no puede calcularlos en un grupo de subprocesos de configuración. Para obtener más información, consulte Solicitud de JDBC .

Consulte el siguiente plan de prueba:

En el plan de prueba vinculado, " Crear precio de corte " JDBC PreProcessor llama a un procedimiento almacenado para crear un precio de corte en la base de datos, este será utilizado por " Calcular precio de corte ".

Crear preprocesador de precio de corte
Crear preprocesador de precio de corte
^

Parámetros de usuario RegEx

Permite especificar valores dinámicos para parámetros HTTP extraídos de otra solicitud HTTP utilizando expresiones regulares. Los parámetros de usuario RegEx son específicos para subprocesos individuales.

Este componente le permite especificar el nombre de referencia de una expresión regular que extrae los nombres y valores de los parámetros de solicitud HTTP. Se deben especificar números de grupos de expresiones regulares para el nombre del parámetro y también para el valor del parámetro. El reemplazo solo ocurrirá para los parámetros en el muestreador que usa estos parámetros de usuario RegEx cuyo nombre coincide

Captura de pantalla del panel de control de los parámetros de usuario RegEx
Captura de pantalla del panel de control de parámetros de usuario RegEx

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Nombre de referencia de expresión regular
Nombre de una referencia a una expresión regular
Nombres de parámetros número de grupo de expresiones regulares
Número de grupo de expresión regular utilizada para extraer nombres de parámetros
Número de grupo de expresiones regulares de valores de parámetro
Número de grupo de expresión regular utilizada para extraer valores de parámetros
Ejemplo de expresiones regulares

Supongamos que tenemos una solicitud que devuelve un formulario con 3 parámetros de entrada y queremos extraer el valor de 2 de ellos para inyectarlos en la próxima solicitud.

  1. Crear expresión regular de posprocesador para la primera solicitud HTTP
    • refName : establece el nombre de una expresión regular Expresión ( listParams )
    • expresión regular - expresión que extraerá los nombres de entrada y los atributos de los valores de entrada
      Ej: input name="([^"]+?)" value="([^"]+?)"
    • plantilla - estaría vacía
    • match nr - -1 (para iterar a través de todas las coincidencias posibles)
  2. Crear parámetros de usuario RegEx de preprocesador para la segunda solicitud HTTP
    • refName : establezca el mismo nombre de referencia de una expresión regular, sería listParams en nuestro ejemplo
    • número de grupo de nombres de parámetros - número de grupo de expresión regular para nombres de parámetros, sería 1 en nuestro ejemplo
    • número de grupo de valores de parámetro - número de grupo de expresión regular para valores de parámetro, sería 2 en nuestro ejemplo

Consulte también el elemento Extractor de expresiones regulares , que se utiliza para extraer nombres y valores de parámetros.

^

Tiempo de espera de muestra

Este preprocesador programa una tarea de temporizador para interrumpir una muestra si tarda demasiado en completarse. El tiempo de espera se ignora si es cero o negativo. Para que esto funcione, el muestreador debe implementar Interruptible. Se sabe que los siguientes muestreadores lo hacen:
AJP, BeanShell, FTP, HTTP, Soap, AccessLog, MailReader, JMS Subscriber, TCPSampler, TestAction, JavaSampler

El elemento de prueba está diseñado para usarse cuando los tiempos de espera individuales, como el tiempo de espera de conexión o el tiempo de espera de respuesta, son insuficientes, o cuando el muestreador no admite tiempos de espera. El tiempo de espera debe establecerse lo suficientemente largo para que no se active en las pruebas normales, pero lo suficientemente corto para que interrumpa las muestras que están atascadas.

[Por defecto, JMeter usa un Callable para interrumpir la muestra. Esto se ejecuta en el mismo subproceso que el temporizador, por lo que si la interrupción tarda mucho tiempo, puede retrasar el procesamiento de los tiempos de espera posteriores. No se espera que esto sea un problema, pero si es necesario, la propiedad InterruptTimer.useRunnable se puede establecer en verdadero para usar un subproceso Runnable separado en lugar de Callable.]

Captura de pantalla del panel de control del tiempo de espera de muestra
Captura de pantalla del panel de control del tiempo de espera de muestra

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este temporizador que se muestra en el árbol.
No
Tiempo de espera de muestra
Si la muestra tarda más en completarse, se interrumpirá.
^
^

18.8 Post-procesadores

Como sugiere el nombre, los posprocesadores se aplican después de las muestras. Tenga en cuenta que se aplican a todos los muestreadores en el mismo ámbito, por lo que para asegurarse de que un posprocesador se aplique solo a un muestreador en particular, agréguelo como elemento secundario del muestreador.

Nota: A menos que se documente lo contrario, los posprocesadores no se aplican a las submuestras (muestras secundarias), solo a la muestra principal. En el caso de los posprocesadores JSR223 y BeanShell, el script puede recuperar submuestras utilizando el método prev.getSubResults() que devuelve una matriz de SampleResults. La matriz estará vacía si no hay ninguno.

Los posprocesadores se ejecutan antes de las afirmaciones, por lo que no tienen acceso a ningún resultado de afirmación, ni el estado de la muestra reflejará los resultados de ninguna afirmación. Si necesita acceso a los resultados de la aserción, intente usar un oyente en su lugar. También tenga en cuenta que la variable JMeterThread.last_sample_ok se establece en " verdadero " o " falso " después de que se hayan ejecutado todas las afirmaciones.

Extractor de expresiones regulares

Permite al usuario extraer valores de una respuesta del servidor utilizando una expresión regular de tipo Perl. Como posprocesador, este elemento se ejecutará después de cada solicitud de muestra en su ámbito, aplicando la expresión regular, extrayendo los valores solicitados, generando la cadena de plantilla y almacenando el resultado en el nombre de variable dado.

Captura de pantalla del panel de control del extractor de expresiones regulares
Captura de pantalla del panel de control del extractor de expresiones regulares

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : solo se aplica a la muestra principal
  • Solo submuestras: solo se aplica a las submuestras
  • Muestra principal y submuestras : se aplica a ambas.
  • Nombre de la variable JMeter a usar : la extracción se debe aplicar al contenido de la variable nombrada
La coincidencia se aplica a todas las muestras calificadas a su vez. Por ejemplo, si hay una muestra principal y 3 submuestras, cada una de las cuales contiene una única coincidencia para la expresión regular (es decir, 4 coincidencias en total). Para el número de coincidencia = 3 , solo submuestras, el extractor coincidirá con la tercera submuestra . Para el número de coincidencia = 3 , muestra principal y submuestras, el extractor coincidirá con la segunda submuestra (la primera coincidencia es la muestra principal). Para el número de coincidencia = 0 o negativo, se procesarán todas las muestras calificadas. Para el número de coincidencia > 0 , la coincidencia se detendrá tan pronto como se encuentren suficientes coincidencias.
Campo a comprobar
Se pueden revisar los siguientes campos:
  • Cuerpo : el cuerpo de la respuesta, por ejemplo, el contenido de una página web (excluyendo los encabezados)
  • Cuerpo (sin escape) : el cuerpo de la respuesta, con todos los códigos de escape Html reemplazados. Tenga en cuenta que los escapes HTML se procesan sin tener en cuenta el contexto, por lo que se pueden realizar algunas sustituciones incorrectas.
    Tenga en cuenta que esta opción tiene un gran impacto en el rendimiento, así que utilícela solo cuando sea absolutamente necesario y sea consciente de sus impactos.
  • Cuerpo como documento : el texto extraído de varios tipos de documentos a través de Apache Tika (consulte la sección Ver el documento del árbol de resultados ).
    Tenga en cuenta que la opción Cuerpo como documento puede afectar el rendimiento, así que asegúrese de que esté bien para su prueba.
  • Encabezados de solicitud : es posible que no estén presentes para muestras que no sean HTTP
  • Encabezados de respuesta : es posible que no estén presentes para muestras que no sean HTTP
  • URL
  • Código de respuesta - por ejemplo, 200
  • Mensaje de respuesta - por ejemplo, OK
Los encabezados pueden ser útiles para muestras de HTTP; es posible que no esté presente para otros tipos de muestras.
Nombre de la variable creada
El nombre de la variable JMeter en la que almacenar el resultado. También tenga en cuenta que cada grupo se almacena como [refname]_g# , donde [refname] es la cadena que ingresó como nombre de referencia, y # es el número de grupo, donde el grupo 0 es la coincidencia completa, el grupo 1 es la coincidencia de la primer paréntesis, etc.
Expresión regular
La expresión regular utilizada para analizar los datos de respuesta. Debe contener al menos un conjunto de paréntesis " () " para capturar una parte de la cadena, a menos que se use el grupo $0$ . No encierre la expresión en / / - a menos que, por supuesto, también desee hacer coincidir estos caracteres.
Modelo
La plantilla utilizada para crear una cadena a partir de las coincidencias encontradas. Esta es una cadena arbitraria con elementos especiales para referirse a grupos dentro de la expresión regular. La sintaxis para hacer referencia a un grupo es: ' $1$ ' para hacer referencia al grupo 1 , ' $2$ ' para hacer referencia al grupo 2 , etc. $0$ hace referencia a lo que coincida toda la expresión.
Número de coincidencia (0 para aleatorio)
Indica qué coincidencia utilizar. La expresión regular puede coincidir varias veces.
  • Use un valor de cero para indicar que JMeter debe elegir una coincidencia al azar.
  • Un número positivo N significa seleccionar la n -ésima coincidencia.
  • Los números negativos se utilizan junto con el controlador ForEach ; consulte a continuación.
Valor por defecto
Si la expresión regular no coincide, la variable de referencia se establecerá en el valor predeterminado. Esto es particularmente útil para las pruebas de depuración. Si no se proporciona ningún valor predeterminado, es difícil saber si la expresión regular no coincide, si el elemento RE no se procesó o si se está utilizando la variable incorrecta.

Sin embargo, si tiene varios elementos de prueba que configuran la misma variable, es posible que desee dejar la variable sin cambios si la expresión no coincide. En este caso, elimine el valor predeterminado una vez que se complete la depuración.

No, pero recomendable
Usar valor predeterminado vacío
Si la casilla de verificación está marcada y el valor predeterminado está vacío, entonces JMeter establecerá la variable en una cadena vacía en lugar de no establecerla. Por lo tanto, cuando, por ejemplo, utilice ${var} (si el nombre de referencia es var) en su plan de prueba, si no se encuentra el valor extraído, entonces ${var} será igual a una cadena vacía en lugar de contener ${var} que puede ser útil si el valor extraído es opcional.
No

Si el número de coincidencia se establece en un número no negativo y se produce una coincidencia, las variables se establecen de la siguiente manera:

  • refName - el valor de la plantilla
  • refName_g n , donde n = 0 , 1 , 2 - los grupos para el partido
  • refName_g - el número de grupos en Regex (excluyendo 0 )

Si no se produce ninguna coincidencia, la variable refName se establece en el valor predeterminado (a menos que esté ausente). Además, se eliminan las siguientes variables:

  • refNombre_g0
  • refNombre_g1
  • refNombre_g

Si el número de coincidencia se establece en un número negativo, se procesan todas las coincidencias posibles en los datos del muestreador. Las variables se establecen de la siguiente manera:

  • refName_matchNr - el número de coincidencias encontradas; podría ser 0
  • refName_ n , donde n = 1 , 2 , 3 etc . - las cadenas generadas por la plantilla
  • refName_ n _g m , donde m = 0 , 1 , 2 - los grupos para la coincidencia n
  • refName : siempre establecido en el valor predeterminado
  • refName_g n - no establecido

Tenga en cuenta que la variable refName siempre se establece en el valor predeterminado en este caso, y las variables de grupo asociadas no se establecen.

Consulte también Aserción de respuesta para ver algunos ejemplos de cómo especificar modificadores y para obtener más información sobre las expresiones regulares de JMeter.

^

Extractor de selector de CSS (antes: Extractor de CSS/JQuery)

Permite al usuario extraer valores de una respuesta HTML del servidor mediante una sintaxis de selector de CSS. Como posprocesador, este elemento se ejecutará después de cada solicitud de muestra en su ámbito, aplicando la expresión CSS/JQuery, extrayendo los nodos solicitados, extrayendo el nodo como texto o valor de atributo y almacenando el resultado en el nombre de variable dado.

Captura de pantalla para Panel de control de CSS Selector Extractor
Captura de pantalla del panel de control de CSS Selector Extractor

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : solo se aplica a la muestra principal
  • Solo submuestras: solo se aplica a las submuestras
  • Muestra principal y submuestras : se aplica a ambas.
  • Nombre de la variable JMeter a usar : la extracción se debe aplicar al contenido de la variable nombrada
La coincidencia se aplica a todas las muestras calificadas a su vez. Por ejemplo, si hay una muestra principal y 3 submuestras, cada una de las cuales contiene una única coincidencia para la expresión regular (es decir, 4 coincidencias en total). Para el número de coincidencia = 3 , solo submuestras, el extractor coincidirá con la tercera submuestra . Para el número de coincidencia = 3 , muestra principal y submuestras, el extractor coincidirá con la segunda submuestra (la primera coincidencia es la muestra principal). Para el número de coincidencia = 0 o negativo, se procesarán todas las muestras calificadas. Para el número de coincidencia > 0 , la coincidencia se detendrá tan pronto como se encuentren suficientes coincidencias.
Implementación del selector de CSS
Se admiten 2 implementaciones para la sintaxis basada en CSS/JQuery: Si el selector está vacío, se usará la implementación predeterminada (JSoup).
Falso
Nombre de la variable creada
El nombre de la variable JMeter en la que almacenar el resultado.
Expresión CSS/JQuery
El selector CSS/JQuery utilizado para seleccionar nodos de los datos de respuesta. Se admiten selectores, combinaciones de selectores y pseudoselectores, ejemplos:
  • E[foo] - un elemento E con un atributo " foo "
  • ancestro secundario : elementos secundarios que descienden del ancestro, por ejemplo, .body p encuentra p elementos en cualquier lugar debajo de un bloque con clase " cuerpo "
  • :lt(n) - encuentra elementos cuyo índice de hermanos (es decir, su posición en el árbol DOM en relación con su padre) es menor que n ; por ejemplo , td:lt(3)
  • :contains(text) - encuentra elementos que contienen el texto dado . La búsqueda no distingue entre mayúsculas y minúsculas; p : contiene (jsopa)
Para obtener más detalles sobre la sintaxis, consulte:
Atributo
Nombre del atributo (según la sintaxis HTML) para extraer de los nodos que coincidieron con el selector. Si está vacío, se devolverá el texto combinado de este elemento y todos sus elementos secundarios.
Esta es la función Element#attr(name) equivalente para JSoup si se establece un atributo.
Extractor de CSS con conjunto de valores de atributo
Extractor de CSS con conjunto de valores de atributo

Si está vacío, es el equivalente de la función Element#text() para JSoup si no se establece un valor para el atributo.
Extractor de CSS sin conjunto de atributos
Extractor de CSS sin conjunto de atributos
falso
Número de coincidencia (0 para aleatorio)
Indica qué coincidencia utilizar. El selector de CSS/JQuery puede coincidir varias veces.
  • Use un valor de cero para indicar que JMeter debe elegir una coincidencia al azar.
  • Un número positivo N significa seleccionar la n -ésima coincidencia.
  • Los números negativos se utilizan junto con el controlador ForEach ; consulte a continuación.
Valor por defecto
Si la expresión no coincide, la variable de referencia se establecerá en el valor predeterminado. Esto es particularmente útil para las pruebas de depuración. Si no se proporciona ningún valor predeterminado, es difícil saber si la expresión no coincide, si el elemento CSS/JQuery no se procesó o si se está utilizando la variable incorrecta.

Sin embargo, si tiene varios elementos de prueba que configuran la misma variable, es posible que desee dejar la variable sin cambios si la expresión no coincide. En este caso, elimine el valor predeterminado una vez que se complete la depuración.

No, pero recomendable
Usar valor predeterminado vacío
Si la casilla de verificación está marcada y el valor predeterminado está vacío, entonces JMeter establecerá la variable en una cadena vacía en lugar de no establecerla. Por lo tanto, cuando, por ejemplo, utilice ${var} (si el nombre de referencia es var) en su plan de prueba, si no se encuentra el valor extraído, entonces ${var} será igual a una cadena vacía en lugar de contener ${var} que puede ser útil si el valor extraído es opcional.
No

Si el número de coincidencia se establece en un número no negativo y se produce una coincidencia, las variables se establecen de la siguiente manera:

  • refName - el valor de la plantilla

Si no se produce ninguna coincidencia, la variable refName se establece en el valor predeterminado (a menos que esté ausente).

Si el número de coincidencia se establece en un número negativo, se procesan todas las coincidencias posibles en los datos del muestreador. Las variables se establecen de la siguiente manera:

  • refName_matchNr - el número de coincidencias encontradas; podría ser 0
  • refName_n , donde n = 1 , 2 , 3 , etc. - las cadenas generadas por la plantilla
  • refName : siempre establecido en el valor predeterminado

Tenga en cuenta que la variable refName siempre se establece en el valor predeterminado en este caso.

^

Extractor XPath2

Este elemento de prueba permite al usuario extraer valor(es) de una respuesta estructurada (XML o (X)HTML) utilizando el lenguaje de consulta XPath2.
Captura de pantalla para Panel de control de XPath2 Extractor
Captura de pantalla del panel de control de XPath2 Extractor

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : solo se aplica a la muestra principal
  • Solo submuestras: solo se aplica a las submuestras
  • Muestra principal y submuestras : se aplica a ambas.
  • Nombre de la variable JMeter a usar : la extracción se debe aplicar al contenido de la variable nombrada
La coincidencia de XPath se aplica a todas las muestras calificadas a su vez, y se devolverán todos los resultados coincidentes.
¿Devolver el fragmento completo de XPath en lugar del contenido de texto?
Si se selecciona, se devolverá el fragmento en lugar del contenido del texto.
Por ejemplo , //título devolvería " <título>Apache JMeter</título> " en lugar de " Apache JMeter ".
En este caso, //título/texto() devolvería " Apache JMeter ".
Nombre de la variable creada
El nombre de la variable JMeter en la que almacenar el resultado.
Consulta XPath
Consulta de elementos en lenguaje XPath 2.0. Puede devolver más de una coincidencia.
Número de coincidencia (0 para aleatorio)
Si la consulta de la ruta XPath conduce a muchos resultados, puede elegir cuál(es) extraer como variables:
  • 0 : significa aleatorio (valor predeterminado)
  • -1 significa extraer todos los resultados, se nombrarán como <nombre de variable> _N (donde N va de 1 a Número de resultados)
  • X : significa extraer el resultado X. Si este X es mayor que el número de coincidencias, no se devuelve nada. Se utilizará el valor predeterminado
No
Valor por defecto
Valor predeterminado devuelto cuando no se encuentra ninguna coincidencia. También se devuelve si el nodo no tiene ningún valor y la opción de fragmento no está seleccionada.
Lista de alias de espacios de nombres
Lista de alias de espacios de nombres que desea usar para analizar el documento, una línea por declaración. Debe especificarlos de la siguiente manera: prefix=namespace . Esta implementación facilita el uso de espacios de nombres que con la versión anterior de XPathExtractor.
No

Para permitir su uso en un controlador ForEach , funciona exactamente igual que el extractor XPath anterior

XPath2 Extractor proporciona algunas herramientas interesantes, como una sintaxis mejorada y muchas más funciones que en su primera versión.

Aquí hay algunos ejemplos:

abs(/libro/pagina[2])
extrae el segundo valor absoluto de la página de un libro
avg(/biblioteca/libro/pagina)
extrae el número medio de páginas de todos los libros de las bibliotecas
comparar(/libro[1]/página[2],/libro[2]/página[2])
devuelve un valor entero igual a 0 si la página del primer libro es igual a la página del libro, de lo contrario, devuelve -1.

Para ver más información sobre estas funciones, consulte Funciones xPath2

^

Extractor XPath

Este elemento de prueba permite al usuario extraer valor(es) de una respuesta estructurada (XML o (X)HTML) utilizando el lenguaje de consulta XPath.
Desde JMeter 5.0, debe usar XPath2 Extractor , ya que proporciona una mejor y más fácil administración del espacio de nombres, mejores rendimientos y soporte para XPath 2.0
Captura de pantalla para Panel de control de XPath Extractor
Captura de pantalla del panel de control de XPath Extractor

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : solo se aplica a la muestra principal
  • Solo submuestras: solo se aplica a las submuestras
  • Muestra principal y submuestras : se aplica a ambas.
  • Nombre de la variable JMeter a usar : la extracción se debe aplicar al contenido de la variable nombrada
La coincidencia de XPath se aplica a todas las muestras calificadas a su vez, y se devolverán todos los resultados coincidentes.
Usar Tidy (analizador tolerante)
Si está marcado, use Tidy para analizar la respuesta HTML en XHTML.
  • " Use Tidy " debe estar marcado para la respuesta HTML. Dicha respuesta se convierte a XHTML válido (HTML compatible con XML) usando Tidy
  • " Use Tidy " debe estar desmarcado para la respuesta XHTML o XML (por ejemplo, RSS)
Para HTML, CSS Selector Extractor es la solución correcta y eficaz. No use XPath para extracciones de HTML.
Tranquilo
Establece la bandera Tidy Quiet
Si se selecciona ordenado
Reportar errores
Si se produce un error de Tidy, configure la afirmación en consecuencia
Si se selecciona ordenado
Mostrar advertencias
Establece la opción Tidy showWarnings
Si se selecciona ordenado
Usar espacios de nombres
Si está marcado, el analizador XML usará la resolución de espacios de nombres (vea la nota a continuación sobre NAMESPACES). Tenga en cuenta que actualmente solo se reconocerán los espacios de nombres declarados en el elemento raíz. Consulte a continuación la definición de usuario de nombres de espacios de trabajo adicionales.
Si ordenado no está seleccionado
Validar XML
Verifique el documento contra su esquema.
Si ordenado no está seleccionado
Ignorar espacios en blanco
Ignorar el espacio en blanco del elemento.
Si ordenado no está seleccionado
Obtener DTD externas
Si se selecciona, se recuperan las DTD externas.
Si ordenado no está seleccionado
¿Devolver el fragmento completo de XPath en lugar del contenido de texto?
Si se selecciona, se devolverá el fragmento en lugar del contenido del texto.
Por ejemplo , //título devolvería " <título>Apache JMeter</título> " en lugar de " Apache JMeter ".
En este caso, //título/texto() devolvería " Apache JMeter ".
Nombre de la variable creada
El nombre de la variable JMeter en la que almacenar el resultado.
Consulta XPath
Consulta de elementos en lenguaje XPath. Puede devolver más de una coincidencia.
Número de coincidencia (0 para aleatorio)
Si la consulta de la ruta XPath conduce a muchos resultados, puede elegir cuál(es) extraer como variables:
  • 0 : significa aleatorio
  • -1 significa extraer todos los resultados (valor predeterminado), se nombrarán como <nombre de variable> _N (donde N va de 1 a Número de resultados)
  • X : significa extraer el resultado X. Si este X es mayor que el número de coincidencias, no se devuelve nada. Se utilizará el valor predeterminado
No
Valor por defecto
Valor predeterminado devuelto cuando no se encuentra ninguna coincidencia. También se devuelve si el nodo no tiene ningún valor y la opción de fragmento no está seleccionada.

Para permitir el uso en un controlador ForEach , las siguientes variables se establecen en el retorno:

  • refName : se establece en la primera (o única) coincidencia; si no hay coincidencia, se establece en predeterminado
  • refName_matchNr - establecer el número de coincidencias (puede ser 0 )
  • refName_n - n = 1 , 2 , 3 , etc. Establecer en la 1 ª , 2 ª 3 ª coincidencia etc.
Nota: La siguiente variable refName_n se establece en nulo ; por ejemplo, si hay 2 coincidencias, entonces refName_3 se establece en nulo , y si no hay coincidencias, entonces refName_1 se establece en nulo .

XPath es un lenguaje de consulta destinado principalmente a las transformaciones XSLT. Sin embargo, también es útil como lenguaje de consulta genérico para datos estructurados. Consulte la referencia de XPath o la especificación de XPath para obtener más información. Aquí hay algunos ejemplos:

/html/cabeza/título
extrae el elemento del título de la respuesta HTML
/libro/pagina[2]
extrae la segunda página de un libro
/página de libro
extrae todas las páginas de un libro
//formulario[@name='countryForm']//select[@name='country']/option[text()='Czech Republic'])/@value
extrae el atributo de valor del elemento de opción que coincide con el texto ' República Checa ' dentro del elemento seleccionado con el atributo de nombre ' país ' dentro del formulario con el atributo de nombre ' countryForm '
Cuando " Usar ordenado ", el documento XML resultante puede diferir ligeramente de la respuesta HTML original:
  • Todos los elementos y nombres de atributos se convierten a minúsculas
  • Tidy intenta corregir elementos incorrectamente anidados. Por ejemplo: original (incorrecto) ul/font/li se convierte en correcto ul/li/font
Consulte la página de inicio de Tidy para obtener más información.
ESPACIOS DE NOMBRES
Como una ronda de trabajo para las limitaciones de espacio de nombres del analizador Xalan XPath (implementación en la que se basa JMeter), debe:
  • proporcione un archivo de propiedades (si, por ejemplo, su archivo se llama namespaces.properties ) que contiene asignaciones para los prefijos de espacio de nombres:
    prefijo1=http\://foo.apache.org
    prefijo2=http\://toto.apache.org
    …
    
  • haga referencia a este archivo en el archivo user.properties usando la propiedad:
    xpath.namespace.config=espacios de nombres.propiedades

//miespaciodenombres:etiqueta
//*[local-name()='tagname' y namespace-uri()='uri-for-namespace']
uri-para-namespace mynamespace
^

Extractor JSON JMESPath

Este elemento de prueba permite al usuario extraer valor(es) de una respuesta estructurada (XML o (X)HTML) utilizando el lenguaje de consulta JMESPath.
Captura de pantalla para Panel de control de JSON JMESPath Extractor
Captura de pantalla del panel de control de JSON JMESPath Extractor
En XPATH Extractor admitimos extraer múltiples xpaths al mismo tiempo, pero en JMES Extractor solo se puede ingresar una expresión JMES a la vez.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : solo se aplica a la muestra principal
  • Solo submuestras: solo se aplica a las submuestras
  • Muestra principal y submuestras : se aplica a ambas.
  • Nombre de la variable JMeter a usar : la extracción se debe aplicar al contenido de la variable nombrada
Nombre de la variable creada
El nombre de la variable JMeter en la que almacenar el resultado.
Expresiones JMESPath
Consulta de elementos en lenguaje de consulta JMESPath. Puede devolver el resultado coincidente.
Número de coincidencia (0 para aleatorio)
Si la consulta JMESPath conduce a muchos resultados, puede elegir cuál(es) extraer como Variables:
  • 0 : significa aleatorio
  • -1 significa extraer todos los resultados (valor predeterminado), se nombrarán como <nombre de variable> _N (donde N va de 1 a Número de resultados)
  • X : significa extraer el resultado X. Si este X es mayor que el número de coincidencias, no se devuelve nada. Se utilizará el valor predeterminado
No
Valor por defecto
Valor predeterminado devuelto cuando no se encuentra ninguna coincidencia. También se devuelve si el nodo no tiene ningún valor y la opción de fragmento no está seleccionada.

JMESPath es un lenguaje de consulta para JSON. Se describe en una gramática ABNF con una especificación completa. Esto asegura que la sintaxis del lenguaje esté definida con precisión. Consulte la referencia de JMESPath para obtener más información. Aquí también hay algunos ejemplos JMESPath Example .

^

Controlador de acción de estado de resultado

Este elemento de prueba le permite al usuario detener el hilo o la prueba completa si la muestra relevante falla.
Captura de pantalla del panel de control del controlador de acciones de estado de resultados
Captura de pantalla del panel de control del controlador de acciones de estado de resultados

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Acción a tomar después de un error del muestreador
Determina qué sucede si se produce un error del muestreador, ya sea porque la muestra en sí falló o porque falló una aserción. Las opciones posibles son:
  • Continuar : ignorar el error y continuar con la prueba
  • Iniciar el ciclo del siguiente subproceso : no ejecuta muestras que siguen a la muestra por error para la iteración actual y reinicia el ciclo en la siguiente iteración
  • Detener subproceso : finaliza el subproceso actual
  • Detener prueba : toda la prueba se detiene al final de cualquier muestra actual.
  • Detener prueba ahora : toda la prueba se detiene abruptamente. Cualquier muestra actual se interrumpe si es posible.
No
^

Postprocesador BeanShell

El preprocesador BeanShell permite aplicar código arbitrario después de tomar una muestra.

BeanShell Post-Processor ya no ignora las muestras con datos de resultados de longitud cero

Para obtener detalles completos sobre el uso de BeanShell, consulte el sitio web de BeanShell.

Se recomienda encarecidamente la migración a JSR223 PostProcessor + Groovy por motivos de rendimiento, compatibilidad con nuevas funciones de Java y mantenimiento limitado de la biblioteca BeanShell.

El elemento de prueba admite los métodos ThreadListener y TestListener . Estos deben definirse en el archivo de inicialización. Consulte el archivo BeanShellListeners.bshrc para ver definiciones de ejemplo.

Captura de pantalla del panel de control de BeanShell PostProcessor
Captura de pantalla del panel de control de BeanShell PostProcessor

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol. El nombre se almacena en la variable de script Label
No
Restablecer bsh.Interpreter antes de cada llamada
Si se selecciona esta opción, el intérprete se recreará para cada muestra. Esto puede ser necesario para algunos scripts de ejecución prolongada. Para obtener más información, consulte Prácticas recomendadas: secuencias de comandos BeanShell .
Parámetros
Parámetros para pasar al script BeanShell. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • bsh.args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script BeanShell para ejecutar. El nombre del archivo se almacena en la variable de script FileName
No
Guion
La secuencia de comandos BeanShell. El valor de retorno es ignorado.
Sí (a menos que se proporcione un archivo de script)

Las siguientes variables de BeanShell están configuradas para que las use el script:

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - (JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
  • props - (JMeterProperties - clase java.util.Properties) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - da acceso al SampleResult anterior
  • datos - (byte [])- da acceso a los datos de muestra actuales

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

Si se define la propiedad beanshell.postprocessor.init , se usa para cargar un archivo de inicialización, que se puede usar para definir métodos, etc. para usar en el script BeanShell.

^

Postprocesador JSR223

El posprocesador JSR223 permite aplicar el código de script JSR223 después de tomar una muestra.

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Idioma
El lenguaje JSR223 a utilizar
Parámetros
Parámetros a pasar al script. Los parámetros se almacenan en las siguientes variables:
  • Parámetros : cadena que contiene los parámetros como una sola variable
  • args : matriz de cadenas que contiene parámetros, dividida en espacios en blanco
No
Archivo de comandos
Un archivo que contiene el script para ejecutar, si se usa una ruta de archivo relativa, será relativa al directorio al que hace referencia la propiedad del sistema " user.dir "
No
Caché de compilación de scripts
Cadena única en el plan de prueba que JMeter usará para almacenar en caché el resultado de la compilación del script si el idioma utilizado es compatible con la interfaz compilable (Groovy es uno de estos, java, beanshell y javascript no lo son)
Consulte la nota en la propiedad JSR223 Sampler Java System si está utilizando Groovy sin marcar esta opción
No
Guion
El script a ejecutar.
Sí (a menos que se proporcione un archivo de script)

Antes de invocar el script, se configuran algunas variables. Tenga en cuenta que estas son variables JSR223, es decir, se pueden usar directamente en el script.

  • log - ( Registrador ) - se puede usar para escribir en el archivo de registro
  • Etiqueta : la etiqueta de cadena
  • FileName : el nombre del archivo de script (si lo hay)
  • Parámetros : los parámetros (como una cadena)
  • args : los parámetros como una matriz de cadenas (divididos en espacios en blanco)
  • ctx - ( JMeterContext ) - da acceso al contexto
  • vars - ( JMeterVariables ) - otorga acceso de lectura/escritura a las variables:
    vars.get(clave);
    vars.put(clave,valor);
    vars.putObject("OBJ1",nuevo Objeto());
    vars.getObject("OBJ2");
  • props - (JMeterProperties - clase java.util.Properties) - por ejemplo, props.get("START.HMS"); props.put("PROP1","1234");
  • prev - ( SampleResult ) - da acceso al SampleResult anterior (si lo hay)
  • sampler - ( Sampler )- da acceso a la muestra actual
  • OUT - System.out - por ejemplo, OUT.println("mensaje")

Para obtener detalles de todos los métodos disponibles en cada una de las variables anteriores, consulte el Javadoc

^

Postprocesador JDBC

El posprocesador de JDBC le permite ejecutar alguna instrucción SQL justo después de que se haya ejecutado una muestra. Esto puede ser útil si su muestra de JDBC cambia algunos datos y desea restablecer el estado anterior a la ejecución de la muestra de JDBC.

En el plan de prueba vinculado, " Postprocesador de JDBC " El postprocesador de JDBC llama a un procedimiento almacenado para eliminar de la base de datos el límite de precio creado por el preprocesador.

Postprocesador JDBC
Postprocesador JDBC
^

Extractor de JSON

El posprocesador JSON le permite extraer datos de las respuestas JSON mediante la sintaxis JSON-PATH. Este posprocesador es muy similar al extractor de expresiones regulares. Debe colocarse como elemento secundario de HTTP Sampler o cualquier otra muestra que tenga respuestas. Le permitirá extraer de una manera muy fácil contenido de texto, consulte la sintaxis de JSON Path .

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Nombres de variables creadas
Nombres separados por punto y coma de las variables que contendrán los resultados de las expresiones JSON-PATH (deben coincidir con el número de expresiones JSON-PATH)
Expresiones de ruta JSON
Expresiones JSON-PATH separadas por punto y coma (deben coincidir con el número de variables)
Valores predeterminados
Valores predeterminados separados por punto y coma si las expresiones JSON-PATH no devuelven ningún resultado (debe coincidir con el número de variables)
No
Número de coincidencia (0 para aleatorio)
Si la consulta de la ruta JSON genera muchos resultados, puede elegir cuál(es) extraer como variables:
  • 0 : significa aleatorio (valor predeterminado)
  • -1 significa extraer todos los resultados, se nombrarán como <nombre de variable> _N (donde N va de 1 a Número de resultados)
  • X : significa extraer el resultado X. Si este X es mayor que el número de coincidencias, no se devuelve nada. Se utilizará el valor predeterminado
No
Calcular concatenación var
Si se encuentran muchos resultados, el complemento los concatenará usando el separador ' , ' y lo almacenará en una variable llamada <nombre de variable> _ALL
No
Postprocesador JSON
Postprocesador JSON
^

Extractor de límites

Permite al usuario extraer valores de una respuesta del servidor utilizando límites izquierdo y derecho. Como posprocesador, este elemento se ejecutará después de cada solicitud de muestra en su ámbito, probando los límites, extrayendo los valores solicitados, generando la cadena de plantilla y almacenando el resultado en el nombre de variable dado.

Captura de pantalla para Panel de control de Boundary Extractor
Captura de pantalla del panel de control de Boundary Extractor

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Aplicar para:
Esto es para usar con muestras que pueden generar submuestras, por ejemplo, HTTP Sampler con recursos integrados, Mail Reader o muestras generadas por Transaction Controller.
  • Solo muestra principal : solo se aplica a la muestra principal
  • Solo submuestras: solo se aplica a las submuestras
  • Muestra principal y submuestras : se aplica a ambas.
  • Nombre de la variable JMeter a usar : la aserción se debe aplicar al contenido de la variable nombrada
La coincidencia se aplica a todas las muestras calificadas a su vez. Por ejemplo, si hay una muestra principal y 3 submuestras, cada una de las cuales contiene una sola prueba de coincidencia (es decir, 4 coincidencias en total). Para el número de coincidencia = 3 , solo submuestras, el extractor coincidirá con la tercera submuestra . Para el número de coincidencia = 3 , muestra principal y submuestras, el extractor coincidirá con la segunda submuestra (la primera coincidencia es la muestra principal). Para el número de coincidencia = 0 o negativo, se procesarán todas las muestras calificadas. Para el número de coincidencia > 0 , la coincidencia se detendrá tan pronto como se encuentren suficientes coincidencias.
Campo a comprobar
Se pueden revisar los siguientes campos:
  • Cuerpo : el cuerpo de la respuesta, por ejemplo, el contenido de una página web (excluyendo los encabezados)
  • Cuerpo (sin escape) : el cuerpo de la respuesta, con todos los códigos de escape Html reemplazados. Tenga en cuenta que los escapes HTML se procesan sin tener en cuenta el contexto, por lo que se pueden realizar algunas sustituciones incorrectas.
    Tenga en cuenta que esta opción tiene un gran impacto en el rendimiento, así que utilícela solo cuando sea absolutamente necesario y sea consciente de sus impactos.
  • Cuerpo como documento : el texto extraído de varios tipos de documentos a través de Apache Tika (consulte la sección Ver el documento del árbol de resultados ).
    Tenga en cuenta que la opción Cuerpo como documento puede afectar el rendimiento, así que asegúrese de que esté bien para su prueba.
  • Encabezados de solicitud : es posible que no estén presentes para muestras que no sean HTTP
  • Encabezados de respuesta : es posible que no estén presentes para muestras que no sean HTTP
  • URL
  • Código de respuesta - por ejemplo, 200
  • Mensaje de respuesta - por ejemplo, OK
Los encabezados pueden ser útiles para muestras de HTTP; es posible que no esté presente para otros tipos de muestras.
Nombre de la variable creada
El nombre de la variable JMeter en la que almacenar el resultado. También tenga en cuenta que cada grupo se almacena como [refname]_g# , donde [refname] es la cadena que ingresó como nombre de referencia, y # es el número de grupo, donde el grupo 0 es la coincidencia completa, el grupo 1 es la coincidencia de la primer paréntesis, etc.
Límite izquierdo
Límite izquierdo del valor a encontrar
No
Límite derecho
Límite derecho del valor a encontrar
No
Número de coincidencia (0 para aleatorio)
Indica qué coincidencia utilizar. Los límites pueden coincidir varias veces.
  • Use un valor de cero para indicar que JMeter debe elegir una coincidencia al azar.
  • Un número positivo N significa seleccionar la n -ésima coincidencia.
  • Los números negativos se utilizan junto con el controlador ForEach ; consulte a continuación.
Valor por defecto
Si los límites no coinciden, la variable de referencia se establecerá en el valor predeterminado. Esto es particularmente útil para las pruebas de depuración. Si no se proporciona ningún valor predeterminado, es difícil saber si los límites no coinciden o si se está utilizando la variable incorrecta.

Sin embargo, si tiene varios elementos de prueba que configuran la misma variable, es posible que desee dejar la variable sin cambios si la expresión no coincide. En este caso, elimine el valor predeterminado una vez que se complete la depuración.

No, pero recomendable

Si el número de coincidencia se establece en un número no negativo y se produce una coincidencia, las variables se establecen de la siguiente manera:

  • refName - el valor de la extracción

Si no se produce ninguna coincidencia, la variable refName se establece en el valor predeterminado (a menos que esté ausente).

Si el número de coincidencia se establece en un número negativo, se procesan todas las coincidencias posibles en los datos del muestreador. Las variables se establecen de la siguiente manera:

  • refName_matchNr - el número de coincidencias encontradas; podría ser 0
  • refName_ n , donde n = 1 , 2 , 3 etc . - las cadenas generadas por la plantilla
  • refName_ n _g m , donde m = 0 , 1 , 2 - los grupos para la coincidencia n
  • refName : siempre establecido en el valor predeterminado

Tenga en cuenta que la variable refName siempre se establece en el valor predeterminado en este caso, y las variables de grupo asociadas no se establecen.

Si tanto el límite izquierdo como el derecho son nulos, se devuelven todos los datos seleccionados en el alcance
^

18.9 Funciones misceláneas


Plan de prueba

El plan de prueba es donde se especifican las configuraciones generales para una prueba.

Las variables estáticas se pueden definir para valores que se repiten a lo largo de una prueba, como nombres de servidores. Por ejemplo, la variable SERVIDOR podría definirse como www.example.com , y el resto del plan de prueba podría referirse a ella como ${SERVER} . Esto simplifica cambiar el nombre más adelante.

Si se reutiliza el mismo nombre de variable en uno o más elementos de configuración de variables definidas por el usuario , el valor se establece en la última definición del plan de prueba (leyendo de arriba a abajo). Dichas variables deben usarse para elementos que pueden cambiar entre ejecuciones de prueba, pero que permanecen iguales durante una ejecución de prueba.

Tenga en cuenta que el plan de prueba no puede hacer referencia a las variables que define.
Si necesita construir otras variables a partir de las variables del plan de prueba, utilice un elemento de prueba Variables definidas por el usuario .

Al seleccionar Prueba funcional, se indica a JMeter que guarde la información adicional de la muestra (datos de respuesta y datos de muestra) en todos los archivos de resultados. Esto aumenta los recursos necesarios para ejecutar una prueba y puede afectar negativamente el rendimiento de JMeter. Si se requieren más datos solo para una muestra en particular, agréguele un Listener y configure los campos según sea necesario.

La opción no afecta a los archivos de resultados CSV, que actualmente no pueden almacenar dicha información.

Además, aquí existe una opción para indicar a JMeter que ejecute Thread Group en serie en lugar de en paralelo.

Ejecutar grupos de subprocesos de desmontaje después del cierre de los subprocesos principales: si se selecciona, los grupos de desmontaje (si los hay) se ejecutarán después del cierre correcto de los subprocesos principales. Los subprocesos de desmontaje no se ejecutarán si la prueba se detiene a la fuerza.

El plan de prueba ahora proporciona una manera fácil de agregar la configuración de classpath a un plan de prueba específico. La característica es aditiva, lo que significa que puede agregar archivos o directorios jar, pero eliminar una entrada requiere reiniciar JMeter.

Tenga en cuenta que esto no se puede usar para agregar complementos de GUI de JMeter, porque se procesan antes.
Sin embargo, puede ser útil para archivos jar de utilidades como los controladores JDBC. Los archivos jar solo se agregan a la ruta de búsqueda para el cargador JMeter, no para el cargador de clases del sistema.

Las propiedades de JMeter también proporcionan una entrada para cargar classpaths adicionales. En jmeter.properties , edite " user.classpath " o " plugin_dependency_paths " para incluir bibliotecas adicionales. Consulte Classpath de JMeter y Configuración de JMeter para obtener más información.

Captura de pantalla del panel de control del plan de prueba
Captura de pantalla del panel de control del plan de prueba
^

Grupo de hilos ¶

Un grupo de subprocesos define un grupo de usuarios que ejecutarán un caso de prueba particular contra su servidor. En la GUI del grupo de subprocesos, puede controlar la cantidad de usuarios simulados (cantidad de subprocesos), el tiempo de aceleración (cuánto tiempo lleva iniciar todos los subprocesos), la cantidad de veces para realizar la prueba y, opcionalmente, un inicio y detener el tiempo para la prueba.

Véase también tearDown Thread Group y setUp Thread Group .

Cuando se utiliza el planificador, JMeter ejecuta el grupo de subprocesos hasta que se alcanza el número de bucles o se alcanza la duración/hora de finalización, lo que ocurra primero. Tenga en cuenta que la condición solo se verifica entre muestras; cuando se alcanza la condición final, ese hilo se detendrá. JMeter no interrumpe los muestreadores que están esperando una respuesta, por lo que la hora de finalización puede retrasarse arbitrariamente.

Captura de pantalla para Panel de control de Thread Group
Captura de pantalla del panel de control de Thread Group

Desde JMeter 3.0, puede ejecutar una selección de Thread Group seleccionándolos y haciendo clic derecho. Aparecerá un menú emergente:

Menú emergente para iniciar una selección de grupos de subprocesos
Menú emergente para iniciar una selección de grupos de subprocesos

Observe que tiene tres opciones para ejecutar la selección de grupos de subprocesos:
comienzo
Iniciar solo los grupos de subprocesos seleccionados
Empezar sin pausas
Inicie solo los grupos de subprocesos seleccionados pero sin ejecutar los temporizadores
Validar
Inicie los grupos de hilos seleccionados solo usando el modo de validación. Por defecto, esto ejecuta el grupo de subprocesos en modo de validación (ver más abajo)
Modo de validación:
este modo permite la validación rápida de un grupo de subprocesos al ejecutarlo con un subproceso, una iteración, sin temporizadores y sin retardo de inicio establecido en 0 . El comportamiento se puede modificar con algunas propiedades configurando en user.properties :
testplan_validation.nb_threads_per_thread_group
Número de subprocesos a usar para validar un grupo de subprocesos, por defecto 1
testplan_validation.ignore_timers
Ignorar los temporizadores al validar el grupo de subprocesos del plan, por defecto 1
testplan_validation.number_iterations
Número de iteraciones a utilizar para validar un grupo de subprocesos
testplan_validation.tpc_force_100_pct
Si forzar a Throughput Controller en modo de porcentaje para que se ejecute como si el porcentaje fuera 100 %. Predeterminado a falso

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Acción a tomar después de un error del muestreador
Determina lo que sucede si se produce un error del muestreador, ya sea porque la muestra en sí falló o porque falló una aserción. Las opciones posibles son:
  • Continuar : ignorar el error y continuar con la prueba
  • Iniciar el siguiente ciclo de subprocesos : ignore el error, inicie el siguiente ciclo y continúe con la prueba
  • Detener subproceso : finaliza el subproceso actual
  • Detener prueba : toda la prueba se detiene al final de cualquier muestra actual.
  • Detener prueba ahora : toda la prueba se detiene abruptamente. Cualquier muestra actual se interrumpe si es posible.
No
Número de hilos
Número de usuarios a simular.
Período de despliegue
Cuánto tiempo debe tomar JMeter para iniciar todos los subprocesos. Si hay 10 subprocesos y un tiempo de aceleración de 100 segundos, entonces cada subproceso comenzará 10 segundos después de que comenzó el subproceso anterior, por un tiempo total de 100 segundos para que la prueba alcance toda su velocidad.
El primer subproceso siempre se iniciará directamente, por lo que si configuró un subproceso, el tiempo de aceleración es efectivamente cero . Por la misma razón, el décimo subproceso en el ejemplo anterior en realidad se iniciará después de 90 segundos y no de 100 segundos.
Recuento de bucles
Número de veces para realizar el caso de prueba. Alternativamente, se puede seleccionar " infinito " haciendo que la prueba se ejecute hasta que se detenga manualmente o se alcance el final de la vida útil del subproceso.
Sí, a menos que se seleccione Infinito
Retrasar la creación de subprocesos hasta que sea necesario
Si se selecciona, los subprocesos se crean solo cuando ha transcurrido la proporción adecuada del tiempo de aceleración. Esto es más apropiado para pruebas con un tiempo de aceleración que es significativamente más largo que el tiempo para ejecutar un solo subproceso. Es decir, donde terminan los hilos anteriores antes de que comiencen los posteriores.
Si no se selecciona, todos los subprocesos se crean cuando comienza la prueba (luego hacen una pausa durante la proporción adecuada del tiempo de aceleración). Este es el valor predeterminado original y es adecuado para las pruebas en las que los subprocesos están activos durante la mayor parte de la prueba.
Especificar la vida útil del subproceso
Si se selecciona, limita el tiempo de operación de subprocesos a los límites dados
Duración (segundos)
Si la casilla de verificación del programador está seleccionada, se puede elegir una hora de finalización relativa. JMeter usará esto para calcular la hora de finalización.
No
Retardo de inicio (segundos)
Si se selecciona la casilla de verificación del programador, se puede elegir un retraso de inicio relativo. JMeter usará esto para calcular la hora de inicio.
No
^

banco de trabajo

^

Administrador SSL

SSL Manager es una forma de seleccionar un certificado de cliente para que pueda probar aplicaciones que usan Infraestructura de clave pública (PKI). Solo es necesario si no ha configurado las propiedades del sistema adecuadas.

Si desea probar la autenticación del certificado del cliente, consulte Configuración del almacén de claves
Elegir un certificado de cliente

Puede utilizar un almacén de claves con formato Java Key Store (JKS) o un archivo de estándar de certificado de clave pública n.º 12 (PKCS12) para sus certificados de cliente. Hay una función de las bibliotecas JSSE que requiere que tenga al menos una contraseña de seis caracteres en su clave (al menos para la utilidad keytool que viene con su JDK).

Para seleccionar el certificado de cliente, seleccione Opciones  →  Administrador SSL en la barra de menú. Se le presentará un buscador de archivos que busca archivos PKCS12 de forma predeterminada. Su archivo PKCS12 debe tener la extensión ' .p12 ' para que SSL Manager lo reconozca como un archivo PKCS12. Cualquier otro archivo se tratará como un almacén de claves JKS promedio. Si JSSE está instalado correctamente, se le solicitará la contraseña. El cuadro de texto no oculta los caracteres que escribes en este punto, así que asegúrate de que nadie esté mirando por encima de tu hombro. La implementación actual asume que la contraseña para el almacén de claves es también la contraseña para la clave privada del cliente con el que desea autenticarse.

O puede establecer las propiedades del sistema apropiadas; consulte el archivo system.properties .

La próxima vez que ejecute su prueba, SSL Manager examinará su almacén de claves para ver si tiene al menos una clave disponible. Si solo hay una clave, SSL Manager la seleccionará por usted. Si hay más de una clave, actualmente selecciona la primera clave. Actualmente no hay forma de seleccionar otras entradas en el almacén de claves, por lo que la clave deseada debe ser la primera.

Cosas a tener en cuenta

Debe tener su certificado de autoridad de certificación (CA) instalado correctamente si no está firmado por uno de los cinco certificados de CA que se envían con su JDK. Un método para instalarlo es importar su certificado CA a un archivo JKS y nombrar el archivo JKS " jssecacerts ". Coloque el archivo en la carpeta lib/security de su JRE . Este archivo se leerá antes que el archivo " cacerts " en el mismo directorio. Tenga en cuenta que mientras exista el archivo " jssecacerts ", no se utilizarán los certificados instalados en " cacerts ". Esto puede causarle problemas. Si no le importa importar su certificado de CA en el " cacerts", entonces puede autenticarse con todos los certificados de CA instalados.

^

Grabador de secuencias de comandos de prueba HTTP(S) (antes: servidor proxy HTTP)

El grabador de secuencias de comandos de prueba HTTP(S) permite que JMeter intercepte y registre sus acciones mientras navega por su aplicación web con su navegador normal. JMeter creará objetos de muestra de prueba y los almacenará directamente en su plan de prueba a medida que avanza (para que pueda ver las muestras de forma interactiva mientras las crea).
Asegúrese de leer esta página wiki para configurar correctamente JMeter.

Para usar la grabadora, agregue el elemento Grabadora de secuencias de comandos de prueba HTTP(S). Haga clic con el botón derecho en el elemento Plan de prueba para obtener el menú Agregar: ( Agregar  →  Elementos que no son de prueba  →  Grabador de secuencias de comandos de prueba HTTP(S) ).

La grabadora se implementa como un servidor proxy HTTP(S). Debe configurar su navegador para usar el proxy para todas las solicitudes HTTP y HTTPS.

No use JMeter como proxy para ningún otro tipo de solicitud (FTP, etc.), ya que JMeter no puede manejarlas.

Lo ideal es utilizar el modo de navegación privada al grabar la sesión. Esto debería garantizar que el navegador se inicie sin cookies almacenadas y evitar que se guarden ciertos cambios. Por ejemplo, Firefox no permite que las anulaciones de certificados se guarden de forma permanente.

Grabación y certificados HTTPS

Las conexiones HTTPS usan certificados para autenticar la conexión entre el navegador y el servidor web. Al conectarse a través de HTTPS, el servidor presenta el certificado al navegador. Para autenticar el certificado, el navegador verifica que el certificado del servidor esté firmado por una Autoridad de certificación (CA) que esté vinculada a una de sus CA raíz integradas.

Los navegadores también verifican que el certificado sea para el host o dominio correcto, y que sea válido y no esté vencido.
Si alguna de las comprobaciones del navegador falla, se le indicará al usuario que puede decidir si permite que continúe la conexión.

JMeter necesita usar su propio certificado para permitirle interceptar la conexión HTTPS desde el navegador. Efectivamente, JMeter tiene que pretender ser el servidor de destino.

JMeter generará sus propios certificados. Estos se generan con un período de validez definido por la propiedad proxy.cert.validity , por defecto 7 días y contraseñas aleatorias. Si JMeter detecta que se está ejecutando bajo Java 8 o posterior, generará certificados para cada servidor de destino según sea necesario (modo dinámico) a menos que se defina la siguiente propiedad: proxy.cert.dynamic_keys=false. Al usar el modo dinámico, el certificado será para el nombre de host correcto y estará firmado por un certificado de CA generado por JMeter. De forma predeterminada, el navegador no confiará en este certificado de CA; sin embargo, se puede instalar como un certificado de confianza. Una vez hecho esto, los certificados de servidor generados serán aceptados por el navegador. Esto tiene la ventaja de que incluso los recursos HTTPS incrustados pueden interceptarse y no es necesario anular las comprobaciones del navegador para cada nuevo servidor.

Los navegadores no solicitan recursos integrados. Entonces, con versiones anteriores, los recursos incrustados solo se descargarían para servidores que ya eran "conocidos" por el navegador.

A menos que se proporcione un almacén de claves (y defina la propiedad proxy.cert.alias ), JMeter necesita usar la aplicación keytool para crear las entradas del almacén de claves. JMeter incluye código para verificar que keytool esté disponible buscando en varios lugares estándar. Si JMeter no puede encontrar la aplicación keytool, informará un error. Si es necesario, la propiedad del sistema keytool.directory se puede usar para decirle a JMeter dónde encontrar keytool. Esto debe definirse en el archivo system.properties .

Los certificados JMeter se generan (si es necesario) cuando se presiona el botón Inicio .

La generación de certificados puede demorar un tiempo, tiempo durante el cual la GUI no responderá.
El cursor cambia a un reloj de arena mientras esto sucede. Cuando se complete la generación del certificado, la GUI mostrará un cuadro de diálogo emergente que contiene los detalles del certificado para la CA raíz. Este certificado debe ser instalado por el navegador para que acepte los certificados de host generados por JMeter; ver más abajo para más detalles.

Si es necesario, puede obligar a JMeter a regenerar el almacén de claves (y los certificados exportados - ApacheJMeterTemporaryRootCA[.usr|.crt] ) eliminando el archivo de almacén de claves proxyserver.jks del directorio de JMeter.

Este certificado no es uno de los certificados en los que normalmente confían los navegadores y no será para el host correcto.
Como consecuencia:

  • El navegador debería mostrar un diálogo preguntándole si desea aceptar el certificado o no. Por ejemplo:
    1) El nombre del servidor " www.example.com " no coincide con el nombre del certificado
       " _JMeter Root CA para grabación (INSTALAR SOLO SI ES TUYO) ". Alguien puede estar tratando de escucharte a escondidas.
    2) El certificado para " _ JMeter Root CA para grabación (INSTALAR SOLO SI ES TUYO) " está firmado por una autoridad de certificación desconocida
       " _JMeter Root CA para grabación (INSTALAR SOLO SI ES TUYO) ". No es posible verificar que se trata de un certificado válido.
    
    Deberá aceptar el certificado para permitir que JMeter Proxy intercepte el tráfico SSL para registrarlo. Sin embargo, no acepte este certificado de forma permanente; sólo debe aceptarse temporalmente. Los navegadores solo solicitan este diálogo para el certificado de la URL principal, no para los recursos cargados en la página, como imágenes, CSS o archivos JavaScript alojados en un CDN externo seguro. Si tiene tales recursos (por ejemplo, Gmail tiene), primero tendrá que navegar manualmente a estos otros dominios para aceptar el certificado de JMeter para ellos. Compruebe en jmeter.log los dominios seguros para los que necesita registrar un certificado.
  • Si el navegador ya ha registrado un certificado validado para este dominio, el navegador detectará JMeter como una brecha de seguridad y se negará a cargar la página. Si es así, debe eliminar el certificado de confianza del almacén de claves de su navegador.

Las versiones de JMeter a partir de la 2.10 aún admiten este método y seguirán haciéndolo si define la siguiente propiedad: proxy.cert.alias Las siguientes propiedades se pueden usar para cambiar el certificado que se usa:

  • proxy.cert.directory : el directorio en el que encontrar el certificado (predeterminado = JMeter bin/ )
  • proxy.cert.file : nombre del archivo de almacenamiento de claves (predeterminado " proxyserver.jks ")
  • proxy.cert.keystorepass : contraseña del almacén de claves (la " contraseña " predeterminada ) [se ignora si se usa el certificado JMeter]
  • proxy.cert.keypassword : contraseña de la clave del certificado (la " contraseña " predeterminada) [se ignora si se usa el certificado JMeter]
  • proxy.cert.type : el tipo de certificado (predeterminado " JKS ") [Ignorado si se usa el certificado JMeter]
  • proxy.cert.factory - la fábrica (por defecto " SunX509 ") [Ignorado si se usa el certificado JMeter]
  • proxy.cert.alias : el alias de la clave que se utilizará. Si esto está definido, JMeter no intenta generar su(s) propio(s) certificado(s).
  • proxy.ssl.protocol : el protocolo que se utilizará (predeterminado " SSLv3 ")
Si su navegador actualmente usa un proxy (por ejemplo, la intranet de una empresa puede enrutar todas las solicitudes externas a través de un proxy), entonces necesita decirle a JMeter que use ese proxy antes de iniciar JMeter, usando las opciones de línea de comando -H y -P . Esta configuración también será necesaria cuando se ejecute el plan de prueba generado.

Instalación del certificado JMeter CA para grabación HTTPS

Como se mencionó anteriormente, cuando se ejecuta bajo Java 8, JMeter puede generar certificados para cada servidor. Para que esto funcione sin problemas, el navegador debe confiar en el certificado de firma de CA raíz utilizado por JMeter. La primera vez que se inicia la grabadora, generará los certificados si es necesario. El certificado de CA raíz se exporta a un archivo con el nombre ApacheJMeterTemporaryRootCA en el directorio de inicio actual. Cuando se hayan configurado los certificados, JMeter mostrará un cuadro de diálogo con los detalles del certificado actual. En este punto, el certificado se puede importar al navegador, según las instrucciones a continuación.

Tenga en cuenta que una vez que el certificado de CA raíz se haya instalado como una CA de confianza, el navegador confiará en cualquier certificado firmado por él. Hasta el momento en que el certificado caduque o se elimine del navegador, no advertirá al usuario que se está confiando en el certificado. Por lo tanto, cualquier persona que pueda obtener el almacén de claves y la contraseña puede usar el certificado para generar certificados que serán aceptados por cualquier navegador que confíe en el certificado CA raíz de JMeter. Por esta razón, la contraseña para el almacén de claves y las claves privadas se generan aleatoriamente y se utiliza un período de validez breve. Las contraseñas se almacenan en el área de preferencias locales. Asegúrese de que solo los usuarios de confianza tengan acceso al host con el almacén de claves.

La ventana emergente que aparece una vez que inicia la grabadora es una ventana emergente informativa:
Ventana emergente de certificado de instalación de grabadora
Ventana emergente de certificado de instalación de grabadora
Simplemente haga clic en Aceptar y continúe.
Instalación del certificado en Firefox

Elija las siguientes opciones:

  • Opciones de herramientas
  • Avanzado / Certificados
  • Ver certificados
  • Autoridades
  • Importar …
  • Vaya al directorio de inicio de JMeter y haga clic en el archivo ApacheJMeterTemporaryRootCA.crt , presione Abrir
  • Haga clic en Ver y verifique que los detalles del certificado coincidan con los que muestra JMeter Test Script Recorder
  • Si está bien, seleccione " Confiar en esta CA para identificar sitios web " y presione Aceptar
  • Cierre los cuadros de diálogo presionando Aceptar según sea necesario
Instalación del certificado en Chrome o Internet Explorer

Tanto Chrome como Internet Explorer utilizan el mismo almacén de confianza para los certificados.

  • Vaya al directorio de inicio de JMeter, haga clic en el archivo ApacheJMeterTemporaryRootCA.crt y ábralo.
  • Haga clic en la pestaña " Detalles " y verifique que los detalles del certificado coincidan con los que muestra JMeter Test Script Recorder
  • Si está bien, vuelva a la pestaña " General ", haga clic en " Instalar certificado... " y siga las indicaciones del asistente
Instalación del certificado en Opera
  • Herramientas / Preferencias / Avanzado / Seguridad
  • Administrar certificados…
  • Seleccione la pestaña " Intermedio ", haga clic en " Importar... "
  • Vaya al directorio de inicio de JMeter, haga clic en el archivo ApacheJMeterTemporaryRootCA.usr y ábralo.
Captura de pantalla del panel de control de HTTP(S) Test Script Recorder
Captura de pantalla del panel de control de HTTP(S) Test Script Recorder

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Puerto
El puerto que escucha la grabadora de scripts de prueba HTTP(S). 8888 es el valor predeterminado, pero puede cambiarlo.
Dominios HTTPS
Lista de nombres de dominio (o host) para HTTPS. Úselo para generar certificados previamente para todos los servidores que desee registrar.
Por ejemplo, *.ejemplo.com,*.subdominio.ejemplo.com
Tenga en cuenta que los dominios comodín solo se aplican a un nivel, es decir, abc.subdominio.ejemplo.com coincide con *.subdominio.ejemplo.com pero no con *.ejemplo.com
No
Controlador de destino
El controlador donde el proxy almacenará las muestras generadas. De forma predeterminada, buscará un controlador de grabación y lo almacenará allí donde esté.
Agrupamiento
Si agrupar samplers para solicitudes de un solo "clic" (solicitudes recibidas sin separación de tiempo significativa), y cómo representar esa agrupación en la grabación:
  • No agrupe los samplers : guarde todos los samplers grabados secuencialmente, sin ningún tipo de agrupación.
  • Agregue separadores entre grupos : agregue un controlador llamado " -------------- " para crear una separación visual entre los grupos. De lo contrario, las muestras se almacenan secuencialmente.
  • Coloque cada grupo en un nuevo controlador : cree un nuevo controlador simple para cada grupo y almacene todas las muestras para ese grupo en él.
  • Almacene solo la primera muestra de cada grupo ; solo se registrará la primera solicitud de cada grupo. Los indicadores " Seguir redireccionamientos " y " Recuperar todos los recursos integrados... " se activarán en esas muestras.
  • Coloque cada grupo en un nuevo controlador de transacciones : cree un nuevo controlador de transacciones para cada grupo y almacene todas las muestras para ese grupo en él.
La propiedad proxy.pause determina la brecha mínima que JMeter necesita entre solicitudes para tratarlas como "clics" separados. El valor predeterminado es 5000 (milisegundos), es decir, 5 segundos. Si está utilizando la agrupación, asegúrese de dejar el espacio requerido entre los clics.
Capturar encabezados HTTP
¿Deberían agregarse encabezados al plan? Si se especifica, se agregará un administrador de encabezado a cada muestra HTTP. El servidor proxy siempre elimina los encabezados de autorización y cookies de los administradores de encabezados generados. De forma predeterminada, también elimina los encabezados If-Modified-Since y If-None-Match . Estos se utilizan para determinar si los elementos de la memoria caché del navegador están actualizados; al grabar uno normalmente quiere descargar todo el contenido. Para cambiar qué encabezados adicionales se eliminan, defina la propiedad proxy.headers.remove de JMeter como una lista de encabezados separados por comas.
Agregar aserciones
¿Agregar una afirmación en blanco a cada muestra?
Coincidencia de expresiones regulares
¿Usar Regex Matching al reemplazar variables? Si se marca, el reemplazo usará límites de palabra, es decir, solo reemplazará los valores coincidentes de palabra de la variable, no parte de una palabra. Un límite de palabra sigue la definición de Perl5 y es equivalente a \b . Más información a continuación en el párrafo sobre " Reemplazo de variables definidas por el usuario ".
Prefijo/Nombre de transacción
Agregue un prefijo al nombre de la muestra durante la grabación (modo de prefijo). O reemplace el nombre de la muestra por el nombre elegido por el usuario (Nombre de la transacción)
No
esquema de nombres
Seleccione el esquema de nombres para los nombres de los muestreadores durante la grabación. El valor predeterminado es el nombre de la transacción
No
formato de nomenclatura
Si se selecciona Usar cadena de formato como esquema de nomenclatura, se puede dar un formato de estilo libre. Los marcadores de posición para el nombre de la transacción, la ruta y el contador pueden ser #{name} , #{path} y #{counter} . Un formato simple podría ser " #{name}-#{counter} ", que sería equivalente al esquema de nomenclatura predeterminado numerado. Para formatos más complejos, se puede usar el formato Java para MessageFormat, como en " #{counter,number,000}: #{name}-#{path} ", que imprimiría el contador lleno con hasta tres ceros. El valor predeterminado es una cadena vacía.
No
Valor inicial del contador
Se puede utilizar para restablecer el contador a un valor dado. Tenga en cuenta que la siguiente muestra primero aumentará y luego usará el valor. Si la primera muestra debe comenzar con 1 , reinicie el contador a 0 .
No
Crear nueva transacción después de la solicitud (ms)
Se necesitaba tiempo de inactividad entre dos solicitudes para considerarlas en dos grupos separados.
No
Escribe
Qué tipo de muestra generar (el valor predeterminado de HTTPClient o Java)
Redirigir automáticamente
¿Establecer redirigir automáticamente en las muestras generadas?
Seguir redireccionamientos
¿Establecer seguir redireccionamientos en las muestras generadas?
Nota: consulte la sección "Grabación y redirecciones" a continuación para obtener información importante.
Usar Keep-Alive
Establecer ¿Usar Keep-Alive en las muestras generadas?
Recuperar todos los recursos integrados
¿Establecer recuperar todos los recursos integrados en las muestras generadas?
Filtro de tipo de contenido
Filtre las solicitudes según el tipo de contenido , por ejemplo, " text/html [;charset=utf-8] ". Los campos son expresiones regulares que se verifican para ver si están contenidos en el tipo de contenido . [No tiene que coincidir con todo el campo]. Primero se comprueba el filtro de inclusión y luego el filtro de exclusión. Las muestras que se filtran no se almacenarán.
Nota: este filtrado se aplica al tipo de contenido de la respuesta
No
Patrones para incluir
Expresiones regulares que se comparan con la URL completa que se muestra. Permite filtrar las solicitudes que se registran. Todas las solicitudes pasan, pero solo se registran aquellas que cumplen con los requisitos de los campos Incluir / Excluir . Si tanto Incluir como Excluir se dejan vacíos, entonces todo se registra (lo que puede resultar en docenas de muestras registradas para cada página, ya que se registran imágenes, hojas de estilo, etc.).
Si hay al menos una entrada en el campo Incluir , solo se registran las solicitudes que coincidan con uno o más patrones Incluir .
.
No
Patrones para excluir
Expresiones regulares que se comparan con la URL que se muestra.
No se registra ninguna solicitud que coincida con uno o más patrones de exclusión .
.
No
Notificar a los niños oyentes de muestras filtradas
Notificar a los niños oyentes de muestras filtradas
Cualquier respuesta que coincida con uno o más patrones de exclusión no se envía a los oyentes secundarios (Ver árbol de resultados)
.
No
Botón de inicio
Inicie el servidor proxy. JMeter escribe el siguiente mensaje en la consola una vez que el servidor proxy se ha iniciado y está listo para recibir solicitudes: "¡ Proxy en funcionamiento! ".
N / A
Botón Detener
Detenga el servidor proxy.
N / A
Botón de reinicio
Detiene y reinicia el servidor proxy. Esto es útil cuando cambia/agrega/elimina una expresión de filtro de inclusión/exclusión.
N / A

Grabación y redirecciones

Durante la grabación, el navegador seguirá una respuesta de redireccionamiento y generará una solicitud adicional. El Proxy registrará tanto la solicitud original como la solicitud redirigida (sujeto a las exclusiones que se configuren). Las muestras generadas tienen " Seguir redireccionamientos " seleccionado de forma predeterminada, porque generalmente es mejor.

Las redirecciones pueden depender de la solicitud original, por lo que es posible que no siempre funcione la repetición de la muestra grabada originalmente.

Ahora, si JMeter está configurado para seguir la redirección durante la reproducción, emitirá la solicitud original y luego reproducirá la solicitud de redirección que se registró. Para evitar esta reproducción duplicada, JMeter intenta detectar cuándo una muestra es el resultado de una redirección anterior. Si la respuesta actual es una redirección, JMeter guardará la URL de redirección. Cuando se recibe la siguiente solicitud, se compara con la URL de redireccionamiento guardada y, si hay una coincidencia, JMeter deshabilitará la muestra generada. También agrega comentarios a la cadena de redirección. Esto supone que todas las solicitudes en una cadena de redirección se sucederán sin ninguna solicitud intermedia. Para deshabilitar la detección de redirección, establezca la propiedad proxy.redirect.disabling=false

Incluye y excluye

Los patrones de inclusión y exclusión se tratan como expresiones regulares (usando Jakarta ORO). Se compararán con el nombre de host, el puerto (real o implícito), la ruta y la consulta (si corresponde) de cada solicitud del navegador. Si la URL que está explorando es
" http://localhost/jmeter/index.html?username=xxxx ",
la expresión regular se probará con la cadena:
" localhost:80/jmeter/index.html?username=xxxx ".
Por lo tanto, si desea incluir todos los archivos .html , su expresión regular podría verse como:
" .*\.html(\?.*)? " - o " .*\.html si sabe que no hay una cadena de consulta o solo desea páginas html sin cadenas de consulta.

Si hay patrones de inclusión, la URL debe coincidir con al menos uno de los patrones; de lo contrario, no se registrará. Si hay patrones de exclusión, la URL no debe coincidir con ninguno de los patrones, de lo contrario no se registrará. Usando una combinación de inclusiones y exclusiones, debería poder registrar lo que le interesa y omitir lo que no.

NB: la cadena que coincide con la expresión regular debe ser la misma que la cadena host+ruta completa .
Por lo tanto, " \.html " no coincidirá con localhost:80/index.html

Captura de datos POST binarios

JMeter puede capturar datos POST binarios. Para configurar qué tipos de contenido se tratan como binarios, actualice la propiedad proxy.binary.types de JMeter . La configuración predeterminada es la siguiente:

# Estos tipos de contenido se gestionarán guardando la solicitud en un archivo:
proxy.binary.types=application/x-amf,application/x-java-serialized-object
# Los archivos se guardarán en este directorio:
proxy.binary.directory=user.dir
# Los archivos se crearán con este archivo filesuffix:
proxy.binary.filesuffix=.binario

Adición de temporizadores

También es posible hacer que el proxy agregue temporizadores al guión grabado. Para hacer esto, cree un temporizador directamente dentro del componente Grabador de secuencias de comandos de prueba HTTP(S). El proxy colocará una copia de este temporizador en cada muestra que registre, o en la primera muestra de cada grupo si está utilizando la agrupación. Luego, esta copia se escaneará en busca de ocurrencias de la variable ${T} en sus propiedades, y tales ocurrencias serán reemplazadas por el intervalo de tiempo de la muestra anterior registrada (en milisegundos).

Cuando esté listo para comenzar, presione " comenzar ".

Deberá editar la configuración del proxy de su navegador para señalar el servidor y el puerto apropiados, donde el servidor es la máquina en la que se ejecuta JMeter, y el número de puerto es del Panel de control de proxy que se muestra arriba.

¿Dónde se registran las muestras?

JMeter coloca las muestras grabadas en el controlador de destino que elija. Si elige la opción predeterminada " Usar controlador de grabación ", se almacenarán en el primer controlador de grabación que se encuentre en el árbol de objetos de prueba (así que asegúrese de agregar un controlador de grabación antes de comenzar a grabar).

Si el Proxy no parece registrar ninguna muestra, esto podría deberse a que el navegador no está usando realmente el proxy. Para verificar si este es el caso, intente detener el proxy. Si el navegador aún descarga páginas, entonces no estaba enviando solicitudes a través del proxy. Vuelva a comprobar las opciones del navegador. Si está intentando grabar desde un servidor que se ejecuta en el mismo host, verifique que el navegador no esté configurado en " Omitir servidor proxy para direcciones locales " (este ejemplo es de IE7, pero habrá opciones similares para otros navegadores). Si JMeter no registra las URL del navegador, como http://localhost/ o http://127.0.0.1/ , intente usar el nombre de host o la dirección IP sin bucle invertido, por ejemplo, http://myhost/ o http://192.168. 0,2/ .

Manejo de valores predeterminados de solicitud HTTP

Si HTTP(S) Test Script Recorder encuentra valores predeterminados de solicitud HTTP habilitados directamente dentro del controlador donde se almacenan las muestras, o directamente dentro de cualquiera de sus controladores principales, las muestras grabadas tendrán campos vacíos para los valores predeterminados que especificó. Puede controlar aún más este comportamiento colocando un elemento de valores predeterminados de solicitud HTTP directamente dentro de la grabadora de secuencias de comandos de prueba HTTP(S), cuyos valores que no estén en blanco anularán los de los otros valores predeterminados de solicitud HTTP. Consulte Prácticas recomendadas con HTTP(S) Test Script Recorder para obtener más información.

Reemplazo de variables definidas por el usuario

De manera similar, si HTTP(S) Test Script Recorder encuentra variables definidas por el usuario (UDV) directamente dentro del controlador donde se almacenan las muestras, o directamente dentro de cualquiera de sus controladores principales, las muestras registradas tendrán cualquier ocurrencia de los valores de esas variables. reemplazada por la variable correspondiente. Una vez más, puede colocar variables definidas por el usuario directamente dentro de la grabadora de secuencias de comandos de prueba HTTP(S) para anular los valores que se reemplazarán. Consulte Prácticas recomendadas con Test Script Recorder para obtener más información.

Tenga en cuenta que la coincidencia distingue entre mayúsculas y minúsculas.

Reemplazo por Variables: por defecto, el servidor Proxy busca todas las apariciones de valores UDV. Si define la variable WEB con el valor www , por ejemplo, la cadena www será reemplazada por ${WEB} dondequiera que se encuentre. Para evitar que esto suceda en todas partes, active la casilla de verificación " Coincidencia de expresiones regulares ". Esto le dice al servidor proxy que trate los valores como expresiones regulares (utilizando los comparadores de expresiones regulares compatibles con perl5 proporcionados por ORO).

Si se selecciona " Coincidencia de expresiones regulares ", cada variable se compilará en una expresión regular compatible con Perl encerrada entre \b( y )\b . De esa manera, cada coincidencia comenzará y terminará en un límite de palabras.

Tenga en cuenta que los caracteres de límite no forman parte del grupo coincidente, por ejemplo, n.* para hacer coincidir el nombre de You can call me 'name' .

Si no desea que su expresión regular se incluya con esos emparejadores de límites, debe encerrar su expresión regular entre paréntesis, por ejemplo ('.*?') para que coincida con 'nombre' de You can call me 'name' .

Las variables se comprobarán en orden aleatorio. Así que asegúrese de que las coincidencias potenciales no se superpongan. Los emparejadores superpuestos serían .* (que coincide con cualquier cosa) y www (que coincide solo con www ). Los emparejadores que no se superponen serían a+ (coincide con una secuencia de a ) yb+ (coincide con una secuencia de b ).

Si desea hacer coincidir solo una cadena completa, enciérrela entre (^ y $) , por ejemplo (^thus$) . Los paréntesis son necesarios, ya que los caracteres de límite normalmente agregados evitarán que ^ y $ coincidan.

Si desea hacer coincidir /images solo al comienzo de una cadena, use el valor (^/images) . Jakarta ORO también admite la búsqueda anticipada de ancho cero, por lo que se puede hacer coincidir /images/... pero conservar el / final en la salida usando (^/images(?=/)) .

Tenga en cuenta que la versión actual de Jakarta ORO no admite mirar hacia atrás, es decir, (?<=…) o (?<!…) .

Esté atento a los emparejadores superpuestos. Por ejemplo, el valor .* como expresión regular en una variable llamada expresión regular coincidirá parcialmente con una variable reemplazada anteriormente, lo que dará como resultado algo como ${{regex} , que probablemente no sea el resultado deseado.

Si hay algún problema al interpretar las variables como patrones, estos se informan en jmeter.log , así que asegúrese de verificar esto si los UDV no funcionan como se esperaba.

Cuando haya terminado de grabar sus muestras de prueba, detenga el servidor proxy (presione el botón " detener "). Recuerde restablecer la configuración de proxy de su navegador. Ahora, es posible que desee ordenar y reordenar el script de prueba, agregar temporizadores, oyentes, un administrador de cookies, etc.

¿Cómo puedo grabar también las respuestas del servidor?

Simplemente coloque un agente de escucha Ver árbol de resultados como elemento secundario de la grabadora de secuencias de comandos de prueba HTTP(S) y se mostrarán las respuestas. También puede agregar un posprocesador para guardar respuestas en un archivo que guardará las respuestas en archivos.

Asociación de solicitudes con respuestas

Si define la propiedad proxy.number.requests=true , JMeter agregará un número a cada muestra y cada respuesta. Tenga en cuenta que puede haber más respuestas que muestras si se han utilizado exclusiones o inclusiones. Las respuestas que han sido excluidas tendrán etiquetas entre [ y ], por ejemplo [23 /favicon.ico]

Administrador de cookies

Si el servidor con el que está probando usa cookies, recuerde agregar un Administrador de cookies HTTP al plan de prueba cuando haya terminado de registrarlo. Durante la grabación, el navegador maneja las cookies, pero JMeter necesita un administrador de cookies para manejar las cookies durante una ejecución de prueba. El servidor JMeter Proxy transmite todas las cookies enviadas por el navegador durante la grabación, pero no las guarda en el plan de prueba porque es probable que cambien entre ejecuciones.

Administrador de autorizaciones

La grabadora de secuencias de comandos de prueba HTTP(S) toma el encabezado " Autenticación " e intenta calcular la política de autenticación. Si se agregó Authorization Manager al controlador de destino manualmente, HTTP(S) Test Script Recorder lo encontrará y agregará la autorización (se eliminarán las que coincidan). De lo contrario, el Administrador de autorización se agregará al controlador de destino con el objeto de autorización. Es posible que deba corregir los valores calculados automáticamente después de la grabación.

Subiendo archivos

Algunos navegadores (por ejemplo, Firefox y Opera) no incluyen el nombre completo de un archivo cuando cargan archivos. Esto puede hacer que el servidor proxy JMeter falle. Una solución es asegurarse de que cualquier archivo que se cargue esté en el directorio de trabajo de JMeter, ya sea copiando los archivos allí o iniciando JMeter en el directorio que contiene los archivos.

Grabación de protocolos no textuales basados ​​en HTTP que no están disponibles de forma nativa en JMeter

Es posible que deba registrar un protocolo HTTP que JMeter no maneja de manera predeterminada (Protocolo binario personalizado, Adobe Flex, Microsoft Silverlight, …). Aunque JMeter no proporciona una implementación de proxy nativa para registrar estos protocolos, tiene la capacidad de registrar estos protocolos implementando un SamplerCreator personalizado . Este creador de muestras traducirá el formato binario a una subclase HTTPSamplerBase que se puede agregar al caso de prueba de JMeter. Para obtener más detalles, consulte "Extensión de JMeter".

^

Servidor espejo HTTP

El servidor HTTP Mirror es un servidor HTTP muy simple: simplemente refleja los datos que se le envían. Esto es útil para comprobar el contenido de las solicitudes HTTP.

Utiliza el puerto predeterminado 8081 .

Captura de pantalla del panel de control del servidor HTTP Mirror
Captura de pantalla del panel de control del servidor espejo HTTP

Parámetros

Atributo
Descripción
Requerido
Puerto
Puerto en el que escucha el servidor Mirror, el valor predeterminado es 8081 .
Número máximo de hilos
Si se establece en un valor > 0 , la cantidad de subprocesos que atienden las solicitudes se limitará al número configurado; si se establece en un valor ≤ 0 , se creará un nuevo subproceso para atender cada solicitud entrante. Predeterminado a 0
No
Tamaño máximo de cola
Tamaño de la cola utilizada para retener tareas antes de que el grupo de subprocesos las ejecute; cuando se excede el grupo de subprocesos, las solicitudes entrantes se retendrán en esta cola y se descartarán cuando esté llena. Este parámetro solo se usa si el Número máximo de subprocesos es mayor que 0 . Predeterminado a 25
No
Tenga en cuenta que puede obtener más control sobre las respuestas agregando un Administrador de encabezado HTTP con los siguientes pares de nombre/valor:

Parámetros

Atributo
Descripción
Requerido
X-sueño
Tiempo para dormir en ms antes de enviar la respuesta
No
X-SetCookie
Cookies que se establecerán en respuesta
No
Estado de respuesta X
Estado de respuesta, consulte Respuestas de estado HTTP , ejemplo 200 OK, 500 Error interno del servidor, ….
No
Longitud de respuesta X
Tamaño de la respuesta, esto recorta la respuesta al tamaño solicitado si es menor que el tamaño total
No
X-SetHeaders
Tubería lista separada de encabezados, ejemplo:
headerA: valueA|headerB: valueB establecería headerA en valueA y headerB en valueB .
No

También puede utilizar los siguientes parámetros de consulta:

Parámetros

Atributo
Descripción
Requerido
redirigir
Genera un 302 (redireccionamiento temporal) con la ubicación proporcionada, por ejemplo, ?redirect=/ruta
No
estado
Anula el retorno de estado predeterminado, por ejemplo, ?status=404 Not Found
No
v
Indicador detallado, escribe algunos detalles en la salida estándar, por ejemplo, primera línea y ubicación de redireccionamiento si se especifica
No
^

Visualización de propiedades

La visualización de propiedades muestra los valores de las propiedades del sistema o JMeter. Los valores se pueden cambiar ingresando texto nuevo en la columna Valor.

Captura de pantalla del panel de control de visualización de propiedades
Captura de pantalla del panel de control de visualización de propiedades

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
^

Muestra de depuración

Debug Sampler genera una muestra que contiene los valores de todas las variables y/o propiedades de JMeter.

Los valores se pueden ver en el panel Ver datos de respuesta del oyente del árbol de resultados .

Captura de pantalla del panel de control de Debug Sampler
Captura de pantalla del panel de control de Debug Sampler

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Propiedades de JMeter
¿Incluir propiedades de JMeter?
Variables JMeter
¿Incluir variables de JMeter?
Propiedades del sistema
¿Incluir propiedades del sistema?
^

Depurar postprocesador

El posprocesador de depuración crea una submuestra con los detalles de las propiedades del muestreador anterior, las variables de JMeter, las propiedades y/o las propiedades del sistema.

Los valores se pueden ver en el panel Ver datos de respuesta del oyente del árbol de resultados .

Captura de pantalla del panel de control del posprocesador de depuración
Captura de pantalla del panel de control de Debug PostProcessor

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
No
Propiedades de JMeter
Ya sea para mostrar las propiedades de JMeter ( falso predeterminado ).
Variables JMeter
Ya sea para mostrar las variables de JMeter ( falso predeterminado ).
Propiedades del muestreador
Ya sea para mostrar las propiedades de Sampler (por defecto true ).
Propiedades del sistema
Ya sea para mostrar las propiedades del sistema ( falso predeterminado ).
^

Fragmento de prueba

El fragmento de prueba se utiliza junto con el controlador de inclusión y el controlador de módulo .

Captura de pantalla del panel de control del fragmento de prueba
Captura de pantalla del panel de control del fragmento de prueba

Parámetros

Atributo
Descripción
Requerido
Nombre
Nombre descriptivo de este elemento que se muestra en el árbol.
Cuando utilice Test Fragment con Module Controller , asegúrese de desactivar Test Fragment para evitar la ejecución de Test Fragment. Esto se hace por defecto desde JMeter 2.13.
^

configurar grupo de subprocesos

Un tipo especial de ThreadGroup que se puede utilizar para realizar acciones previas a la prueba. El comportamiento de estos subprocesos es exactamente como un elemento de grupo de subprocesos normal. La diferencia es que este tipo de subprocesos se ejecutan antes de que la prueba continúe con la ejecución de los grupos de subprocesos regulares.

Captura de pantalla del panel de control del grupo de subprocesos de configuración
Captura de pantalla del panel de control del grupo de subprocesos de configuración
^

desmontar grupo de hilos

Un tipo especial de ThreadGroup que se puede utilizar para realizar acciones posteriores a la prueba. El comportamiento de estos subprocesos es exactamente como un elemento de grupo de subprocesos normal. La diferencia es que este tipo de subprocesos se ejecutan después de que la prueba haya terminado de ejecutar sus Grupos de subprocesos habituales.

Captura de pantalla para Panel de control de tearDown Thread Group
Captura de pantalla del panel de control de tearDown Thread Group
Tenga en cuenta que, de forma predeterminada, no se ejecutará si la Prueba se cierra correctamente; si desea que se ejecute en este caso, asegúrese de marcar la opción " Ejecutar grupos de subprocesos de desmontaje después del cierre de los subprocesos principales " en el elemento Plan de prueba. Si se detiene el plan de prueba, tearDown no se ejecutará incluso si la opción está marcada.
Figura 1: Ejecute grupos de subprocesos tearDown después de cerrar los subprocesos principales
Figura 1: Ejecute grupos de subprocesos tearDown después de cerrar los subprocesos principales
^
^
Go to top